在图层之间共享常见类型的最佳做法

时间:2015-07-08 18:47:20

标签: .net oop architecture

我有一个业务层,它有一些常见的类型可以将数据传输到服务层(到目前为止很好),但是,我还有一个表示层,需要访问BL中的公共类型,我不会这样做。我想将BL类暴露给PL。

我正在考虑在BL中创建一个共享库并使其可供所有层访问,或者在SL中创建新类并从BL类继承它们。

解决此问题的最佳方法是什么。 我的SL是一个WCF项目,将作为服务托管。 PL主要是Web Forms和MVC。

1 个答案:

答案 0 :(得分:1)

  

分享业务的堆栈有多远的古老问题   对象。

您希望拥有服务图层,但又不想反复映射对象 - >这表明了很多事情:

  1. 您可能会看到所有这些对象都是1:1(因此问题)。如果这是真的,那么你构建一个非常简单的应用程序,你可以通过根本没有服务层,或者让业务对象一直共享到UI来避免这种情况(到目前为止最高耦合,但可以工作)如果您控制客户端和服务器的两端,应用程序非常CRUD,并且只有一个客户端应用程序)
  2. 如果它更复杂,特别是对于多个客户端,将服务层对象与业务对象完全分开(并且不继承它们,如果你这样做,那么你也可以简单地公开业务对象 - 几乎没有任何区别)。如果UI足够简单,您可以“使用”服务层返回的对象。否则,将表示对象拆分为自己的对象(查看模型,表示模型或任何其他模式)。
  3. 对象的三个“层”听起来比实际更复杂,许多工具可以帮助解决这个问题(例如AutoMapper),但通常复杂性来自于应用程序在本质上很简单但仍然有很多这样的层;否则你会清楚地看到好处。

    是的,我把这个问题简化了很多,整个讲座都是关于“共享对象”。实际上还有很多其他的东西可以发挥作用,简化事物或完全改变上下文(例如OData服务,或者在客户端上使用动态类型语言等)。

相关问题