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框架開發出了強壯的、維護性好的應用程序,這確實是一件非常好的事情。

2.2. 背景

在2004年初,Martin Fowler曾經問他網站的讀者:當我們談到控制反轉時,“問題是,它們反轉的是哪方面的控制?”。隨後Fowler建議爲控制反轉重新命名(或者起碼給它一個更具自我描述性的名字),所以依賴注入(Dependency Injection)這一術語才得以使用。Fowler在論文中也討論了控制反轉和依賴注入原理背後的一些概念。如果您需要了解正宗的IoC和DI理論,可以參考這篇論文:http://martinfowler.com/articles/injection.html

2.3. 模塊

Spring.NET框架包括很多功能,這些功能被很好的組織進一系列模塊當中,如下圖所示。Spring.NET 1.0包括完整的IoC容器和AOP類庫。1.1版將加入Web、ORM和數據模塊。Spring.NET的下載包中並不包含與其它類庫(如NHibernate,TIBCO EMS,Anthem,和IIOP.NET)集成的模塊,如果需要您可以單獨下載。下圖爲Spring.NET的各個核心模塊。灰色陰影部分在1.0版中已經可用了,其它模塊會在未來版本中陸續發佈。目前可以從我們的網站上單獨下載這些新的模塊。

 

Spring.Core作爲整個框架的基礎,實現了依賴注入的功能。Spring.NET的大部分模塊都要依賴或擴展該模塊。Spring.Core的基礎是IObjectFactory接口,該接口用一個簡單而優雅的方式實現了工廠模式,使我們可以無需自行編寫singleton類型和衆多的服務定位器,並允許將對象配置及其依賴關係與具體的程序邏輯解耦。該模塊中的IApplicationContext接口是IObjectFactory的擴展,增加了諸多企業級功能,包括使用資源文件進行文本本地化、事件傳播和資源裝載等等。

Spring.AOP爲業務對象提供面向方面編程(AOP)的支持。AOP完善了IoC容器的功能,爲創建企業應用和使用聲明式服務奠定了堅實的基礎。

Spring.Web對ASP.NET進行了一系列功能擴展,包括對ASP.NET頁面進行依賴注入、雙向數據綁定、在ASP.NET 1.1中使用Master page、以及增強的本地化功能支持等。

Spring.Services允許將任意的“普通”對象(意爲沒有繼承任何指定基類型的對象)發佈爲企業服務(COM+)或遠程對象。通過依賴注入和特性元數據覆蓋等功能,該模塊可使.NET的Web服務獲得極大的靈活性。同時也支持Windows後臺服務。

Spring.Data定義了一個抽象的數據訪問層,可以跨越各種數據訪問技術(從ADO.NET到各種ORM)進行數據訪問。該模塊包含一個ADO.NET的抽象層,減少了使用傳統ADO.NET進行編碼和事務管理時的工作量。

Spring.ORM爲時下流行的ORM類庫提供了一個整合層,其中包含聲明式事務管理等諸多功能。

本文是對Spring.NET功能的參考性指南。因爲本文尚未完成,所以,如果您有什麼問題或需要,請在我們的用戶論壇上發帖,網址爲forum.springframework.net。最新版的文檔可以從這裏下載

2.4. 許可證信息

Spring.NET使用Apache許可證2.0版的條款。該許可證的全部內容請參看http://www.apache.org/licenses/LICENSE-2.0,或閱讀Spring.NET根目錄下的license.txt文檔。

2.5. 支持

Interface21提供相關的培訓和支持,您可以從Spring.NET網站的郵件列表和支持論壇找到部分信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章