这样可以从MarshalByRefObject 中继承一些必要的功能,业务外观层:显示外观,就是用于控制界面的显示
业务规则层:控制数据(例如如何保存,如何取出数据,数据根据需要计算再送给外观层等)

解决方案 »

  1.   

    web层只访问业务外观层,尽量不要去访问业务规则层和数据访问层(实际上是根本就没访问)。业务外观层接受web层的所有需求,如果要求计算的就进行计算,并不就行各种规则的验证,这些处理交给业务规则层。业务规则层只是完成业务规则的验证,不会去计算任何东西,计算的功能已在上层是实现,及时进行了计算,也是位验证服务的。同时也不管如何访问数据。数据访问层只管CRUD操作,不管别的功能。继承自MarshalByRefObject,是为了能在物理上实现N层。
      

  2.   

    业务外观层 业务外观层将用户界面与各种业务功能的实现隔离开来。除了低级系统和支持功能之外,对数据库服务器的所有调用都是通过此程序集进行的。 业务规则层 业务规则层包含各种业务规则和逻辑的实现。业务规则完成如客户帐户和书籍订单的验证这样的任务。 在Web应用程序中,有部分操作只是简单的从数据库根据条件提取数据,不需要经过任何处理,而直接将数据显示到网页上,比如查询某类别的图书列表。而另外一些操作,比如计算定单中图书的总价并根据顾客的级别计算回扣等等,这部分往往有许多不同的功能的类,操作起来也比较复杂。我们可以先想象一下,如果我们采用三层结构,这些商业逻辑一般是会放在中间层,那么对内部的这些大量种类繁多,使用方法也各异的不同的类的调用任务,就完全落到了表示层。这样势必会增加表示层的代码量,将表示层的任务复杂化,和表示层只负责接受用户的输入并返回结果的任务不太相称,并增加了层与层之间的耦合程度。 浏览器首先调用的是表示层WEB,然后WEB将请求发送给业务外观层,业务外观层对请求进行初步的处理,判断是否需要调用业务规则层,还是直接调用数据访问层获取数据。最后由数据访问层访问数据库并按照来时的步骤返回结果到浏览器.