首页 > 代码库 > .net remoting实例
.net remoting实例
1.通信协议,两个基本功能,显示消息和发送消息。
/// <summary>
/// 服务器端回调接口
/// </summary>
public interface IChatCallback
{
/// <summary>
/// 回调方法,显示聊天消息
/// </summary>
/// <param name="message"></param>
void ShowMessage(string message);
}
public interface IDuplexChat
{
void SendMessage(string message, IChatCallback callBack);
}
2.客户端,录入消息,并使用协议发送出去。
class Program
{
static IDuplexChat proxy = null;
static string message = string.Empty;
static void Main(string[] args)
{
RemotingConfiguration.Configure("ChatRoom.Client.exe.config", false);
proxy = (IDuplexChat)Activator.GetObject(typeof(IDuplexChat), "http://localhost:8080/ChatRoom/ChatRoomURL");
message = Console.ReadLine();
SendMessage(message);
}
private static void SendMessage(string message)
{
proxy.SendMessage(message, new ChatRoomCallBackHandler());
message = Console.ReadLine();
if (message != "exit")
{
SendMessage(message);
}
}
}
3.服务器端,客户端调用的时候有一个服务器的url,根据该统一资源标示符找到服务器的提供的基于协议的服务。那么,服务器需要实现该协议,并给客户端返回些结果什么的。
/// <summary>
/// 实现.net remoting按引用封送的类型
/// </summary>
public class DuplexChatRemoting : MarshalByRefObject, IDuplexChat
{
public void SendMessage(string message, IChatCallback callBack)
{
Console.WriteLine("Invoke the method SendMessage()");
//do other......
callBack.ShowMessage(message);
}
}
4.客户端、服务器和协议都有了。那么客户端随时都有可能访问服务器端,那么就需要服务器端一直运行着。因此需要一个寄宿器,让服务器端跑起来。
class Program
{
static void Main(string[] args)
{
RemotingConfiguration.Configure("ChatRoom.ConsoleHost.exe.config", false);
Console.WriteLine(".Net Remoting 服务已启动......");
Console.Read();
}
}
5.如果想做的更好,弄个安装包,可以在任意机器上跑客户端,去访问服务器。
写的匆忙,欢迎评论!
.net remoting实例