【问题标题】:How to implement 3 tiers architecture in c#如何在 C# 中实现 3 层架构
【发布时间】:2012-11-27 00:23:28
【问题描述】:

我阅读了很多关于 c# 中的 3 层架构的文章,但我看到了:

  • 几乎使用业务逻辑层(BLL)作为对象映射数据库中的对应表。这个 BLL 对象有一些类似的方法:

    +GetData():返回这个;

    +Update(this);

    +Insert(this);

    +Delete(this);

  • 这个BLL对象调用对应的DAL(Data Access Layer)执行到对应的数据库表。

  • 我想如果通过上述方法,我们可以只获取一条记录并更新它。但是如果我们有很多记录并且想把它放到一个数据集中, 我们如何更新所有更改的记录?我们必须对所有记录使用循环吗?
  • 另外,在数据库中,有很多表是相互关联的,那么如何将它们放入数据集中,建立关系和 添加、更新、删除记录,例如使用 BindingSourceComboboxDataGridView?在这种情况下我们如何分离代码?

【问题讨论】:

    标签: c# architecture 3-tier


    【解决方案1】:

    有 2 个很酷的 C# 三层架构项目。

    3-tier architecture in C#T̶h̶r̶e̶e̶ ̶L̶a̶y̶e̶r̶ ̶A̶r̶c̶h̶i̶t̶e̶c̶t̶u̶r̶e̶ ̶i̶n̶ ̶C̶#̶ ̶.̶N̶E̶T̶。这两个项目都特别适合您。

    【讨论】:

    • 非常感谢。我已经阅读了 2 个示例,我可以理解一些基本的 3 层架构的工作原理。但是它们只提供了一个带有对象(用户)的简单示例。如果我们使用“DataSet”显示所有记录,我们如何更新“DataSet”上更改的所有记录,循环所有记录,不是吗?如果我们有许多相互关联的对象,这是显示数据并一起更新它们的最佳方式!你能给我更复杂的例子吗!
    • 这两篇文章都让业务逻辑层依赖(也就是引用)dal 层。这不是要走的路。您的业​​务模型(又名域模型)应该是您的应用程序的中心,其余的都有对它的引用。一个好名字是洋葱模型。谷歌一下,值得!
    【解决方案2】:

    上面描述了一个非常简单的三层模型架构。

    1. DAL(数据访问层)直接与数据库交互,因此所有 SQL 操作都仅在 DAL 内完成。
    2. BLL(业务逻辑层)就像 DAL 和 Presentation Tire 之间的中介。
    3. DAL 和表示层之间不允许直接通信。
    4. 虽然实体层没有物理存在,但实体封装了所有信息/数据,并将其从一层传递到另一层。
    5. 因此,所有数据库对象名称和数据库架构都被限制在 DAL 内,这为应用程序提供了额外的安全层。
    6. 由于在 BLL 中定义了业务规则/逻辑,因此对业务逻辑的任何更新都不会影响 DAL 和表示层

    此图描述了 3 层模型的实际实现。

    1. 数据访问服务和数据库服务器可以托管在单个服务器中。
    2. 大多数 SQL Server 2000/2005/2008 或 Oracle 可以托管在 Windows 2000/2003 Server 上。
    3. Business Server 通过 Web Service /Remoting/WCF 公开所有操作。
    4. 可以使用具有 Windows 2000/2003 的高度配置的服务器来托管业务服务,或者也可以使用 Microsoft BizTalk Server。
    5. Presentation Tier 或客户端使用代理通过 http:// 管道使用在业务服务器上公开的服务。
    6. 客户端可以是任何独立的机器,如果是桌面应用程序(Win-Form 或控制台应用程序),则客户端可以是正在安装应用程序的任何独立计算机,或者具有运行 Web 应用程序的浏览器。
    7. 数据/信息被实体封装,并通过网络从一个位置传输到另一个位置,然后是所有网络协议。

    【讨论】:

    • 非常感谢!我对 3 层和 3 层架构有了更多的了解。例如,我们有一个存储用户信息的表,因此每个用户映射一个实体。如果我们想将所有用户显示到一个datagridview中并更新所有更改信息的用户,我们是否必须封装每个实体对应的每一行(使用循环)来更新?这是最好的方法。谢谢。对不起,因为我的英语不好
    • 多年来我看到的最大的“错误层”问题是 UI 层中的业务逻辑。一个好的经验法则是“如果我有 2 个表示层,我是否必须复制我正在编写的代码?”如果是,将其移至业务层。
    猜你喜欢
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2012-07-21
    • 2012-03-18
    • 2013-09-15
    • 2011-07-30
    • 1970-01-01
    相关资源
    最近更新 更多