我正在编写一个Windows Forms应用程序,该应用程序正在增长并且变得相当广泛。

最初,我认为最好的方法是使用单独的图形组件项目,一个业务逻辑项目和一个数据访问项目。

随着应用程序规模的扩大,我开始认为采用模块化程度更高的方法会更清洁……例如一个包含每个数据类别的用户控件,业务逻辑和数据访问权限的项目。

例如,单个项目中与产品相关的DAL对象以及相关的业务对象和用户控件。这最终将导致解决方案中有大量项目,每个项目都是独立的。

但是,由于经常链接数据(产品表与供应商表,订单表和零件 list 表等链接),因此这可能会导致更多的复杂性。因此很难完全抽象出每个类别。

在线上有数百篇软件体系结构文章,但没有多少文章可以帮助您将体系结构转换为解决方案,项目和代码。

有人能指出我正确的方向吗?

最佳答案

我会将UI,数据和业务层保留在单独的项目中。这从本质上减少了紧密耦合的机会-例如,UI编码直接使用数据层等。现在,如果您希望垂直划分数据层,则可以做到这一点,即产品将具有三个项目UI,Business&Dal和很快。这里可能有多个注意事项:

  • 为什么要垂直分离-您看到可能的独立重用吗?如果否,则避免 split 。
  • 如果必须划分,则可以选择划分,从管理的角度说仅UI层,因为它可能有很多代码
  • 或者,您可以将所有图层划分为粗粒度。例如,产品及其子级一起。

  • 就跨类别引用而言,它们是不可避免的,但必须通过有据可查和精心设计的契约(Contract)来完成。例如,Orders UI可以调用Products BL以获取产品列表(请注意,许多其他UI组件将使用相同的方法来实现相似的功能)。

    10-04 14:42
    查看更多