微軟企業庫5.0 學習之路——基本入門(轉 )

iDotNetSpace發表於2010-06-07
話說在大學的時候幫老師做專案的時候就已經接觸過企業庫了但是當初一直沒明白為什麼要用這個,只覺得好麻煩啊,竟然有那麼多的亂七八糟的配置(原來我不知道有配置工具可以進行配置,請原諒我的小白)。

      直到去年在做專案的時候在看程式碼生成工具的時候看到了許多生成工具都內建了企業庫的資料庫訪問及一些相關模組,才突然頓悟了,可能企業庫應該還是有點用的,於是就試著使用了企業庫的一些模組(當時版本是4.1),果然覺得企業庫還是很不錯的,微軟在企業庫中為我們封裝了許多日常經常使用的模組,如:資料庫訪問,快取,日誌,異常處理,加密,IOC等等,在日常的專案開發中,企業庫已經貫穿了一個專案從底層到表示層基本上需要用到的模組,大大方便了我們的開發,畢竟自己再重複造輪子還不如就用微軟的(畢竟企業庫現在都到5.0)

      最近在看園子裡有好幾位都在寫,如:virus,huangcong。我現在寫的其實基本上都是自己的學習之路(可能沒前面2位寫的好,但就當自己的學習筆記吧)。

      廢話不多說了,首先開始學習企業庫的基本概念,一下摘自sfbirp的企業庫學習筆記:

      一、什麼是企業庫?

      企業庫包含一系列應用程式模組和核心架構。這些高複用的元件旨在幫助開發者解決一些共同的企業開發問題。
企業庫同時提供高可配置的特性,使我們管理重複的工作更加容易,例如我們知道的在應用的很多地方發生的橫切關注點。包括像日誌記錄、快取、異常管理等。另外,它提供的依賴注入容器能夠簡化和分解你的設計,使他們更加可實驗和容易理解,幫助你建立更加高效能的設計和各種應用。
     二、使用企業庫的3個簡單步驟:
     1.引用和配置你需要的程式集。
     2.通過企業庫配置應用。
     3.在你的程式碼中建立和使用企業庫物件。
      三、企業庫的好處:
      應用模組幫助解決開發者從一個專案到另一個專案面對的共同問題。他們的設計封裝了微軟推薦的做法,這些都是基於微軟框架的應用開發。例如,資料訪問應用模組提供了對ADO.NET訪問最頻繁使用的特徵。在某些情況下,應用模組還新增了一些基礎類庫沒有直接提供的相關功能。
      四、企業庫的目標
     1.一致。所有的企業庫模組都堅持一致的設計模式和實現方式。
     2.可擴充套件性。所有的應用模組包括定義擴充套件點,允許開發人員通過新增自己的程式碼定製應用模組的行為。
     3.易用性。企業庫提供了許多實用性的東西,包括一個圖形化配置工具,簡單的安裝過程,完成的文件和示例。
     4.整合。企業庫應用模組被設計得能夠一起很好的工作,並且也被這樣測試過。但是你不必一起使用他們。我們可以單獨使用這些應用模組,同時這些應用模組之間也有些依賴,比如在企業庫核心和Unity中的一些通用元件。

      上面是企業庫的基本概念,理解了企業庫的相關知識後,我們可以開始來安裝企業庫了

   1、下載地址:點我進入下載頁面(不是直接下載),安裝後就可以使用了。

        這次5.0相比4.1的最大改動就是整個配置工具採用了WPF重新構建和例項化和管理物件生命週期的全依賴注入的實現,同時支援VS2008SP1和VS2010,話說雖然這次的配置工具變化挺大的,但是一旦熟悉了就覺得比4.1的好,因為可以清楚的看見每個模組的之間的依賴關係

        附相關改動,還是摘自sfbirp的企業庫學習筆記:

一、Unity和物件生成器的整合
     在這個版本中,用於建立物件的基本技術是一個單一的依賴注入容器,預設的是Unity。你可以使用容器生成企業庫物件的例項並注入到其他的物件。 企業庫提供一個標準的介面從Unity容器中來獲得定義在企業庫配置中的物件的例項,如SqlDatabase或LogWriter.另外,注入友好的例項門面處理靜態門面之外是有效的,因為靜態門面不能用注入,但是為了向後相容以前的版本而存在。在本版本中的示例中都是用依賴注入,但是以前版本中是用的靜態工廠類和靜態門面在這個版本中還是支援的。物件生成器,一個低版本的依賴注入機制在這個版本中被歸入Unity中,在專案中不再需要單獨引用物件生成器集。
      支援Unity容器,必須引用一個被包含在企業庫中的Microsoft.Practices.ServiceLocation程式集。如果要使用一個第3方的依賴注入容器,必須直接實現IServiceLocator介面或者通過介面卡實現。

