日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Spring.Net 能为我们做点什么

發布時間:2025/4/9 asp.net 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring.Net 能为我们做点什么 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文內容

  • 概述
  • 背景
  • 模塊
  • 使用場景
  • 入門應用
  • Spring.NET 相關項目

本文正式開始前,我以目前所能想到的、此時此刻能想到的,先簡單說下,為什么會有像 Spring.Net 這樣的東西。首先,第一反應,Spring.Net 可能跟 Java 里的 Spring 有關——它是 Java Spring 的 .Net 版本。但不是簡單的移植。其次,Java 的起步、發展和流行比 C# 要早。C# 1.0 遠遠不如 Java(此話不是我說的,而是普遍認為),直到 C# 2.0。那么,Java 里好的編程實踐,在 C# 中也一樣適用。

另外,當我采用面向對象編程時,接下來遇到的問題是,我如何定義類,并將它們很好的組織起來?才能使我的代碼更容易維護,包括:

  • 容易修復 BUG;
  • 修復 BUG 后,不會產生新的 BUG;
  • 應付不斷變化的需求;
  • 應付未來軟件的變化;
  • 可讀性好,其他人能很快了解你程序的總體思路等等。

剛剛開始職業生涯時,每走一步,都會遇到困難。實在不知道如何選擇。代碼,感覺這么寫行,那么寫也行……

直到看到“設計模式”。根據每個模式描述,你可以結合自己場景來選擇。比如:

  • 當你自己的程序,遇到像“算法”封裝問題時,可以使用策略模式;
  • 當你自己的程序,遇到像“改造之前系統”,或利用現有類,重新組合成一個新的類等問題時,可以使用外觀模式;
  • 當你自己的程序,遇到像“訂閱”這樣問題時,可以使用觀察者模式;
  • 當你自己的程序,遇到像僅僅只需要一個實例時,可以使用單件模式等等。

之后,你會發現,設計模式是很有用。但它還是需要你,利用 .Net 框架提供的基類,根據你的場景來重新組織你自己的類——從零開始,設計自己程序。就像架構師做的工作一樣。但不是全部,僅僅是架構師最基本的工作。

復用是我們一直追求的目標之一。

可是,真有這個必要嗎?除了核心的業務部分,我要重寫日志子系統/程序集/相關類;重寫監控子系統/程序集/相關類;重寫緩存子系統/程序集/相關類;重寫并發事務子系統/程序集/相關類等等,就算不是企業級應用程序,這幾個方面的功能我也需要啊。無論是否是客戶需要的,對于一個完整的、健壯的應用程序來說,都是需要的。

也許,這些子系統/程序集/相關類在接下來的項目中可以復用。比如引用現成的程序集,添加現有類。我們不能保證,這樣的復用,之前的代碼完全不用改動。但這樣的方式,遠遠不夠。我們需要在更高的層次,在架構上達到復用。無論什么樣的應用程序,總有那么幾個“方面的功能”是需要的。如果可以將這些“方面的功能”,可以隨意加進自己的項目,那就太好了——面向方面編程。

Spring.Net 這樣的東西可以為我們做到。

?

概述


Spring.NET 應用程序框架為企業級開發提供全面的基礎框架支持。它去掉使用基類庫附帶的復雜性完成最佳的、簡單的實踐,如測試驅動開發。Spring.NET 由http://www.springsource.com/?創建、支持和維護。

Spring.NET 的設計是基于 Java 版本的 Spring 框架,在世界范圍內很多企業級應用程序中使用。Spring.net 不是簡單的移植,它是不依賴于具體平臺,并基于已驗證的體系結構和設計模式。Spring.net 功能的廣度跨越應用程序各個層(application tier),讓你可以把它當作“一站式(one stop shop)”,但不是必需的。Spring.net 不是一個要么完全不用,要么得全部使用的解決方案。你可以單獨使用它的模塊。稍后描述這些模塊。

企業級應用程序通常由很多各種的物理層(physical tiers )組成,在每個層內,功能通常被拆分到功能層(functional layers)。如業務層(business service layer)使用數據訪問層(data access layer)中的一個對象來完成一個用例(use-case)或應用。無論如何構建你的應用程序,在一天結束時,會有各種各樣相互協作的對象,以形成適當的應用。因此,應用程序中的對象是彼此依賴的。

tier 是“層”的意思,但 layer 也是“層”。它們不同。類似于“婚禮蛋糕”與“生日蛋糕”的區別。雖然都是分層的,但從來沒見過“婚禮蛋糕”做得像“生日蛋糕”似的。比如,我們說網絡七層協議(OSI)時使用的是 layer。

如上所述,官方文檔,在談論硬件時,使用 tier,而在談論軟件結構時,則使用 layer。

