zoukankan      html  css  js  c++  java
  • 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
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    访问的站点提示输入用户名密码
    ASP.NET Session 过期问题
    c#和VB代码转化网址
    整理 css 小技巧
    asp.net当修改header时提示:The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>)
    sql server 2005 replication 设置
    动态加载CSS和Javascript文件 javascript 和asp.net.
    一台机子上安装两个版本的mysql
    sql删除所有表外键和表
    Griview中的删除按钮添加“确认提示”
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/10531608.html
Copyright © 2011-2022 走看看