本文共 3803 字,大约阅读时间需要 12 分钟。
dym 分布式开发框架 Demo 熔断 限流 事件总线(包括基于内存的、rabbitmq的) CQRS DDD 实例 随后更新
dym 是一个分布式开发框架,同时支持 .net core2.2 、.net frameworker4.6.1。
第一步:启动注册中心 进入项目文件夹 dymDemo\YY.AppCenter\bin\Debug\netcoreapp2.2 ,运行命令 dotnet AppCenter.dll 看到下图 说明运行成功 代码:默认监听6660端口
using dym.Rpc.Center; static class Program { static void Main(string[] args) { Console.Title = "YY.AppCenter"; Bootstrap.StartUp(args); } }
配置文件:dym.config
服务启动后会注册到<Servers>节点内
6660 120000
第二步:启动服务Server Server可以和 AppCenter 不在同一台电脑,也可以运行多个server 也可以负载均衡,高级用法随后介绍 进入项目文件夹 dymDemo\YY.Server\bin\Debug\netcoreapp2.2 ,运行命令 dotnet YY.Server.dll 看到下图 说明 Server 成功运行 并且已经注册到 注册中心(APPCenter)运行成功
代码:默认监听6659端口
using dym.Rpc.Server; static class Program { static void Main(string[] args) { Bootstrap.StartUp(args); } }
配置文件:
0,0 App001 6659 1 20000
业务代码示例:
服务启动 配置
using System;using dym.EngineData;namespace dym.Plugs.YYTestService{ //服务启动 配置 public class YYTestBootstrap : IPlugsConfigurationBootstrap { public void ConfigurationBootstrap() { /* * 服务启动的时候会执行此方法 * 也可以用来加载插件的配置 */ } public void PreConfigurationBootstrap() { //Ioc 注入之前 } }}
业务编写:
using dym.EngineData;using System;using System.Collections.Generic;using System.Text;namespace dym.Plugs.YYTestService{ public class MyFirstModule: BaseModule { public MyFirstModule() { } public ActionResult MyT() { var xx = RequestString("XX"); Console.WriteLine($"来自客户端的消息:{xx}"); return new ActionResult(true,new { Msg= " I from dym.Plugs.YYTestService MyFirstModule!" },null, xx); } }}
第三步:启动Client测试分布式框架是否可以正常运行 启动Client 测试 Client调用 Server是否成功 进入项目文件夹 dymDemo\YY.Client\bin\Debug\netcoreapp2.2 ,运行命令 dotnet YY.Client.dll 看到下图 说明 Client 成功运行 客户端代码:
using System;using dym.Rpc.Client;namespace YY.Client{ class Program { static void Main(string[] args) { /* * 1、AppName * 2、注册中心 * 3、注册中心端口 * 4、关闭调用链追踪 */ DefaultConfigManager.SetDefaultConfiguration("YY.Client", "127.0.0.1", 6660,false); Restart: Console.WriteLine("请输入一个消息然后回车发送到服务器:"); var inputMsg = Console.ReadLine(); var input = new InputTest() { channel = "dym.Plugs.YYTest", router = "MyFirst", method = "MyT", XX = $"{inputMsg}参数1" }; var rltStr = Connector.BrokerDns(input); //var outPut = Newtonsoft.Json.JsonConvert.DeserializeObject(rltStr); Console.WriteLine(rltStr); Console.WriteLine("-----------------------------------------------------------------------------"); var inputYYTest = new InputTest() { channel = "dym.Plugs.YYTest", router = "MySecond", method = "MyT", XX = $"{inputMsg}参数2" }; var rltStrYY = Connector.BrokerDns(inputYYTest); //var outPutYY = Newtonsoft.Json.JsonConvert.DeserializeObject (rltStr); Console.WriteLine(rltStrYY); goto Restart; } } public class InputTest : InputDtoBase { public string XX { get; set; } }}
转载地址:http://ogfuz.baihongyu.com/