NetCore平台下使用RPC框架Hprose


NetCore下使用RPC框架Hprose

https://www.jianshu.com/p/c903fca44d5d

Hprose是國內非常優秀的RPC框架,和其它RPC框架比較起來,其它框架一般需要定義一個接口文件,通過工具把接口文件轉化成服務端和客戶端對應的代碼(可以跨語言),客戶端和服務端把這些生成的代碼集成到自己的項目里,一旦接口發生變化,需要重新執行這個操作。

Hprose進一步簡化,無需這個步驟,直接服務端生成函數給客戶端使用。另外Hprose支持的語言非常多,一直在更新中。

我們前期不少項目都在使用Hprose,一般用在替代http的web api上,開發效率比直接使用restful接口高很多,近期后台從.Net轉.NetCore碰到一點小問題,簡單總結一下。

Nuget上下載的hprose-dotnet最新版本是1.5.7,和原作者交流才知道1.5.8才是支持NetCore的版本,1.5.8下載地址是https://github.com/hprose/hprose-dotnet/releases/tag/v1.5.8 .原作者正在准備最新的3.0版本了。

下載測試后發現同樣的代碼在.Net下沒有問題,在NetCore下還是有一個nullpointer錯誤,把Hprose的源碼加入調試發現一個小問題,直接修改並重新生成了一個hprose.client.dll,大家可以在我的Github上下載。

最后在放一個簡單的例子,算是給沒接觸過Hprose的同學一個直觀的感受。例子包括用NetCore實現的client和server,下載地址都在Github

  • server端
    class TestService { public string Hello(string name) { return "Hello " + name + "!"; } } class Program { static void Main(string[] args) { HproseHttpListenerServer server = new HproseHttpListenerServer("http://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."); } } 
  • client端

static void Main(string[] args) { HproseHttpClient client = new HproseHttpClient(" http://localhost:2012/"); client.KeepAlive = true; Console.WriteLine(client.Invoke("Hello",new Object[]{"bbbb"})); Console.WriteLine(client.Invoke("hello",new Object[]{"cccc"})); Console.ReadLine(); } 

AppWorker官方馬上也會推出do_Hprose組件來支持在Android和iOS下通過hprose和服務端通信。



作者:voxer
鏈接:https://www.jianshu.com/p/c903fca44d5d
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM