surging+EFCore 服務實現入門


准備工作

  本篇文章基於上篇基礎上進行的,請先了解此篇  surging+CentOS7+docker+rancher2.0 菜鳥部署運行筆記 

  開發環境  Visual Studio 2017 15.5 

  數據庫  sql server 2012

運行環境  虛擬機CentOS 7+Docker+Rancher 2.0+Consul+RabbmitMQ

surging項目下載地址  https://github.com/dotnetcore/surging 

demo下載地址 https://github.com/q5934/surgingDemo0.9.git

開始干活

 1.新建.NETCore2.1 控制台程序項目解決方案

    我參照surging 的源碼將服務模塊分離出來,這樣我們就不用操心網關怎么實現了,安心寫我們的服務就行了。我也假模假樣的用下DDD思想。

    

  surgingDemo.Data 我這邊用於存放EF 實體,算是 基礎設施層

  surgingDemo.IModuleServices.UserManager  用戶管理模塊接口

  surgingDemo.Modules.UserManager 用戶管理模塊實現

  surgingDemo.Sevices.server  服務層,配置好服務層網關會通過consul 發現服務

 2.EFCore+DBFirst 實現

  把 surgingDemo.Data設為啟動項並 添加 nueget 包

Install-package Microsoft.EntityFrameworkCore   --EF框架的核心包
Install-package Microsoft.EntityFrameworkCore.SqlServer --針對SqlServer數據庫的擴展,使用SqlServer數據庫必須
Install-package Microsoft.EntityFrameworkCore.Tools     --用戶根據現有的數據庫生成模型代碼等 ,更多參考 :https://docs.microsoft.com/zh-cn/ef/efcore-and-ef6/porting/port-edmx

  根據數據生成實體模型,surgingDemo.Data設為啟動項不然生成失敗!

Scaffold-DbContext "Server=.;database=test;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models   --根據自己數據自行修改參數

  生成成功會創建Models文件 效果如下圖

  目前只是生成了默認的DbContext 我們要修改一下做成自定義配置連接字符串。稍后在啟動服務的時候注冊進去。

  

        /// <summary>
        /// 數據連接字符串
        /// </summary>
        public static string ConnectionString { get; set; }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
                //optionsBuilder.UseSqlServer("Server=.;database=test;Trusted_Connection=True;");
                optionsBuilder.UseSqlServer(ConnectionString);
            }
        }        

  依照surging中的surging.Services.Server 層我們將相關的配置文件和啟動內容copy過來。

  surging相關引用 可以通過nuget 進行安裝,若是自己對網關進行過定制,那就引用生成后DLL。

Install-package Autofac.Extensions.DependencyInjection Install-package Microsoft.Extensions.Logging Install-package Microsoft.Extensions.Logging.Console

  

 

  生成成功后,修改surgingSettings.json 配置文件

1 "ConnectionString": "${Register_Conn}|192.168.56.2:8500" --設置consul的地址,根據實際情況配置
2 "EventBusConnection": "${EventBusConnection}|192.168.56.2"  --設置rabbitmq 的地址
3 
4 --在末尾增加sql連接字符串配置文件
5 "ConnectionStrings": {
6     "SqlServerStr": "${SqlServerStr}|Server=.;Database=test;User ID=sa;Password=S1a2;Trusted_Connection=False;"
7   }

   接下來新建一個user的接口和實現,接口文件以 Service 結尾並集成IserviceKey

 

[ServiceBundle("api/{Service}")]  --這是surging的路由設置 必須加上

 

  接口實現,必須繼承 ProxyServiceBase

  

  倉儲層 ,必須繼承 BaseRepository 

 

   這樣我們的demo 程序算是完工了。。嘻嘻 開始run起來,前提是你要 surging 網關運行起來 consul和rabbitmq 配置好。

  

  此處的Ip 就是服務的IP地址在VS 本地調試的時候可以設置成本機IP,不然在docker容器中的 網關找不到這個地址的。如果你surging是在本機VS 運行的設置成127.0.01 沒毛病。當我們發布到 服務端到docker容器中的時候,要設置成 0.0.0.0  切記切記

  運行成功后網關界面如下圖

 

 

 

 

 

 

  

    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  開始請求服務 ,Content-Type :application/json 一定要加不管是get請求還是post

  

  成功后我們在調用獲取用列表的方法 

  

  本地測試沒毛病后,發布服務端 上傳到,centos 7 上,docker build 鏡像,映射好端口 ,數據庫字符串的IP 記得改成本機IP 了用 . 運行不起來的,然后run起來 。。。(不清楚可以參考上篇網關發布教程)

  demo 下載地址 https://github.com/q5934/surgingDemo0.9.git

  如有疑問可加surging官方群:615562965 

 


免責聲明!

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



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