.NET桌面应用程序(服务)3层应用程序

时间:2015-11-03 09:15:04

标签: c# .net desktop-application 3-tier

我刚刚开始设计一个将被应用程序或服务使用的.NET库(但这对于3层架构来说无关紧要?)并且我很难找到合适的关注点的分离,同时以适当的方式将DAL与BL联系起来。

我一直在寻找教程等,但他们都指向ASP.NET和Entity Framework,但我想使用ADO.NET(DataSet,DataTables)为桌面应用程序/窗口构建一个库服务使用。

有人会通过提供任何示例/示例实现或教程/指南来指向正确的方向吗?

@EDIT

我在想这样的事情:

DbManager - 抽象类 XDbManager - X是从DBManager派生的提供者,SQL等,是一个单例类(我更喜欢静态,但这些不能实现接口或派生自类) DbConnection - DbManager方法返回的对象,包含查询方法

BaseDbo - 数据库对象的抽象类 XDbo - X是DBO的名称,使用DbManager => DbConnection查询(保存,检索,检索集,存储集?这是我有点困惑的地方,我需要很少的持久数据集来保存,更新,从表中检索数据 - 它们是否应该实现为源自DataSet的数据库对象?)

BaseBo - 业务对象的抽象类 XBo - 处理和处理数据等的业务对象类

如上所述,我无法找到适当的方式来链接"两层。

我还需要在这里使用SOAP Web服务,是否应该在业务层实现?或者我应该引入一个新的子层?

1 个答案:

答案 0 :(得分:0)

如果您的应用程序设计得当,使用EF或ADO.Net并不重要:这是DAL抽象的要点。即你还有一个方法,如:

public IEnumerable<User> GetAllUsers()
{
    ....
}

将返回所有用户。它的实施方式(即实体框架或ADO.Net)并不重要。唯一的区别是您的DAL无法返回IQueryable<T>(即延迟执行无法工作,或者您需要在ADO.Net之上另一个抽象层)。

与ASP.Net与桌面应用程序相同:这也不会有太大变化。您应该使用WCF服务而不是ASP.Net MVC控制器。您可以调用WCF生成的客户端代理的方法,而不是直接从控制器调用BL。

您可以阅读的有关3层应用程序的所有内容也应该适用于您的用例。