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框架開發出了強壯的、維護性好的應用程序,這確實是一件非常好的事情。
? 在2004年初,Martin Fowler曾經問他網站的讀者:當我們談到控制反轉時,“問題是,它們反轉的是哪方面的控制?”。隨后Fowler建議為控制反轉重新命名(或者起碼給它一個更具自我描述性的名字),所以依賴注入(Dependency Injection)這一術語才得以使用。Fowler在論文中也討論了控制反轉和依賴注入原理背后的一些概念。如果您需要了解正宗的IoC和DI理論,可以參考這篇論文:http://martinfowler.com/articles/injection.html。
Spring.NET框架包含了許多功能方面,它們都進入如下圖所示的模塊組織。下圖顯示了Spring.NET各核心模塊。
?
Spring.Core作為整個框架的基礎,實現了依賴注入的功能。Spring.NET的大部分模塊都要依賴或擴展該模塊。Spring.Core的基礎是IObjectFactory接口,該接口用一個簡單而優雅的方式實現了工廠模式,使我們可以無需自行編寫singleton類型和眾多的服務定位器,并允許將對象配置及其依賴關系與具體的程序邏輯解耦。該模塊中的IApplicationContext接口是IObjectFactory的擴展,增加了諸多企業級功能,包括使用資源文件進行文本本地化、事件傳播和資源裝載等等。
Spring.AOP為業務對象提供面向方面編程(AOP)的支持。AOP完善了IoC容器的功能,為創建企業應用和使用聲明式服務奠定了堅實的基礎。
Spring.Data定義了一個抽象的數據訪問層,可以跨越各種數據訪問技術(從ADO.NET到各種ORM)進行數據訪問。該模塊包含一個ADO.NET的抽象層,減少了使用傳統ADO.NET進行編碼和事務管理時的工作量。
Spring.Data.NHibernate使用此模塊集成到Spring的聲明式事務管理功能NHibernate的能容易地操作ADO.NET和NHibernate的混合在同一事務。 NHibernate的1.0用戶將受益于易于使用的API來執行數據訪問操作。
Spring.Web使用此模塊,以抽象方式編寫ASP.NET Web應用程序時允許你有效地解決共同的棘手問題,如在ASP.NET數據綁定,驗證和ASP.NET母板頁、控件、模塊、驅動配置。
Spring.Web.Extensions 使用此模塊,可以輕松公開一個平原。NET對象(PONO),這是一個沒有任何屬性或特殊基類作為Web Service,通過依賴注入配置,應用AOP,并暴露在客戶端的JavaScript。
Spring.Services - 使用此模塊,以適應平原。使他們能夠與特定的分布式通信技術等。NET Remoting的,企業服務,ASMX Web Service,和WCF服務,使用NET對象。這些服務可以通過依賴注入配置和應用AOP。
Spring.Testing.NUnit - 使用此模塊進行整合NUnit的測試。
Spring.Testing.Microsoft - 使用此模塊進行集成測試框架與微軟(MSTest的)測試。
Spring.Messaging - 使用此模塊,以提您高效的創建Microsoft消息隊列(MSMQ)應用程序堅實基礎的最佳做法。
Spring.Messaging.Nms - 使用此模塊,以提您高效的創建Apache ActiveMQ的應用程序,堅實基礎的最佳做法。
Spring.Messaging.Ems - 使用此模塊,以提您高效的創建TIBCO公司環境管理體系的應用程序堅實基礎的最佳做法。
Spring.Scheduling.Quartz - 提供與Quartz.NET工作提供Quartz jobs,調度聲明配置調度一體化,觸發器以及一些方便的類以提高生產率在建立工作調度應用。
Spring.Template.Velocity - 輔助類配置NVelocity模板引擎在Spring.NET的應用程序。
《Spring.NET學習筆記》系列博客主要是我本人對Spring.NET一個學習鞏固的過程。該過程分為五個階段:控制反轉與依賴注入、面向切面編程、集成NHibernate與ASP.NET MVC開發、面向服務編程、擴展集成。而在最我又補充了一個項目的實戰應用“企業架構體系實戰”,我想這樣對全面了解Spring.NET有所幫助。
我個人認為,Spring.NET是目前最強大的IoC&AOP框架之一,到目前為止,在.NET中很少有其它框架能與Spring.NET一較高下,而Spring.NET框架的功能覆蓋面很廣,適合大型企業、網站的項目開發及應用,并能有效地在大型項目開發中幫助我們,同時Spring.NET也可以稱為.NET應用程序中的“輕量級J2EE架構體系”。我撰寫《Spring.NET學習筆記》系列博客的主要目的是為了推廣Spring.NET框架,讓更多的朋友掌握這個框架,因為Spring.NET的確是一個很好的框架。并希望越來越多的朋友加入到Spring.NET框架的學習和運用過程中。
因為個人原因,明天(11月21日)我要踏上回家的旅途,《Spring.NET學習筆記》系列博客尚有幾篇未完工,我家鄉所在的城市還不能上網,可能下次更新博客是在過年后,希望各位支持我、支持Spring.NET的朋友能夠諒解。
在學習Spring.NET的過程中,一直有很多朋友支持我,尤其是《Spring.net小組》的朋友,希望喜歡Spring.NET的朋友能夠加入這個充滿熱情的小組。
?
《Spring.NET學習筆記》系列博客主要參考 :
Spring.NET中文手冊,Spring.NET1.3英文文檔和Spring.NET官方網站
?
? 返回目錄
轉載于:https://www.cnblogs.com/GoodHelper/archive/2009/11/21/SpringNet_blogs.html
總結
以上是生活随笔為你收集整理的Spring.NET学习笔记——前言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转:C# Interview Quest
- 下一篇: C#多线程函数如何传参数和返回值