zoukankan      html  css  js  c++  java
  • net core 微服务 快速开发框架

    dymDemo 

    github 地址:https://github.com/duyanming/dymDemo

    dym 分布式开发框架 Demo 熔断 限流 事件总线(包括基于内存的、rabbitmq的) CQRS DDD 实例 随后更新
    

    dym 分布式开发框架

    dym 是一个分布式开发框架,同时支持 .net core2.2 、.net frameworker4.6.1。
    

    1、运行Demo

    第一步:启动注册中心
        进入项目文件夹 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>节点内

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <!--#lbs 配置-->
      <Port>6660</Port>
      <TimeOut>120000</TimeOut>
      <Servers>
     
      </Servers>
    </configuration>

    第一步

    第二步:启动服务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);
            }
    
        }

    配置文件:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <!--0,0 第一位是 工作站,第二位数据中心
      (所有的 APPservice 的 两位数不能重复例如不能存在【1,2】【1,2】)
      可以存在【1,2】【2,1】
      -->
      <IdWorker>0,0</IdWorker>
      <!--App名称-->
      <AppName>App001</AppName>
      <!--监听端口-->
      <Port>6659</Port>
      <!--权重-->
      <Weight>1</Weight>
      <!--功能 非dym.Plugs  加入方式-->
      <FuncName></FuncName>
      <!--忽略的功能 Trace,Logic-->
      <IgnoreFuncName></IgnoreFuncName>
      <!--超时时间毫秒-->
      <TimeOut>20000</TimeOut>
      <!--注册到的目标-->
      <Ts Ip="10.112.93.122" Port="6660"/>
      <IocDll>
        <!-- IOC 仓储--><!--
        <Assembly>dym.Repository</Assembly>
        --><!-- 领域--><!--
        <Assembly>dym.Domain</Assembly>
        --><!-- 查询服务--><!--
        <Assembly>dym.QueryServices</Assembly>
        --><!--事件Handler--><!--
        <Assembly>dym.Command.Handler</Assembly>-->
      </IocDll>
    
    </configuration>
    业务代码示例:dym.Plugs.YYTestService
    服务启动 配置
    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<dynamic>(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<dynamic>(rltStr);
                Console.WriteLine(rltStrYY);
                goto Restart;
            }
        }
    
        public class InputTest : InputDtoBase
        {
            public string XX { get; set; }
        }
    }
     

    第三步

  • 相关阅读:
    [转]面向接口编程详解(二)——编程实例
    [转]面向接口编程详解(一)——思想基础
    [转] LINQ to SQL快速上手 step by step
    Java备份MySQl数据库,并备份图片数据
    用密码密码拦截
    引用 MySQL集群:主从数据库配置 实现查询负载
    Oracle 对表操作 提示:资源正忙,要求指定nowait
    Jquery一款非好的图片轮换效果
    CodeBlocks集成ObjectiveC开发 Windows下学习ObjectiveC
    查询指定库中所有表
  • 原文地址:https://www.cnblogs.com/duyanming/p/10998081.html
Copyright © 2011-2022 走看看