做.net Remoting分布式开发的总结
.net Remoting分布式开发比较适用于局网内的程序通信,特别是windows与windows、web与windwos等,充分体现.net Remoting的效率。
net Remoting宿住程序可以以Windows应用、Console应用及Windows服务应用,但个人推荐使用Windwos服务做为服务器端的宿住。优点如下:
- Windows服务比较稳定,不会因用户的注销而停止服务。
- Windows服务可以设置为自启动,对程序的运行和维护会带来很大的方便。
- 可以设置windows服务使用的帐户,通过Widnows帐户策略,可以保证服务程序的安全性。
.net Remoing服务器端与客户端的契约应以接口为标准,并把此接口独立为单个DLL,方便程序的部署与维护。
服务器端可以实现多个接口,并以URI进行标识;客户端可以通过不同的URI生成不同的接口代理,实现不要同的功能。
.net Remoting可以使用Tcp/Http/Ipc及自定义不同的通信协议,个人建议使用Tcp为好。如果服务器与客户端部署在同一机器,可使用Ipc通信协议。
需要在服务器端与客户端通信的对象需要进行序列化,以属性[Serializable]标识即可。
服务器端程序在实现接口的同时,必须继承MarshalByRefObject类。
服务器端的Remoting配置应在config配置文件中实现,节点为:<system.runtime.remoting>,同在在启动程序中写入如下代码:
客户端的URI标识也应在config中标识,写在节点<appSettings>中即可。代码实现如下:
.net Remoting解决方案目录个人建议如下:
解决方案
- Inerface接口项目(类库):此项目中包括所有的接口定义、需要序列化对象的定义等,不包括任何实现逻辑。
- Services实现(类库,引用Inerface):此项目主要实现Inerface接口,包括所能的实现逻辑。
- 宿住程序(Windows、Console或Windows服务),此项目主要实现服务的配置及注册。配置一般放在app.config中,
- 在程序的启动入口只需要写入“RemotingConfiguration.Configure(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, false);”
- 代码及其他需要实现的功能,如记录服务启动日志等。
- 客户端(引用Inerface):客户端可包括任何类型的项目,如Asp.net Windows Console等。