C# 存储过程、强类型数据访问或web服务级别中的逻辑

C# 存储过程、强类型数据访问或web服务级别中的逻辑,c#,asp.net,database,web-services,architecture,C#,Asp.net,Database,Web Services,Architecture,我正在开发我的第一个企业级应用程序,但对一些关键因素感到困惑 现在我获取数据的应用程序流程是 存储过程-执行内部联接,只获取表中的数据并传递给TDS 强类型数据集-按原样将数据传递给调用它的web服务 web服务-在此处更改数据以将其返回到应用程序层 这条路对吗?或者我们应该尽可能多地将正确格式的数据放入数据库中,这样web服务就不需要将其更改为特定格式。e、 g.将日期列转换为指定格式,或者我们将用户SID存储在db中,然后在web服务中,调用active Directory获取用户的显示

我正在开发我的第一个企业级应用程序,但对一些关键因素感到困惑

现在我获取数据的应用程序流程是

  • 存储过程-执行内部联接,只获取表中的数据并传递给TDS
  • 强类型数据集-按原样将数据传递给调用它的web服务
  • web服务-在此处更改数据以将其返回到应用程序层
这条路对吗?或者我们应该尽可能多地将正确格式的数据放入数据库中,这样web服务就不需要将其更改为特定格式。e、 g.将日期列转换为指定格式,或者我们将用户SID存储在db中,然后在web服务中,调用active Directory获取用户的显示名称,等等


还请指导我在哪里可以阅读此类架构示例以了解最佳实践。

首先,我不会直接在web服务层中进行更改,而是在另一个称为业务层的层中进行更改。web服务层将只是外部世界的代理。我这样做是因为如果您希望以任何其他方式公开您的逻辑,例如RESTAPI,您只需要将这个额外的层放在业务层的顶部

所以你会有这样的想法:

  • 存储过程层
  • 强类型数据集层
  • 业务层—所有整理数据的逻辑都将在其中
  • Web服务层。或者另一个,例如RESTAPI层

  • 在另一个主题中,我不使用数据集,而是使用NHibernate、Entity Framework或IBatis.NET来处理持久层。

    这个答案有用吗?