rex的博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

最近正在做一个关于remoting的architecture,查阅一些资料后,觉得.net的remoting实现大致可分为以下几类:

Shared Implementation

在客户端需要部署服务端的Assmebly。
优点:1。几乎和开发一般的代码没有区别。没有太多的额外工作量
            2。因为new操作符被系统重载,只需非常简单的变化,可以方便的在本地调用/remoting之间切换。
缺点:1。在客户端需要部署服务端的Assembly,多数情况下这并不是一个好方法,开发方一般都希望避免这种情况,因为代码会暴露在ildasm等工具之下。

Shared Interfaces/Shared Base Classes

在Client和Server端共享一个只包含接口或抽象基类的dll.
优点:1。Server端的实现变化,无需影响客户端的部署。
缺点:不能简单的在本地/remoting之间简单切换,因为在客户端,不能用new操作符来初始化interface或抽象基类。

SoapSuds Generated Metadata

用工具生成metadata dll,客户端代码可以reference这个dll,这样就避免了暴露代码的危险。如果用VStudio开发并配以适当的脚本,这种方式会优于第一种方式。

从微软的资料来看,它相当推荐最后一种方式。不过在项目设计中,我采用了第2种方式略加变化。因为个人认为,C/S的解耦是更重要的设计方向,虽然在开发上会降低一定的效率(所有remote方法必须定义成接口形式),但在大的项目上(或者从整个企业架构)以至于设计模式来说,都是利大于弊的。

posted on 2005-06-30 15:46  rex  阅读(1675)  评论(16编辑  收藏  举报