实现远程调用对象,跨进程访问对象,可实现分布式
首先给服务端和客户端 nuget Hprose
可使用tcp和http两种调用方式
服务端
using Hprose.Server; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace rpc { class TestService { public string Hello(string name) { return "Hello " + name + "!"; } } class Program { static void Main(string[] args) { // HproseHttpListenerServer server = new HproseHttpListenerServer("http://localhost:2012/"); Hprose.Server.HproseTcpListenerServer server = new HproseTcpListenerServer("tcp://localhost:2012"); TestService ts = new TestService(); server.Add("Hello", ts); // server.IsCrossDomainEnabled = true; //server.CrossDomainXmlFile = "crossdomain.xml"; server.Start(); Console.WriteLine("Server started."); Console.ReadLine(); Console.WriteLine("Server stopped."); } } }
客户端
using Hprose.Client; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace client { public interface ITestService { string Hello(string name); } class Program { static void Main(string[] args) { //HproseHttpClient client = new HproseHttpClient(" http://localhost:2012/"); HproseTcpClient client = new HproseTcpClient("tcp://localhost:2012/"); //client.KeepAlive = true; Console.WriteLine(client.Invoke("Hello", new Object[] { "bbbb" })); Console.WriteLine(client.Invoke("hello", new Object[] { "cccc" })); //接口方式调用 ITestService testService = client.UseService<ITestService>(); Console.WriteLine(testService.Hello("这是接口方式调用")); // Console.ReadLine(); } } }