.NET 平臺為構建應用程序提供了豐富的功能,從基本類型和基類(定義新類)到功能完善的應用程序服務和 Web 框架,都有很好的支持。但 .NET 平臺并沒有提供任何管理基礎應用的模塊,并將它們組合成一個相互協作的整體,這只能依靠架構師或開發人員自己完成。誠然,目前有很多用于設計業務系統的設計模式,將各種類或對象組合成能正常工作的完整的應用,如工廠模式、抽象工廠模式、生成器模式、裝飾者模式及服務定位(Service Locator)等,這些模式已被軟件行業廣泛接受。雖然,這些模式非常好,但也不過是些命了名的最佳編程方式而已。很多相關資料都會介紹這些模式的作用、應用場景、解決的問題等等。經過仔細研讀,應用到我們的自己系統中。

Spring.NET 的控制反轉(Inversion of Control,IoC)容器所解決的正是如何在企業級應用中將類、對象和服務組合成應用程序。IoC 容器通過普遍認同的方式將分散的組件組合成完整的應用程序。Spring.NET 框架所采用的都是被業界公認的、已經被定型的最佳編程方式。實際上,這些模式已經成為經典,通過 Spring.NET,我們可以直接將它們整合到我們自己的應用程序中。目前,已有很多組織和機構用 Spring 框架開發出了健壯、易于維護的應用程序。

以往,我們用 .NET 開發應用程序,都是利用 .NET framework 提供的類庫,然后,設計自己的類,以及類之間的組織方式。但軟件開發實踐表明,有些功能是軟件常用的,無論出于何種需要,比如日志、性能監控、并發事務等等。這些常用的功能就是所謂的“方面”。Spring.Net 為我們直接提供了很多“方面”,可以將這些現成的“方面”集成到我們自己的應用程序。

?

背景


2004 年初,Martin Fowler 問他網站的訪問者:何時需要控制反轉:“問題是,控制的哪些方面是反轉的?”之后,Fowler 建議重新命名(或至少給出一個更能自我描述的名字),于是,開始使用術語“依賴注入”。此后,他的文章繼續解釋控制反轉(Inversion of Control,IoC)和依賴注入(Dependency Injection,DI)原則的思想基礎。

若想了解依賴注入(IoC)和控制反轉(DI),請參看文章?http://martinfowler.com/articles/injection.html。

“控制反轉(Inversion of Control,IoC)”和依賴注入(Dependency Injection,DI)意味著將你設計好的類交給系統去控制,而不是在你的類內部控制。

?

模塊


Spring.NET 模塊如下表所示,可以讓我們大概了解 Spring.NET 都能做什么。

模塊描述
Spring.CoreSpring.Core 是框架最基本的部分,通過依賴注入讓你配置你的應用程序。下面的功能都基于這里。
Spring.Aop使用該模塊完成“面向方面編程(Aspect-Oriented Programming,AOP)”。AOP 集中于應用程序中有針對性的常見功能。Spring 的“方面”庫提供預定義的、易于使用的應用,比如事務、日志、性能監控、高速緩存、方法重試和異常處理。
Spring.Data該模塊以更高的效率和一致性實現在 ADO.NET 中數據訪問功能,和完成聲明式事務管理。
Spring.Data.NHibernate該模塊把 NHibernate 與 Spring 聲明式事務管理功能集成在一起,很容易在同一個事務內混合使用 ADO.NET 和 NHibernate 操作。NHibernate 1.0 用戶將通過易于使用的 API 來完成數據訪問操作。
Spring.Messaging該模塊可與微軟消息隊列中間件(Microsoft MSMQ message queing middleware)交互,提高抽象層次。

Spring.Messaging.NMS

該模塊可與 Apache 消息隊列中間件(Apache ActiveMQ (NMS) message queing middleware)交互,提高抽象層次。

Spring.Messaging.EMS該模塊可與 Tibco 企業級消息服務隊列中間件(Tibco Enterprise Message Service (EMS) message queing middleware)交互,提高抽象層次。
Spring.Web?
Spring.Web.Extensions
當編寫 ASP.NET Web 應用程序時,可以更有效地解決之前使用 ASP.NET 不便的地方,如數據綁定、驗證和 ASP.NET 頁面(page)/控件(control)/模塊(module)/提供者(provide)的配置,提高抽象層次。
Spring.Web.Mvc該模塊可以把 Spring.Core 和 Spring.Aop 模塊的功能集成到你的 ASP.NET MVC 2 項目。
Spring.Web.Mvc3該模塊把 Spring.Core 和 Spring.Aop 模塊的功能集成到你的 ASP.NET MVC 3 項目。
Spring.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 模塊還包含如下額外功能:

  • 表達式語言(Expression Language) - 提供高效的查詢,以及在運行時操作對象圖表。這是配置對象注入的新方式,即以 "#{…}" 作分界符,分界符里邊的內容是表達式語言;
  • 驗證框架(Validation Framework)- 為業務對象以編程或聲明式創建復雜的驗證,提供強大的用戶界面的框架;
  • 數據綁定框架(Data binding Framework)- 為完成數據綁定,提供用戶界面框架;
  • 動態反射(Dynamic Reflection)- 提供高性能反射的 API;
  • 線程(Threading)- 提供額外的并發抽象,如線程的閥門(Latch)、信號量(Semaphore)和線程本地存儲(Thread Local Storage);
  • 資源抽象(Resource abstraction)- 提供通用接口以一個多態和與協議無關的方式把文件或 URL 看作是 InputStream。

