最近公司分配的任务是将一个C/S模式的C#应用程序迁移到Remoting三层结构下,原有的程序是一个两层结构的WIN FORM项目,由于开发时不规范,所以以应用程序代码并没有将表示层与业务层完全分离,部分业务逻辑是直接放在按钮CLICK事件,或者写成一个方法放在FORM的CS文件中,有一部分分离出来放在实体类中,但是里面又含有部分STATIC方法被外部调用(Remoting中无法调用SERVER端的STATIC方法的)。项目时间很短,完全重构是不可能的,而且去熟悉它的业务逻辑也需要太多的时间,于是采用了下面的策略。

第一步:分离表现层与业务层。将一个个实现方法及相关分别剥离封装到新工程中(假若设定此工程名为BSProject)的各个对应类中。
第二步:在BSProject中再新建工厂类,这个类是继承于MarshalByRefObject的。将对工厂类分配方法,将表现层要用到的方法一一在对应的工厂方法中实现。
第三步:在原来的表现层中,一一实例工厂类,并使用其方法。
第四步:将BSProject编译后以IIS为REMOTING宿主,写一个web.config配置文件。
第五步:写一个客户端app.config配置文件,在工程启用时调用。

由于是内部使用不用考虑安全性,所以在客户端时我们直接引用BSProject的Dll,而不用建一个抽象类来作为引用Dll。

OK,两天之后,大功告成!
posted on 2005-08-03 13:44  Jin  阅读(1042)  评论(1编辑  收藏  举报