輕量級的.NET對象查找服務和AOP開發框架Netop.Core源碼解說(5)--其它

来源:http://www.cnblogs.com/fhxie/archive/2017/05/22/6890276.html
-Advertisement-
Play Games

Netop.Core主要提供的服務是類工廠服務及AOP服務,當然還其它一些小服務: 一、對話上下文Netop.Core.Context.SessionContext 此對話上下文可用在桌面程式和ASP.NET程式,可用SetData和GetData在上下文中傳遞數據。方法有: public stat ...


   Netop.Core主要提供的服務是類工廠服務及AOP服務,當然還其它一些小服務:

   一、對話上下文Netop.Core.Context.SessionContext
       此對話上下文可用在桌面程式和ASP.NET程式,可用SetData和GetData在上下文中傳遞數據。方法有:
       public static bool IsWeb()
       public static string GetAppMapPath (string path)
       public static object GetData(string key)
       public static object GetData(string key, bool isToSession)
       public static void SetData(string key, object value)
       public static void SetData(string key, object value, bool isToSession)
       public static void Remove(string key)

   二、緩衝
       定義了緩衝介面ICache和ILocalCache(本地緩衝),Netop.Core.Cache.MicrosoftEnterpriseLibraryCache就是包裝Microsoft.Practices.EnterpriseLibrary.Caching實現ILocalCache介面的一個類,當然也可以做一個包裝MemCached實現ICache介面的類,以後有時間把它共用出來。
       本地緩衝服務的調用是通過Netop.Core.Cache.AppMemoryCache來的,當然配置文件是需要進行配置的:
       Microsoft.Practices.EnterpriseLibrary.Caching有關的配置為:

   <configSections>
     <section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings,Microsoft.Practices.EnterpriseLibrary.Caching" />
      <section name="Netop.Application" type="Netop.Core.Configuration.ConfigurationHandler,Netop.Core" />    
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>

  <cachingConfiguration defaultCacheManager="Default Cache Manager">
    <backingStores>
      <add name="inMemory" type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching" />
    </backingStores>
    <cacheManagers>
      <add name="Default Cache Manager"
                type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching"
                expirationPollFrequencyInSeconds="60"
                maximumElementsInCacheBeforeScavenging="1000"
                numberToRemoveWhenScavenging="10"
                backingStoreName="inMemory" />
    </cacheManagers>
  </cachingConfiguration>

    在<Netop.Application>節點下的配置:

    <Application.Cache>
      <Provider>Netop.Core.Cache.MicrosoftEnterpriseLibraryCache,Netop.Core</Provider>
      <ApplicationLog>Application.Log</ApplicationLog>

      <ExpirationPolicy.IsSet>1</ExpirationPolicy.IsSet>
      <ExpirationPolicy.Expiration>60</ExpirationPolicy.Expiration>
      <ExpirationPolicy.TypeFullName>Microsoft.Practices.EnterpriseLibrary.Caching.Expirations.SlidingTime,Microsoft.Practices.EnterpriseLibrary.Caching</ExpirationPolicy.TypeFullName>
    </Application.Cache>

    經過這些配置的設定後,就可以使用AppMemoryCache的方法了:
        
        public static void AddCacheData(string key, object data)
        public static void AddCacheData(string key, object data, Priority priority)
        public static void AddCacheDataForEver(string key, object data)
        public static void AddCacheDataForFileDependency(string key, object data, Priority priority, string fileName)
        public static void AddDataForAbsoluteTime(string key, object data, Priority priority, TimeSpan timeFromNow)
        public static void AddDataForAbsoluteTime(string key, object data, Priority priority, System.DateTime absoluteTime)
        public static void AddDataForSlidingTime(string key, object data, Priority priority, TimeSpan slidingExpiration)
        public static void AddDataForSlidingTime(string key, object data, Priority priority, TimeSpan slidingExpiration, System.DateTime originalTimeStamp)
        public static object GetCacheData(string key)
        public static void RemoveCacheData(string key)
        public static bool Contains(string key)
        public static int Count

   三、日誌
       Netop.Core.Log.Log4Net是實現了Netop.Core.Log.ILog介面的對Log4Net包裝類,ILog介面為:
    public interface ILog
    {
        void Debug(object message);
        void Write(object message);
        void Write(object message, LogInfoType logInfoType);
        void Write(object message, Exception exception);
        void Write(object message, Exception exception, LogInfoType logInfoType);
    }
       Netop.Core.Log.LogManager是使用日誌的工廠類,最主要的處理是對如對Log4Net進行資料庫配置的日誌時如何提取自己加密的ConnectionString給Log4Net,細節可看GetLog4NetLogger方法及相關的配置代碼。

      使用Log4Net有關的配置為:
   <configSections>
     <section name="Netop.Application" type="Netop.Core.Configuration.ConfigurationHandler,Netop.Core" />    
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
      另外配置<log4net>艽點,如:
  <log4net>
    <logger name="Log">
      <level value="ERROR" />
      <appender-ref ref="LogFile" />
    </logger>
    <appender name="LogFile" type="log4net.Appender.FileAppender" >
      <param name="File" value="Log/log-file.txt" />
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p [%c]  %m%n"/>
      </layout>
    </appender>
  </log4net>

   在Netop.Application里的配置呢?如你自己要配置另外的日誌,可在Netop.Application裡加類似這樣的配置(當然請給XXXXXX和YYYYYY取個好名),如 :
   <XXXXXX>
      <LogCategory>Netop.Core.Log.Log4Net,Netop.Core</LogCategory>
      <LogParameter>YYYYYY</LogParameter>
   </XXXXXX>
   我自己的系統的一種配置為(當然還有多個形表式式的日誌的配置):
   <Application.Log>
      <LogCategory>Netop.Core.Log.Log4Net,Netop.Core</LogCategory>
      <LogParameter>Log</LogParameter>
   </Application.Log>
   當然Log對應的在log4net中的等等配置你要搞好(那個你就參照相關Log4Net的資料吧),上面<LogParameter>Log</LogParameter>中的Log名就是上面的<logger name=" Log">的Log名,要對應關聯起來才行。

   然後程式就可調用了:
   Netop.Core.Log.ILog log = Netop.Core.Log.LogManager.GetLogger("Application.Log");
   log. Debug(“......”);

  順便說一下,在
    <Application.Cache>
      ...
      <ApplicationLog>Application.Log</ApplicationLog>
      ...
    </Application.Cache>
  中的<ApplicationLog>Application.Log</ApplicationLog>就是指著Application.Log的Log配置,在Netop.Core.Cache.MicrosoftEnterpriseLibraryCache,Netop.Core中已可根據配置記錄相關日誌。

   
    其它的一些小服務,如驗證碼等等簡單易用的就不說了。

    輕量級的.NET對象查找服務和AOP開發框架源碼Netop.Core3.5下載地址:http://download.csdn.NET/detail/tom_cat_xie_jxdy/9837303

    輕量級的.NET對象查找服務和AOP開發框架測試源碼 下載地址:http://download.csdn.Net/detail/tom_cat_xie_jxdy/9837278

   Netop.Core--輕量級的.NET對象查找服務和AOP開發框架文檔下載地址:http://download.csdn.net/detail/tom_cat_xie_jxdy/9838212





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

