zoukankan      html  css  js  c++  java
  • .NET Remoting Basic(10)创建不同宿主的客户端与服务器端

    除了控制台之外,现有.net 客户端分为asp.net,WinForm和WPF,Silverlight则无权限直接访问.不过本质流程是相同的.

    一.控制台

    一直以来都是以控制台来演示。为保持完整性,重新来一遍.

    1.配置文件

    <?xml version="1.0" encoding="utf-8" ?>
     <configuration>
         <system.runtime.remoting>
             <application>
                 <channels>
                     <channel ref="tcp" port="1234">
                         <serverProviders>
                             <formatter ref="binary" />
                         </serverProviders>
                     </channel>
                 </channels>
                 <service>
                     <wellknown    type="Server.ServerImpl, Server" 
                                         objectUri="MyServer.rem"
                                         mode="Singleton" />
                 </service>
             </application>
         </system.runtime.remoting>
     </configuration>

    2.Server端代码初始化

        [STAThread]
         static void Main(string[] args)
         {
             System.Console.WriteLine("Starting server...");
             RemotingConfiguration.Configure("Server.exe.config");
     
             System.Console.WriteLine("Server configured, waiting for requests!");
             System.Console.ReadLine();
         }
     }


    3.客户端

    3.1配置文件

    <configuration>
         <system.runtime.remoting>
             <application name="FirstServer">
                 <channels>
                     <channel ref="tcp" />
                 </channels>
                 <client>
                     <wellknown    type="General.IRemoteFactory, General"
                                         url="tcp://localhost:1234/MyServer.rem" />
                 </client>
             </application>
         </system.runtime.remoting>
     </configuration>
     

    3.2客户端测试

    [STAThread]
     static void Main(string[] args)
     {
         System.Console.WriteLine("Configuring client...");
         RemotingConfiguration.Configure("ConsoleClient.exe.config");
     
         System.Console.WriteLine("Calling server 1...");
         IRemoteFactory factory = (IRemoteFactory)RemotingHelper.CreateProxy(typeof(IRemoteFactory));
         Person p = factory.GetPerson();
         System.Console.WriteLine(">> Person retrieved: {0} {1}, {2}", p.Firstname, p.Lastname, p.Age.ToString());
         System.Console.WriteLine();
     
      Console.ReadLine();
     }

    二.以WinForm为客户端

    服务器端如上不变

    1.配置客户端初始化

    public class WinApplication
         {
             private static IRemoteFactory _factory = null;
     
             public static IRemoteFactory ServerProxy 
             {
                 get 
                 {
                     if(_factory == null) 
                     {
                         _factory = (IRemoteFactory)RemotingHelper.CreateProxy(typeof(IRemoteFactory));
                     }
     
                     return _factory;
                 }
             }
     
             public static void Main(string[] args) 
             {
                 // First of all configure remoting services
                 RemotingConfiguration.Configure("WinClient.exe.config");
     
                 // Create the windows form and start message looping
                 Application.Run(new MainForm());
             }
         }

    2.UI界面

    private void ActionCall_Click(object sender, System.EventArgs e)
     {
         // Get the transparent proxy for the factory
         IRemoteFactory proxy = WinApplication.ServerProxy;
         Person p = proxy.GetPerson();
         
         TextResults.AppendText(
             string.Format("{0} {1}, {2}\r\n", p.Firstname, p.Lastname, p.Age));
     }


    三.以ASP.NET为客户端

    1.将配置文件配置在web.config中

    2.在Global.asax的ApplicationStart事件中初始化客户端

    protected void Application_Start(Object sender, EventArgs e)
     {
         // Configure the remoting server
         RemotingConfiguration.Configure(Server.MapPath("web.config"));
     }


    四.以ASP.NET为服务器端

    web容易部署,可以直接部署在IIS上

    1.配置一个xml文件,如RemotingClient.config
    2.在Global.asax的ApplicationStart事件中初始化服务器端

    protected void Application_Start(Object sender, EventArgs e)
     {
         RemotingConfiguration.Configure(Server.MapPath("RemotingClient.config"));
     }

    访问可以用控制台,WinForm,ASP.NET兼可
  • 相关阅读:
    MOSS中实现自动上传图片
    2008年最后一天了
    MOSS中使用无刷新的日历日程控件破解版
    UC R2 Metro Tranning
    明智IT, 逆势成长概述
    RMS Client如何使用AD组策略部署
    MOSS & Project Server 2007
    MOSS & SSO 系列2
    Dynamics AX 2009 Trainning
    MOSS & SSO 系列4
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1809585.html
Copyright © 2011-2022 走看看