3

我想开发一个企业应用程序,其中包括一个 WindowsForms 表示层、用于业务逻辑和数据访问的中间层组件以及一个 MsSQL Server 数据库。中间层组件应包含一些业务对象,并将使用 .NET Remoting 从表示层调用。Whitch 是从表示层引用这些业务对象的最佳方式(以及为什么)?

  • A) 创建类库项目,实现业务对象。从表现层和中间层引用这个项目。
  • B) 创建定义业务对象的接口库项目。创建实现接口的类库项目。从中间层引用类库项目。从表示层引用接口库项目。
  • C) 为中间层和表示层创建单独的类库项目。从表示层引用相应的项目。
4

2 回答 2

2

对此可能没有明确和明确的答案,这取决于您在做什么。

  • 在许多情况下, A通常会足够好。对于小型“单一应用程序”项目,没有任何理由不能直接从 UI 和 BL 层引用业务对象库。这当然是最简单的,有时简单是最好的。

  • B可能是“最好的”,您将抽象出您的实际实现,以便将来可以在不违反合同的情况下进行更改,并且如果您有接口,则单元测试会更容易。这样做的另一个好处是,如果您认为有必要,将来从 B 切换到 C 不会太困难。

  • 在大多数情况下,C可能是矫枉过正。也就是说,在较大的项目中,您可能会发现它是必要的。我曾研究过具有多达三个独立数据对象集的大型客户端-服务器 n 层应用程序。一组用于 DA 层,用于映射并存储在数据库中。第二组在业务逻辑和网络层中用于处理和通过网络传递,第三组在客户端中用于绑定到 UI。由于抽象的优势,也值得考虑为 C 使用接口。

总而言之,在不确切知道您的应用程序域或范围的情况下 - B是一个很好的起点。

于 2010-03-30T19:43:33.163 回答
2

我已经看到这三种方法都运作良好。

有时好的做法是从 A 开始,然后随着复杂性的增加移至 B,然后是 C。

在简单的项目中,“业务对象”可以与表示层和持久层包含在同一个项目中——尽管它可能看起来很异端,但使用不同的名称空间定义对象可以在“层”之间提供足够的分离。

您可能需要重新考虑使用 .NET Remoting - WCF 是一种更好的技术并且更易于使用。

于 2010-03-30T19:48:03.263 回答