.Net Remoting服務端與客戶端呼叫示例

星輝Johnson發表於2016-10-15

.Net Remoting的使用場景,我們常用的就是使用介面分離程式集的方式,這個小示例就是採用這種方式。

公共程式介面IDemoClass:

public interface IDemoClass
    {
        string Show(string name);
    }
服務端程式碼實現:

1.方法類必須繼承MarshalByRefObject,並實現IDemoClass介面

public class DemoClass : MarshalByRefObject, IDemoClass
    {
        public string Show(string name)
        {
            return name + "/Server";
        }
    }
2.服務端註冊埠,開啟監控服務

class Program
    {
        static void Main(string[] args)
        {
            RegisterChannel();//註冊埠
            Singleton();    //開啟服務
            Console.ReadKey();
        }

        static void RegisterChannel()
        {
            IChannelReceiver tcpChnl = new TcpChannel(15200);
            ChannelServices.RegisterChannel(tcpChnl, false);
        }

        static void Singleton()
        {
            Type t=typeof(DemoClass);
            RemotingConfiguration.RegisterWellKnownServiceType(t, "DemoClass", WellKnownObjectMode.Singleton);</span>
<span style="white-space:pre">	</span>    //Singleton為單件模式,所有客戶端共享同一個物件   SingleCall為每次請求都會建立物件,方法返回後銷燬物件
        }
    }

完成以上兩步,服務端程式碼實現完畢,現在可以執行服務端程式,開啟服務。


客戶端呼叫服務端方法程式碼如下

class Program
    {
        static void Main(string[] args)
        {
            string url = "tcp://10.0.140.137:15200/DemoClass";
            IDemoClass obj = (IDemoClass)Activator.GetObject(typeof(IDemoClass), url);
            string result = obj.Show("test");
            Console.WriteLine(result);
            Console.ReadKey();
        }
    }
客戶端實現程式碼完畢,現在執行呼叫服務端方法返回


返回結果為test/Server,呼叫成功。

相關文章