• λ我爱Aspx >> Asp.Net >> Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
  • Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触

  • :aspxer  Դ:internet  :2007-5-15 20:46:12  ؼ:.net
  • public void OnFaxSended(string fax)

    {

    txtFax.Text += fax;

    txtFax.Text += System.Environment.NewLine;

    }

    这个方法很简单,就是把客户端发过来的Fax显示到txtFax文本框控件上。

    而客户端呢?仍然是一个Windows应用程序。代码非常简单,首先为了简便其见,我们仍然让它在装载窗体的时候,激活远程对象:

    private void ClientForm_Load(object sender, System.EventArgs e)

    {

    HttpChannel channel = new HttpChannel(0);

    ChannelServices.RegisterChannel(channel);

    faxBus = (IFaxBusiness)Activator.GetObject(typeof(IFaxBusiness),

    "http://localhost:8080/FaxBusiness.soap");

    }

    呵呵,可以说客户端激活对象的方法和普通的Remoting客户端应用程序没有什么不同。该写传真了!我们在窗体上放一个文本框对象,改其Multiline属性为true。再放一个按钮,负责发送传真:

    private void btnSend_Click(object sender, System.EventArgs e)

    {

    if (txtFax.Text != String.Empty)

    {

    string fax = "来自" + GetIpAddress() + "客户端的传真:"

    + System.Environment.NewLine;

    fax += txtFax.Text;

    faxBus.SendFax(fax);

    }

    else

    {

    MessageBox.Show("请输入传真内容!");

    }

    }

    private string GetIpAddress()

    {

    IPHostEntry ipHE = Dns.GetHostByName(Dns.GetHostName());

    return ipHE.AddressList[0].ToString();

    }

    在这个按钮单击事件中,只需要调用远程对象faxBus的SendFax()方法就OK了,非常简单。可是慢着,为什么你的代码有这么多行啊?其实,没有什么奇怪的,我只是想到发传真的客户可能会很多。为了避免服务端人员犯糊涂,搞不清楚是谁发的,所以要求在传真上加上各自的签名,也就是客户端的IP地址了。既然要获得计算机的IP地址,请一定要记得加上对DNS的命名空间引用:

    using System.net;

    因为我们严格按照分布式处理程序的部署方式,所以在客户端只需要添加公共程序集(Common.dll)的引用就可以了。而在服务端呢,则必须添加公共程序集和远程对象程序集两者的引用。

    Ҷƪл˵?
  • һƪRemoting服务端和客户端程序该这样模式来写
    һƪMicrosoft .Net Remoting系列专题之一:.Net Remoting基础篇