实现远程调用对象,跨进程访问对象,可实现分布式
首先给服务端和客户端 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(); ???????} ???}}
.Net 之 RPC 框架之Hprose(远程调用对象)
原文地址:https://www.cnblogs.com/wlzhang/p/10471650.html