【问题标题】:.NET Desktop Application (Service) 3-tier application.NET 桌面应用程序(服务) 3 层应用程序
【发布时间】:2015-11-03 09:15:04
【问题描述】:

我刚刚开始设计一个 .NET 库,它将被应用程序或服务使用(但这与 3 层架构无关吗?),我正在努力寻找合适的分离关注并同时以适当的方式将 DAL 与 BL 联系起来。

一直在找教程之类的,但是都指向ASP.NET和Entity Framework,但是我想用ADO.NET(DataSets,DataTables)建一个库,供桌面应用/windows服务使用.

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

@编辑

我正在考虑类似的事情:

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

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

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

如上所述,我找不到“链接”两个图层的正确方法。

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

【问题讨论】:

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


    【解决方案1】:

    如果您的应用程序设计得当,那么使用 EF 或 ADO.Net 应该无关紧要:这就是 DAL 抽象的重点。 IE。你仍然有一个方法,例如:

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

    这将返回您的所有用户。它是如何实现的(即实体框架或 ADO.Net)并不重要。唯一的区别是您的 DAL 将无法返回 IQueryable&lt;T&gt;(即延迟执行不起作用,或者您需要 ADO.Net 之上的另一个抽象层)。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 2021-01-02
      • 2016-10-07
      • 1970-01-01
      相关资源
      最近更新 更多