?

使用場景


你可以在很多場景,從簡單獨立的控制臺應用程序,到利用 Spring 的事務管理功能和集成 Web 框架的全面的企業級應用程序,創建程序塊。

需要注意的是,Spring 框架并不強制你使用它里邊的所有東西;它不是一個要么不用,要么全用的解決方案。現有的通過標準 ASP.NET 創建的前端(界面),通過 Spring 提供的事務和/或數據訪問功能,可以與基于 Spring 的中間件很好地集成在一起。你需要做的唯一事情是,使用 Spring 的控制反轉容器連接你的業務邏輯,并使用 WebApplicationContext 把它集成到你的 Web 層,以便找到中間層服務和/或用依賴注入配置你的 ASP.NET 頁面。

雖然,Spring 框架不會強制任何特定的應用程序架構,但它鼓勵一個區分表現層、服務層、數據訪問層和數據庫層的、有良好分層的應用程序架構。

?

入門應用


Spring.Net 有幾個示例程序,在其安裝目錄。這些示例展示了 Spring.Net 的各個特性。

如果你已熟悉依賴注入、AOP,或有使用 Spring 框架 Java 版本的經驗,那么你可以跳過這些示例。

  • Movie Finder - 利用 Spring 的控制反轉容器,演示依賴注入技術
  • 應用程序上下文(Application Context)- 演示 IoC 容器,如本地化、ResourceSet? 對象的訪問,以及把資源應用到對象屬性
  • 面向方面編程(Aspect Oriented Programming)- 演示利用 AOP 框架向現有的對象添加額外的行為
  • 分布式計算(Distributed Computing)- 演示遠程服務事務的計算器,使你通過 .NET Remoting、Web 服務,或一個企業級服務組件導出一個普通的 CLR 對象(POCO)。同時,也演示了相應的客戶端代理
  • WCF - 展示一個 WCF 基于計算器的例子,通過依賴注入配置 WCF 服務和應用 AOP 通知
  • Web Application - SpringAir - 該機票預訂系統演示了 ASP.NET 框架,展示 ASP.NET 頁面、數據綁定、驗證和本地化的依賴注入
  • Web Development - 演示在 ASP.NET 中使用依賴注入和Spring 的雙向數據綁定的初級例子
  • ASP.NET MVC2 - 演示把依賴注入和容器集成到 ASP.NET MVC 2 的初級例子
  • ASP.NET MVC3 - 演示把依賴注入和容器集成到 ASP.NET MVC 3 的初級例子
  • 數據訪問(Data Access)- 演示如何簡化基于數據訪問層的 ADO.NET 框架
  • 事務管理(Transaction Management)- 演示為本地和分布式事務在 .NET 中使用聲明式事務管理
  • AJAX - 演示如何在客戶端 JavaScript 中,把 webservice 作為一個普通的 CLR 對象(POCO)訪問
  • NHibernate Northwind - 演示簡化 NHibernate 使用的 Spring NHibernate 集成。Web 層(web tier)也包含了如何使用 Open-Session In View approach 在 Web 層進行會話管理
  • Quartz Quickstart - 演示使用 Quartz.NET 集成進行調度
  • MSMQ - 演示 MSMQ
  • NMS - 演示 NMS

?

Spring.NET 相關項目


除了 Spring.NET 項目本身,還有很多與其相關的項目。這些項目提供超出核心 Spring.NET 框架的額外功能。從增強配置工具和庫,到 REST 客戶端,以支持額外的消息框架和標準。如下表所示。

Spring.NET CodeConfig

通過標準的 .NET 代碼,而不是 XML 配置,提供配置 Spring 容器的功能

See?http://springframework.net/codeconfig/?for resources, downloads, and more information

Spring.NET REST Client

簡化與 HTTP 服務器之間的通信,執行 RESTful。它處理 HTTP 連接,使應用程序代碼提供的網址(可能是模板變量),并提取結果。

See?http://springframework.net/rest/?for resources, downloads, and more information

Spring.NET AMQP

supports the Spring programming model with AMQP, especially but not limited to RabbitMQ

See?http://springframework.net/amqp/?for resources, downloads, and more information

Spring.NET Visual Studio Add-In

在 VS.NET 2010 中,提供發布 Spring XML 配置的智能感知幫助

See?http://springframework.net/vsaddin/?for resources, downloads, and more information

鼓勵 Spring.NET 使用者開發超出 Spring.NET 框架核心的相關項目,提高開發者的效率。

?

轉載自http://www.cnblogs.com/liuning8023/archive/2012/07/07/2580616.html

轉載于:https://www.cnblogs.com/linyefeilyft/p/3374307.html

總結

以上是生活随笔為你收集整理的Spring.Net 能为我们做点什么的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。