论文导读:分布式远程访问对象机制在访问远程类型的一个对象实例之前,必须通过一个名为Activation的进程创建它并进行初始化。通过关系数据库构建面向对象的数据库。
关键词:办公自动化,面向对象,UML,远程访问
1.系统架构分析与设计
企业办公系统的访问存在于两种方式:一种是企业内部网的访问,存在于局域网中。另一种是跨网络的访问,即在广域网中访问。采用B/S的访问模式,因为目前计算机技术的发展,计算机的性能越来越高而价格越来越低,客户端对系统的访问如果全部依赖于服务器端来实现,则服务器端的负荷较大,而客户端有分担负荷的能力,结合微软开发的.NET Remoting分布式远程对象访问技术来实现系统平台的网络应用。
2.远程对象的激活方式的设计
分布式远程访问对象机制在访问远程类型的一个对象实例之前,必须通过一个名为Activation的进程创建它并进行初始化。在Remoting中,远程对象的激活分为两大类:服务器端激活和客户端激活。论文检测。
一、 服务器端激活。是指服务器应用程序在激活对象实例之前会在一个众所周知的统一资源标识符(URI)上来发布这个类型。然后该服务器进程会为此类型配置一个WellKnown对象,并根据指定的端口或地址来发布对象。
二、客户端激活。与WellKnown模式不同,Remoting在激活每个对象实例的时候,会给每个客户端激活的类型指派一个URI。
3远程对象的通道方式的设计
Remoting的通道主要有两种:Tcp和Http。
TcpChannel类型默认使用二进制格式序列化消息对象,因此它具有更高的传输性能。
HttpChannel类型放在名字空间System.Runtime.Remoting.Channel.Http中。它提供了一种使用Http协议,使其能在Internet上穿越防火墙传输序列化消息流。默认情况下,HttpChannel类型使用Soap格式序列化消息对象,因此它具有更好的互操作性。
通常在局域网内,我们更多地使用TcpChannel;如果要穿越防火墙,则使用HttpChannel。
(1)服务器端
注册通道:
Remoting提供了IChannel接口,分别包含TcpChannel和HttpChannel两种类型的通道。这两种类型除了性能和序列化数据的格式不同外,实现的方式完全一致。
首先,在项目中添加引用“System::Runtime::Remoting”,然后using名字空间:
注册Tcp通道程序片段:
IChannel ^channel= gcnew TcpChannel(tcpProp,
gcnew BinaryClientFormatterSinkProvider( ),
gcnew BinaryServerFormatterSinkProvider( ));
ChannelServices::RegisterChannel(channel,false);
注销通道程序片段:
TcpChannel ^tcpChannel = (TcpChannel)eachChannel;
tcpChannel::StopListening(null);
ChannelServices::UnregisterChannel(tcpChannel);
(2)客户端
客户端注册通道的方式方法与服务器端相类似也是按照两种通道方式进行注册。因为内容类似,在此处不再赘述。
4远程对象的定义实现
由于Remoting传递的对象是以引用的方式,因此所传递的远程对象类必须继承MarshalByRefObject。
(1)动态库的创建
程序片段如下:
private:
int Terminal;
String^IP;
LoginManagement aloginUser;
CheckWork acheckworker;
(2)服务器端注册远程对象
服务器端在注册了通道后,要能激活远程对象,必须在通道中注册该对象。论文检测。RemotingConfiguration::RegisterActivatedServiceType(Type::GetType('RemoteObject.RemoteObjClass,RemoteObject'));
(3)客户端获得远程对象。
客户端激活模式有两种方法实现远程调用对象的实现。一种是调用RemotingConfiguration的静态方法RegisterActivatedClientType()。另一种是调用进程Activator的CreateInstance( )方法。根据本系统的对象类的建立,采用第一种调用方式。论文检测。
具体程序的片段:
RemotingConfiguration::RegisterActivatedClientType(RemoteObjClass::typeid,'http://*******/Remote' );// 客户端激活模式激活,通道选择HttpChannel
RemotingConfiguration::RegisterActivatedClientType(RemoteObjClass::typeid,'tcp://******* /Remote ' );// 客户端激活模式激活,通道选择tcpChannel
RemoteObjClass^ pObj = gcnewRemoteObjClass;//注册远程对象
pObj->DisplayMessage( );//调用远程对象的函数
5文档流的设计
通过关系数据库构建面向对象的数据库。系统的远程访问采用.NETRemoting技术,这种技术能够实现跨区域跨网络的访问。对于文档的流转操作,定义文档编号DocumentID,用来唯一标识文档,文档的处理关系着系统的运行速度。
文档列表根据系统一次处理文档的数目来设定。文档列表成为用户操作和系统操作的一个文档缓冲区。文档的具体操作通过用户的系统要求进行响应操作,这些操作包括文档的创建,文档的删除,修改等操作,从文档列表中取出数据,文档创建时创建的新文档存储到文档列表中。
6小结
系统的客户端与服务器端的远程访问通过.NET Remoting方法来实现。在客户端和服务器端分别创建通道响应,为客户端和服务器端的对象运行创建动态库,从而实现客户端的对象的远程访问。在客户端中实现文档的标记,文档的操作和文档的管理。文档的操作针对的是用户的文件操作,因此文件的操作管理可以在客户端实现。
|