然后建立一个可远程调用的对象,注意远程对象必须继续MarshalByRefObject
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using Model;
namespace Manager
{
//类必须继承了MarshalByRefObject,才能进行远程调用
public class PersonManager:MarshalByRefObject
{
public List GetList()
{
List personList = new List();
FileStream stream = new FileStream("DataSource.sour", FileMode.Open, FileAccess.Read); //在服务器文件里面获取虚拟数据
BinaryFormatter formatter = new BinaryFormatter();
personList=(List)formatter.Deserialize(stream); //对虚拟数据进行反序列化获取集合
return personList;
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using Model;
namespace Manager
{
//类必须继承了MarshalByRefObject,才能进行远程调用
public class PersonManager:MarshalByRefObject
{
public List GetList()
{
List personList = new List();
FileStream stream = new FileStream("DataSource.sour", FileMode.Open, FileAccess.Read); //在服务器文件里面获取虚拟数据
BinaryFormatter formatter = new BinaryFormatter();
personList=(List)formatter.Deserialize(stream); //对虚拟数据进行反序列化获取集合
return personList;
}
}
}
在一个应用程序中加载服务器端,服务器端的配置有两种试,一是直接写在代码里面。首先建立服务传送方式,可以选择用TcpServerChannel,也可使用HttpChannel,前者有着更高的效率。然后在ChannelService注册此传输通道,最后通过RemotingConfiguration的RegisterWellKnownServiceType方法注册远程对象。
注意WellKonwnObjectMode可选择为SingleTon或者SingleCall,前者使用单体模式,每个客户端进行访问都会使用同一个远程对象。后者会为每个请求建立一个远程对象。在这个例子里面我们使用SingleTon单体模式。