BusinessFacade项目
业务外观层封装了3个类CustomerSystem,OrderSystem,ProductSystem,类中直接调用数据访问层和业务逻辑层类的方法与属性提供对Web层的接口。有意思是的每个类结尾均以System命名。客户系统?订单系统?产品系统?
业务外观层中3个类均继承自MarshalByRefObject类,来支持远程处理。MSDN中关于MarshalByRefObject类的解释为:
“允许在支持远程处理的应用程序中跨应用程序域边界访问对象。”
“应用程序域是一个操作系统进程中一个或多个应用程序所驻留的分区。同一应用程序域中的对象直接通讯。不同应用程序域中 的对象的通讯方式有两种:一种是跨应用程序域边界传输对象副本,一种是使用代理交换消息。”
“MarshalByRefObject 是通过使用代理交换消息来跨应用程序域边界进行通讯的对象的基类。不是从 MarshalByRefObject 继承 的对象根据值隐式封送。当远程应用程序引用根据值封送的对象时,将跨应用程序域边界传递该对象的副本。”
“MarshalByRefObject 对象在本地应用程序域的边界内可直接访问。远程应用程序域中的应用程序首次访问 MarshalByRefObject 时, 会向该远程应用程序传递代理。对该代理后面的调用将封送回驻留在本地应用程序域中的对象。”
“当跨应用程序域边界使用类型时,类型必须是从 MarshalByRefObject 继承的,而且由于对象的成员在创建它们的应用程序域之外 无法使用,所以不得复制对象的状态。”
CustomerSystem类中有对密码通过.NET内置的加密支持进行密码保护的代码,可以很方便的用到我们平时的项目之中。
疑问:
1.类结尾命名为System,怎么解释?
2.类均标记为从MarshalByRefObject类继承,来支持应用程序中跨应用程序域边界的对象访问,系统在什么情况下将会进行“跨应用程序域边界访问对象”?
3.Common项目中的所有类均标记为[SerializableAttribute],标记为[SerializableAttribute]和继承自MarshalByRefObject类均可用来支持远程调用,两者有何区别?
4.感觉抽象出业务外观层加大了系统的复杂程度,加大了编码量。