DotNetCore跨平臺~組件化時代來了

来源:http://www.cnblogs.com/lori/archive/2017/11/14/7833977.html
-Advertisement-
Play Games

回到目錄 進行dotnetcore之後,各種對象都是基於DI進行生產的,這就有了對象的生命周期一說,早在autofac里也有相關知識點,這與Microsoft.Extensions.DependencyInjection是完全溫和的,方便大家理解,在講今天的組件化之前,先對DI的三種生命周期進行理解 ...


回到目錄

進行dotnetcore之後,各種對象都是基於DI進行生產的,這就有了對象的生命周期一說,早在autofac里也有相關知識點,這與Microsoft.Extensions.DependencyInjection是完全溫和的,方便大家理解,在講今天的組件化之前,先對DI的三種生命周期進行理解一下:

AddSingleton:單例,進程內它是唯一的

AddTransient:瞬息,在對象在當前環境內,作用域內是唯一的

AddScoped:請求,對象在一個HTTP請求內是唯一的

下麵來看今天的組件化的實現,比如我希望對nosql進行封裝,在以後使用它時,直接在代碼startup中進行註冊,或者使用配置文件進行註冊,我們就可以涉及這樣一個擴展方法來實現對IServiceCollection擴展!

    /// <summary>
    /// nosql服務擴展
    /// </summary>
    public static class NoSqlExtensions
    {

        /// <summary>
        /// 使用Redis
        /// </summary>
        /// <param name="services"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public static IServiceCollection UseRedis(
           this IServiceCollection services,
           Action<RedisConfig> options = null)
        {
            RedisConfig option = new RedisConfig();
            options?.Invoke(option);
            ObjectMapper.MapperTo<RedisConfig>(option, ConfigFileHelper.Get<RedisConfig>());//優先順序裝飾器
            services.AddSingleton(option);
            services.AddSingleton<RedisManager, RedisManager>();
            return services;
        }

        /// <summary>
        /// 使用Mongodb
        /// </summary>
        /// <param name="services"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public static IServiceCollection UseMongodb(
          this IServiceCollection services,
          Action<MongodbConfig> options = null)
        {
            MongodbConfig option = new MongodbConfig();
            options?.Invoke(option);
            ObjectMapper.MapperTo<MongodbConfig>(option, ConfigFileHelper.Get<MongodbConfig>());//優先順序裝飾器
            services.AddSingleton(option);
            services.AddSingleton<MongodbManager, MongodbManager>();
            return services;
        }
    }

在程式中使用時,也是很方便,註意的是,如果配置文件中也配置它了,我們將以配置文件為準,這樣在生產環境里,你的代碼註入的參數,不用被註釋和刪除!

       #region 服務組件
            services.UseRabbitMQ(o =>
            {
                o.ExchangeName = "AutoCalculate";
                o.MqServerHost = "amqp://192.168.200.214:5672";
            });

            services.UseRedis(o =>
            {
                o.Host = "192.168.200.214:6379";
                o.AuthPassword = "2017";
            });

            services.UseDapper(o =>
            {
                o.DbType = 2;
                o.ConnectionString = "test";
            });
            #endregion

感謝各位的閱讀!

我們的框架應該是基於組件化的!

我們的系統應該是基於微服務化的!

我們的部署,應該是基於自動化的!

回到目錄


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我真的很喜歡在前端使用 Vue.js,Vue 服務端渲染直到第二個版本才被支持。 在本例中,我想展示如何將 Vue.js 2 服務端渲染功能整合 ASP.NET Core ...
  • 電商平臺和傳統店鋪相比,確實方便不少,直接在網上下單,快遞直接送貨到家。這其中,做電商平臺的童鞋表示壓力很大,因為可能同時開很多店鋪,每個店鋪都要登錄、查看訂單量、發貨揀貨等,非常辛苦。 多店鋪同時操作,需要打開很多瀏覽器,每個店鋪的帳號和密碼也要記清楚,腦子一定要夠用,不然就會頭暈腦漲。 ...
  • 相關博文: "Ubuntu 簡單安裝 Docker" "Mac OS、Ubuntu 安裝及使用 Consul" "Consul 服務註冊與服務發現" "Fabio 安裝和簡單使用" 閱讀目錄: Docker 運行 Consul 環境 Docker 運行 Fabio 環境 使用 Consul 註冊 A ...
  • MongDB .Net工具庫MongoRepository的簡單使用 最近研究了一下MongoDB資料庫,並使用了開源的在.net環境下的一個類庫,Mongo倉庫。對於數據的一些簡單的操作非常好用,特記錄供後期參考。 具體的使用過程如下: 一、新建項目,在Nuget上獲取庫。 二、在配置文件中設置數 ...
  • HAL(Hypertext Application Language,超文本應用語言)是一種RESTful API的數據格式風格,為RESTful API的設計提供了介面規範,同時也降低了客戶端與服務端介面的耦合度。很多當今流行的RESTful API開發框架,包括Spring REST,也都預設支 ...
  • 1.1 概述 c#程式開發中,資料庫操作無疑是舉足輕重的,資料庫部分的技術點可能占整個c#技術點的1/4。這幾天我一直在研究System.Data.OracleClient.dll反編譯之後的.CS,放棄c#的心都有了,底層代碼不僅全是英文註釋,而且有很多東西看都看不懂,讓我深刻體會封裝的重要性!此 ...
  • 今天是第一次接觸C#,由於長時間的做Java開發,突然轉到C#非常的不自然,但是也有了一些收穫,給大家分享一下 ...
  • "sweetalert": "^1.1.3",記住這個參數,Abp中這個組件只能用這個版本,高於它的message會沒有效果,切記 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...