设为首页 加入收藏

TOP

【.NET Core项目实战-统一认证平台】第十六章 网关篇-Ocelot集成RPC服务(二)
2019-09-17 18:25:06 】 浏览:96
Tags:.NET Core 项目 实战 统一 认证 平台 十六 网关 -Ocelot 集成 RPC 服务
w DemoModel() { T1 = D1 + 1, T2 = D2 + "77777", T3 = D3.AddDays(1) } ); } public DemoModel HelloSendModel(DemoModel model) { model.T1 = model.T1 + 10; model.T2 = model.T2 + "11"; model.T3 = model.T3.AddDays(12); return model; } public DemoModel HelloSendModelParm(string name, DemoModel model) { model.T1 = model.T1 + 10; model.T2 = model.T2 + "11"; model.T3 = model.T3.AddDays(12); if (model.Child != null) { model.Child.C1 = name+"说:"+ model.Child.C1; } return model; } public List<DemoModel> HelloSendModelList(List<DemoModel> model) { return model.Select(t => new DemoModel() { T1=t.T1+10,T2=t.T2+"13",T3=t.T3.AddYears(1),Child=t.Child }).ToList(); } } }

然后启动服务端监听。

class Program
    {
        static void Main(string[] args)
        {
            var host = new HostBuilder()
                .ConfigureHostConfiguration(i => i.AddJsonFile("CzarConfig.json"))
                .ConfigureLogging((hostContext, configLogging) =>
                {
                    configLogging.AddConsole();
                })
                .UseCodec<JsonCodec>()
                .UseLibuvTcpHost()
                .UseProxy()
                .UseConsoleLifetime()
                .Build();

            host.RunAsync().Wait();
        }
    }

启用外部使用CzarConfig.json的配置文件,注意需要设置成始终复制。

{
  "CzarHost": {
    "Port": 7711, //监听端口
    "QuietPeriodSeconds": 2,  //退出静默时间   DotNetty特性
    "ShutdownTimeoutSeconds": 2, //关闭超时时间 DotNetty特性
    "IsSsl": "false",  //是否启用 SSL, 客户端需要保持一致
    "PfxPath": "cert/datasync.pfx", //证书
    "PfxPassword": "123456"  //证书密钥 
  }
}

到此服务器端搭载完成。

3、客户端

新建客户端控制台程序Czar.Rpc.Client,然后配置Rpc调用信息。

{
  "CzarHost": {
    "ProxyEndPoint": true, //是否启用动态服务地址,就是指定服务端IP
    "IsSsl": "false", //是否启用SSL
    "PfxPath": "cert/datasync.pfx", //证书
    "PfxPassword": "123456", //证书密钥
    "ClientConfig": {   //客户端配置
      "Demo.Rpc.Hello": {   //对应服务[CzarRpc("Demo.Rpc.Hello")] 值
        "Host": "127.0.0.1", //服务端IP 如果ProxyEndPoint=false 时使用
        "Port": 7711, //服务端端口 如果ProxyEndPoint=false 时使用
        "Timeout": 10, //调用超时时间
        "WriterIdleTimeSeconds";30  //空闲超时时间,默认为30秒,非内网环境建议设置成5分钟内。
      }
    }
  }
}

现在开始启用客户端信息。

class Program
    {
        public static IServiceProvider service;
        public static IConfiguration config;
        static async Task Main(string[] args)
        {
            try
            {
                var builder = new ConfigurationBuilder();
                config = builder.AddJsonFile("CzarConfig.json").Build();
                
              service = new ServiceCollection()
                    .AddSingleton(config)
                    .AddLogging(j => j.AddConsole())
                    .AddLibuvTcpClient(config)
                    .AddProxy()
                    .BuildDynamicProxyServiceProvider();

                var rpc = service.GetRequiredService<IHelloRpc>();
                //使用的内部指定的服务器地址
                rpc.CzarEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 7711);
                var result = string.Empty;
                
                string t = "基本调用";
                result = rpc.Hello(18, t);
                Console.WriteLine(result);

                result = "无返回结果";
                rpc.HelloHolder(1, out result);
                Console.WriteLine(result);
                result = await rpc.HelloTask(2, "异步任务");
                Console.WriteLine(result);
                result = "单向";
                rpc.HelloOneway(3, "单向调用");
                Console.WriteLine(result);
                result = await rpc.HelloValueTask(4, "ValueTask任务");
                Console.Wr
首页 上一页 1 2 3 4 5 6 下一页 尾页 2/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ASP.NET Core 项目简单实现身份验.. 下一篇基于aws api gateway的asp.net co..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目