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; }
    }
}

 

 

第三步


免責聲明!

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



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