1. 程式人生 > >Spring.NET依賴註入框架學習--概述

Spring.NET依賴註入框架學習--概述

多功能 msm stream 圖片 線程 應用程序框架 核心 服務層 blank

Spring.NET依賴註入框架學習--Spring.NET簡介

概述

  Spring.NET是一個應用程序框架,其目的是協助開發人員創建企業級的.NET應用程序。它提供了很多方面的功能,比如依賴註入、面向方面編程(AOP)、數據訪問抽象及ASP.NET擴展等等。Spring.NET以Java版的Spring框架為基礎,將Spring.Java的核心概念與思想移植到了.NET平臺上。

企業級應用一般由多個物理層組成,每個物理層也經常劃分為若幹功能層。不同層次之間需要相互協作,例如,業務服務層一般需要使用數據訪問層的對象來實現某個用例。不管應用程序如何構建,最終都會表現為一系列相互協作的對象,這些對象一起組成了完整的應用程序。所以我們說,應用程序中的對象之間相互具有依賴性。

.NET平臺為構建應用程序提供了豐富的功能,從非常基礎的基元類型和基礎類庫(以及定義新類的方法),到功能完善的應用程序服務器和Web框架,都有很好的支持。但.NET平臺本身並沒有提供任何方式來管理基礎的應用模塊並將它們組合為一個相互協作的整體,只能依靠架構師或開發人員去創建(一系列)應用程序。誠然,目前有很多設計模式可用於業務系統的設計,我們可以使用這些模式將各種類或對象組合成能夠正常工作的完整應用。工廠、抽象工廠、Builder、裝飾及服務定位器(Service Locator)等模式已被現今的軟件開發行業廣泛接受和采用(這也許正是這些模式最早被定型為模式的原因)。這些模式都非常好,但也不過是些已命名的最佳編程方法,在對這些模式的介紹中一般還會說明它們是作什麽用的、最好應用到什麽場合、可以解決什麽問題等等。我們可以從許多書籍和wiki上找到這些模式,然後仔細研讀,然後實現在我們自己的應用中。

Spring.NET的IoC容器所解決的,正是如何在企業應用中將類、對象和服務組合成應用程序的問題。IoC容器通過很正統(按:formalized,言下之意是這些方式都是已經定型了的、經過了業界多年考驗的)的方式將分散的組件組合成完整的應用程序。Spring.NET框架所采用的,都是被業界無數應用程序考驗多年的、已經被定型為設計模式的最佳編程方式,實際上,這些模式已經成為我們架構和開發時的法典,而通過Spring.NET,我們可以直接將它們整合到自己的應用程序中。目前已有很多組織和機構用Spring框架開發出了強壯的、維護性好的應用程序,這確實是一件非常好的事情。

Spring.NET模塊組成

Spring.NET框架包括很多功能,這些功能被很好的組織進一系列模塊當中,其核心模塊組成如下圖所示。

技術分享圖片

Spring.Core -------作為整個框架的基礎,實現了依賴註入的功能。Spring.NET的大部分模塊都要依賴或擴展該模塊

Spring.Aop ——為業務對象提供面向方面編程(AOP)的支持

Spring.Data ——使用這個 模塊來實現更高的效率和寫入數據的一致性 在ADO訪問功能。 網和執行聲明式事務 管理。

Spring.Data.NHibernate 使用這個模塊 與Spring的聲明式事務管理集成NHibernate 功能允許容易混合的ADO。 凈和NHibernate操作 在同一事務。 NHibernate 1.0用戶將受益於安逸 使用api來執行數據訪問操作。

Spring.Messaging 使用這個模塊 提高抽象層次與微軟MSMQ交互 那些排隊消息中間件

Spring.Messaging.NMS ——使用這個 模塊與Apache交互時提高抽象層次 ActiveMQ消息那些排隊的中間件(NMS)

Spring.Messaging.EMS ——使用這個 模塊提高抽象層次和Tibco交互時 那些排隊企業消息服務(EMS)消息中間件

Spring.Web ——編寫ASP.NET Web應用程序時,使用此模塊可以提高抽象級別,從而可以有效地解決ASP.NET中常見的難題,如數據綁定,驗證和ASP.NET頁面/控件/模塊/提供程序配置。

Spring.Web.Mvc ——使用此模塊將Spring.Core和Spring.Aop模塊的功能集成到ASP.NET MVC 2項目中。

Spring.Web.Mvc3 ——使用此模塊將Spring.Core和Spring.Aop模塊的功能集成到ASP.NET MVC 3項目中。

Spring.Web.Extensions 在編寫ASP.NET Web應用程序時,使用此模塊可以提高抽象級別(抽象),使您可以有效地解決ASP.NET中的常見問題,如數據綁定,驗證和ASP.NET頁面/ control / module / provider配置。

services ——使用此模塊來調整純CLR對象,以便它們可以與特定的分布式通信技術(如.NET Remoting,Enterprise Services和ASMX Web Services)一起使用。這些服務可以通過依賴註入來配置,通過應用AOP來進行“裝飾”。

Spring.Testing.NUnit ——使用這個 NUnit模塊進行集成測試。

Spring.Testing.MSTest ------使用這個模塊 與MSTest執行集成測試

Spring.Scheduling.Quartz ——使用此模塊來支持與Quartz.NET作業調度程序基礎結構進行交互。

Spring.Core模塊還包含以下附加功能

  • 表達式語言 - 在運行時提供高效的查詢和操作對象圖。
  • 驗證框架 - 一個強大的用戶界面不可知的框架,用於以編程或聲明的方式為業務對象創建復雜的驗證規則。
  • 數據綁定框架 - 用於執行數據綁定的UI不可知框架。
  • 動態反射 - 提供高性能的反射API
  • 線程 - 提供額外的並發性(並發性)抽象,如鎖??存,信號量和線程本地存儲。
  • 資源抽象(Resource Abstraction) - 提供了一個通用的接口來處理來自文件和URL的多態(多態)和協議無關的InputStream。

Spring.NET文檔

具體詳細介紹:這裏有Spring.NET1.3.2版本文檔官網下載的

spring-net-reference.zip

Spring.NET源碼下載

官網:http://www.springframework.net/

GitHub地址:https://github.com/spring-projects/spring-net

可以看到最新版Spring.NET1.3.2以及下面的老的版本如圖所示

技術分享圖片

這裏本人下載Spring.ENT-1.3.1版本(非最新)

技術分享圖片

目錄介紹

技術分享圖片

Spring主要核心模塊代碼

技術分享圖片

Spring.NET 編譯生成的動態庫文件

技術分享圖片

開發中經常使用的Spring.NET動態庫文件

Common.Logging.dll(必要)
Spring.Core.dll(必要)
Spring.Data.dll
Spring.Aop.dll(可選)
Spring.Data.NHibernate21.dll
Spring.Web.dll

Spring.NET依賴註入框架學習--概述