用Remoting技术传送文件
Net Remoting是.Net平台中为实现分布式计算机而设计的一种体系结构。
首先,客户端通过Remoting技术体系访问通道以获得服务端对象,再通过代理解析为客户端对象。这就提供一种可能性,急以服务的方式来发布服务器对象。远程对象代码可以运行在服务器上(例如服务器激活的对象和客户端激活的对象),然后客户端再通过Remoting连接服务器获得该服务对象并通过序列化在客户端运行。
在Remoting体系中,对于要传递的对象,设计者除了需要了解信道的类型和端口号之外,无需再了解数据包的格式。必须注意的是,客户端在获取服务器端对象时,并不是获得实际的服务器对象,而是获得它的引用。这既保证了客户端和服务器端由管对象的松散耦合,同时也优化了通信的性能。
在实际开发中经常需要将数据或文件从一台计算机上传送到另一台计算机上。很多种方法都可以实现文件传送,例如套接字、Web服务和Remoting技术。使用Remoting体系结构实现文件传送不但代码简单,而且可以实现分布式计算。
返回文件流的方法实现代码如下:
Public FileStream GetFile(string fileName)
{
FileStream fs=new FileStream(fileName,FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
Return fs;
}
服务器端主要程序代码如下:
Private void RemotingServerForm_Load(object sender,EventArgs e)
{
//加载配置文件注册远程类对象
RemotingConfiguration.Configure(“RemotingServer.exe.Config”,false);
Label1.Text=”服务器端已启动”;
}
服务器端使用配置文件注册远程类对象,配置文件内容如下:
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellkown type="RemotingClass.FarClass,RemotingClass"//远程类对象名称和所在类库名
objectUri="Tcpservice"
mode="Singleton"
/>
</service>
<channels>
<channel ref="tcp" port="9999"/>//侦听端口号
</channels>
</application>
</system.runtime.remoting>
</configuration>
客户端主要程序代码如下:
Private void RemotingClientForm_Load(object sender,EventArgs e)
{
//加载配置文件
RemotingConfiguration.Configure(“RemotingClient.ext.Config”,false);
Fc=new FarClass();//实例化远程类对象
}
Private void button1_Click(object sender,EventArgs e)
{
//调用远程类对象的方法获得文件流
StreamReader sr=new StreamReader(fc:GetFile(textBox1.Text));
StreamWriter sw=new StreamWriter(textBox2.Text);
Sw.Write(sr.ReadToEnd());//将文件内容写到本地
Sr.Close();//及时关闭使用完毕的对象
Sw.Close();
}
客户端是以配置文件的方式注册远程类对象的,配置文件的内容如下
<configuration>
<system.runtime.remoting>
<application>
<client>
<wellknown type="FarClass,RemotingClass" url="tcp://www.qitxt.com:9999/Tcpservice"//注册远程类对象/>
</client>
</application>
</system.runtime.remoting>
</configuration>