-Advertisement-
Play Games
更多相關文章
  • 描述 大家通常禁止在生產環境直接使用select * 已成常識了,也常常在開發規範中就會規定不允許直接使用select *,那麼我們為什麼不允許使用select * ,在一些什麼場景下select * 會出問題?能否控制不能直接使用select *?出於這些疑問,我們特別測試記錄一下。 測試環境 M ...
  • 本章嘗試回答兩個問題: 一、memcached plugin與MySQL的關係; 二、MySQL系統如何啟動memcached plugin。 1. memcached plugin與MySQL的關係 該圖是從MySQL官方文檔里對memcached的介紹圖片。從圖中可以看出,memcached的結 ...
  • 本系列文章介紹MySQL memcached plugin插件。剖析已經完成。先把鏈接弄好,內容會陸續補上。 大綱如下: 1. "系統結構和引擎初始化" (已完成) 2. "線程模型和連接的狀態機" 3. "containers表的管理" 4. "get的事務管理" 5. "連接的buffer管理" ...
  • 1.開發環境的構成 2.gcc編譯器 功能強大、性能優越的多平臺編譯器,gcc可以將c、c++語言源程式編譯、連接成可執行文件。 以.c為尾碼的文件,C語言的源代碼文件 以.h為尾碼的文件,是程式所包含的頭文 以.i為尾碼的文件,是已經預處理過的C源代碼文件 以.o為尾碼的文件,是編譯後的目標文件 ...
  • 1.什麼是程式 指揮電腦執行我們想要它做的動作,而依照順序執行的一組指令 2.程式的作用是什麼 指揮電腦工作 3.程式的特征 1.程式是一行一行的執行 2.是一種與電腦溝通的語言 3.程式是由特定的語法和關鍵字構成 4.程式的執行,從入口點開始,原則上是由上而下,從左到右執行 4.程式語言的演 ...
  • 1.獲取一個數據集表 DataTable dt = selectDEGS(type, words, KUser); 2.刪除某一列 dt.Columns.Remove("TaskID");//TaskID為列名稱 3.替換某一列名稱 dt.Columns["TaskState"].ColumnNam ...
  • 如今框架兩字已經爛大街了,xx公司架構設計隨處可見,不過大多看個熱鬧,這些框架如何來的,細節又是如何思考的,相互之間的隔離依據又是什麼...相信很多朋友應該依然存在自己的疑惑,特別是越來越火熱的微服務以及衍生的微服務網關產品,正好最近打算寫一個小開源框架OSS.Core,過程中有一點思考,通過這篇文 ...
  • 本文章是在VS2017的環境下,.net core 1.1版本以上。 在這期間,由於.net core 並不基於IIS,我們的過去的網路請求代碼在.net core框架下,有可能會出現不相容,報錯的現象。這裡大致介紹下在.net core 下如何進行http請求,主要仍然是GET和POST方法,有錯 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...