二、影響所有模組的變化:
     1.在企業庫中主要修正是使用依賴注入機制。所用的應用模組以及核心系統都是用依賴注入機制,並使用Unity作為預設的依賴注入容器,來建立和管理企業庫物件。
     2.自主容器的實現通過實現Common Service Locator專案提供的 IServiceLocator 介面來完成。
     3.由於錯誤配置引發的錯誤將提供更多有用的錯誤資訊。
     4.配置系統公開了一個 fluent介面,用來為單個物件或整個應用建立和填充配置源。fluent API使得為各種情景建立配置源更加容易。
     5.ConfigurationView類被刪除.
     6.一些配置元素有預設值,可能不同於以前版本的隱式預設值.
     7.企業庫現在允許你通過另一個配置檔案合成一個混合配置檔案.
     8.可以可通過不同的配置檔案讀取不同的配置資訊.
     9.企業庫不支援XAML瀏覽器應用程式(XBAP).
     10.WmiEnabled標誌為了像前相容仍然存在企業庫中,但是在5.0中是被忽略的,而且將來會被刪除.
     11.改進式的安裝允許你只安裝部分應用模組及配置工具.
     12.在以前版本中要做統一整合,必須新增核心企業庫的擴充套件和每個模組的擴充套件。現在如果你只需要直接訪問容器,那麼只有核心擴充套件是必須的。單獨模組將自動支援。
舊的功能為了保持像前相容仍然保留,但已經不起作用。
     13.FileConfigurationSource.Save 的簽名已經改變,引數由3個變為2個。
     14.快速入門不再包含在主安裝程式中。

三、Breaking變化:
     1.企業庫現在丟擲了一個配置錯誤ActivationException,之前是System.Configuration.ConfigurationErrorsException。這包括試著解決沒有配置資訊錯誤的一個例項提供者。
     2.以前版本在獲取應用模組錯誤時丟擲BuildFailedException錯誤,現在對於所有的應用模組都丟擲ActivationException
     3 .之前的版本,在講一個空源傳到容器來呼叫容器的時候,會丟擲ArgumentNullException,現在丟擲NullReferenceException
     4.ObjectBuilder2不再是一個單獨的程式集,而是整合到了Unity集合中,在專案中也不需要引用ObjectBuilder2.dll。

     5.WMI支援已經從企業庫中刪除,除了在logging模組中的WMI跟蹤監聽器。
     6.如果你沒有關閉DbDataReader,可能會導致隨機的、很難在您的程式碼中找到的錯誤,尤其是當你正在一個由TransactionScope上下文建立的隱式事務下操作時。
你必須始終確保您的應用程式及時關閉DbDataReader,無論是明確的DbDataReader.Close方法關閉或是逼迫DbDataReader釋放。
      7.如果你使用 validator 特性必須引用 System.ComponentModel.DataAnnotations程式集。
      8.為FileConfigurationSource.Save方法簽名已更改。該方法有兩個引數,而不是3個引數
      9.Microsoft.Practices.EnterpriseLibrary.Configuration.Design.dll集合的功能和其他設計時集合被一個新的集合Microsoft.Practices.EnterpriseLibrary.Configuration.DesignTime.dll代替。
      10,效能計數器異常從PolicyInjection.CallHandlers移到 PolicyInjection 程式集。
      11.包含在Policy Injection Application Block中的CachingCallHandler有未處理的安全漏洞,已經從Policy Injection Application Block中移除。

四、配置工具的改變:
      1.新的企業擁有一個新的GUI庫和一個後設資料驅動的可擴充套件性模。
      2.支援嚮導
      3.新的型別選擇。
      4.不支援對依賴策略的Environmental Overrides 。日誌模組處理Categories。
五、快取模組變化:
      1.快取清除已被完全重寫的效能優化
六、資料庫訪問模組:
      1.ExecuteReader, ExecuteXmlReader, ExecuteScalar, and ExecuteNonQuery方法具有非同步版本。
      2.包含了很多新的方法和類允許你提取資料作為物件序列。例如在合適的時候使用客戶端查詢技術,如LINQ.
      3.存在的方法ExecuteReader和新的方法BeginExecuteReader不接收CommandBehavior. 引數。預設的當呼叫這些方法的時候這些方法
會自動設定CommandBehavior. 屬性到reder中用來關閉連線直到指定一個事務。

七、異常處理模組:
      1.日誌異常處理重新使用日誌模組的Log Writer and Trace Listeners 。這在之前版本中不是預設設定。
      2.增加一個功能,通過ExceptionManager.Process 方法接收一個預設值並返回一個值。

    在安裝完企業庫同時知道了5.0的變化後,就開始正式的學習了,學習的最好辦法不是看企業庫的原始碼(我是看不懂),而是下載微軟釋出的學習例子

    學習例子下載地址:點我進入下載頁面(不是直接下載)

    這個學習例子裡面已經包含了所需的類庫及程式碼演示(C#和VB.NET都有),同時可以右鍵例子中的App.config來看下例子中的模組是怎麼配置的。

    同時,在學習例子的時候可以看下由http://www.entlib.com/釋出的中文學習手冊,雖然是4.1的,但是裡面的所有內容都和5.0的例子一樣(5.0只不過是重新實現了1遍),把例子和文件結合起來看學習起來就快了很多了:

     中文學習手冊:點我進入下載頁面(不是直接下載)

到此,Entlib5的學習之路的第一步就結束了,基本上通過微軟釋出的學習例子和對應的中文學習手冊可以對5.0的使用已經有了個基本的瞭解。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-664576/,如需轉載,請註明出處,否則將追究法律責任。

相關文章