.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
实战 .Net 数据访问层 - 15

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

 

上面的示意图中,步骤7指向的Remoting Server就是Host程序,

Remoting Server包裹着的RemoteCustomer就是真正提供服务的数

据操作类。

以下所列代码即为该类的部分实现:

 

代码13:使用Data Access Logic进行Remoting调用 – 3RemoteCustomer

 

public class RemoteCustomer: MarshalByRefObject

{

    public RemoteCustomer() { }

      

    public ArrayList GetAllCustomers()

    {

       SqlConnection conn = new SqlConnection(

Helper.GetApplicationSetting("ConnectionString"));

      

       // 通过ObjectSpaces获取所有Customer数据

       ObjectSpace os = new ObjectSpace(

Helper.GetApplicationSetting("MappingFile"), conn);

          

       ObjectSet ost = os.GetObjectSet(typeof(MyCustomer), "");

 

       // ArrayList方式返回所有Customer数据

       // 注:当前版本中,ObjectSet对象通过Remoting进行传递有 Bug

       ArrayList al = new ArrayList(ost);

 

       return al;

    }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

作者相信,在看完代码后,肯定有些朋友会产生这样的疑问:

代码13中的RemoteCustomer完成的也是我们前面分析过的

Data Access Logic所能完成的工作,虽然当中隔了一层Remoting

但本质相同,难道就不能与代码1112中的CustomerDal_ORM进行

一次“有效重组”吗?

       回答是肯定的!

 

       不过,我们还是需要做两个非常简单的操作:

(1)    大家还记得代码9中的DalBase吗?只要我们令它从MarshalByRefObject继承(原先是默认的object),即可“轻松”解决这个问题!但也别高兴太早,一旦如此,所有其它的Data Access Logic类也将不得不接受这“多余的馈赠L,要知道,毕竟通过Remoting进行Data Access Logic操作的机会还不是很多(一般通过Business Logic即可解决问题),这样的“馈赠”并不是人人可以消受的(这也是作者并没在DAF Solution中这么实现的原因)!

(2)将上述RemoteCustomer的代码并入CustomerDal_ORM中,但是,请注意:别忘了将方法名称改掉(因为已经有一个GetAllCustomers方法存在,虽然返回类型不同,但任何.NET下的Compiler都是无法区分这种差别的J)!

 

下一段:http://www.csdn.net/develop/Read_Article.asp?id=27559




相关文章

相关软件