(.net)框架的程序設計

.net 框架程序設計:

1.什麼是模式?

模式,即pattern。其實就是解決某一類問題的方法論。你把解決某類問題的方法總結歸納到理論高度,那就是模式。

Alexander給出的經典定義是:每個模式都描述了一個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需在重複相同的工作。

模式有不同的領域,建築領域有建築模式,軟件設計領域也有設計模式。當一個領域逐漸成熟的時候,自然會出現很多模式。

什麼是框架?

框架,即framework。其實就是某種應用的半成品,就是一組組件,供你選用完成你自己的系統。簡單說就是使用別人搭好的舞臺,你來做表演。而且,框架一般是成熟的,不斷升級的軟件。

2.爲什麼要用模式?

因爲模式是一種指導,在一個良好的指導下,有助於你完成任務,有助於你作出一個優良的設計方案,達到事半功倍的效果。而且會得到解決問題的最佳辦法。

爲什麼要用框架?

因爲軟件系統發展到今天已經很複雜了,特別是服務器端軟件,設計到的知識,內容,問題太多。在某些方面使用別人成熟的框架,就相當於讓別人幫你完成一些基礎工作,你只需要集中精力完成系統的業務邏輯設計。而且框架一般是成熟,穩健的,他可以處理系統很多細節問題,比如,事物處理,安全性,數據流控制等問題。還有框架一般都經過很多人使用,所以結構很好,所以擴展性也很好,而且它是不斷升級的,你可以直接享受別人升級代碼帶來的好處。

框架一般處在低層應用平臺(如J2EE)和高層業務邏輯之間的中間層。

軟件爲什麼要分層?

爲了實現“高內聚、低耦合”。把問題劃分開來各個解決,易於控制,易於延展,易於分配資源…總之好處很多啦:)。

3.以下所述主要是JAVA,J2EE方面的模式和框架:

常見的設計模式有什麼?

首先,你要了解的是GOF的《設計模式--可複用面向對象軟件的基礎》一書(這個可以說是程序員必備的了),注意:GOF不是一個人,而是指四個人。它的原意是Gangs Of Four,就是“四人幫”,就是指此書的四個作者:Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides。這本書講了23種主要的模式,包括:抽象工廠、適配器、外觀模式等。

還有其他的很多模式,估計有100多種。

軟件設計模式太多,就我的理解簡單說一下最常見的MVC模式。

MVC模式是1996年由Buschmann提出的:

模型(Model):就是封裝數據和所有基於對這些數據的操作。

視圖(View):就是封裝的是對數據顯示,即用戶界面。

控制器(Control):就是封裝外界作用於模型的操作和對數據流向的控制等。

另外:

RUP(Rational Unified Process)軟件統一過程,XP(Extreme Programming)極端編程,這些通常被叫做“過程方法”,是一種軟件項目實施過程的方法論,它是針對軟件項目的實施過程提出的方法策略。也是另一個角度的模式。

4.常見的JAVA框架有什麼?

WAF:

全稱:WEB APPLICATION FRAMEWORK

主要應用方面:EJB層,(WEB層也有,但是比較弱)。

主要應用技術:EJB等

出處:http://java.sun.com/blueprints/code/index.html

簡述:這是SUN在展示J2EE平臺時所用的例子PetStore(寵物商店系統)裏面的框架。是SUN藍皮書例子程序中提出的應用框架。它實現了 MVC和其他良好的設計模式。SUN的網站上有技術資料,最好下載PetStore來研究,WEBLOGIC裏自帶此係統,源碼在bea/weblogic700/samples/server/src/petstore。這是學習瞭解J2EE的首選框架。

Struts:

主要應用方面:WEB層。

主要應用技術:JSP,TagLib,JavaBean,XML等

出處:http://jakarta.apache.org/struts/index.html

簡述:這是APACHE的開源項目,目前應用很廣泛。基於MVC模式,結構很好,基於JSP。Jbuilder8裏已經集成了STRUTS1.02的製作。

簡述WAF+STRUTS結合的例子:WEB層用STRUTS,EJB層用WAF:

JSP(TagLib)——>ActionForm——>Action ——> Event——>EJBAction——>EJB  ——>DAO——>Database JSP(TagLib) (forward) <——Action <——EventResponse<——

Turbine:

主要應用方面:WEB層。

主要應用技術:servlet等

出處:http://jakarta.apache.org/turbine/index.html

簡述:這是APACHE的開源項目。基於SERVLET。據說速度比較快,基於service(pluggable implementation可插拔的執行組件)的方式提供各種服務。

COCOON:

主要應用方面:WEB層。

主要應用技術:XML,XSP,servlet等

出處:http://cocoon.apache.org/2.0/

簡述:這是APACHE的一個開源項目。基於XML,基於XSP(通俗地說,XSP是在XML靜態文檔中加入Java程序段後形成的動態XML文檔。)。特點是可以與多種數據源交互,包括文件系統,數據庫,LDAP,XML資源庫,網絡數據源等。

ECHO:

主要應用方面:WEB層。

主要應用技術:servlet  

出處:http://www.nextapp.com/products/echo/

簡述:nextapp公司的一個開源項目。基於SERVLET。頁面可以做的很漂亮,結合echopoint,可以作出很多圖形效果(裏面用了jfreechart包)。使用SWING的思想來作網頁,把HTML當作JAVA的類來做。但是大量使用Session,頁面分幀(Frame)很多,系統資源消耗很大。

JATO:

全稱:SUN ONE Application Framework

主要應用方面:WEB層。

主要應用技術:JSP,TagLib,JavaBean等

出處:http://www.sun.com/

簡述:這是SUN推出的一個商業性框架,一看名字就知道是結合SUN ONE的平臺推出的。我下載了JATO2.0看了一下,感覺有些簡單,使用了JSP+TagLib+JavaBean。如他的DOC所說JATO是適合用在小的WEB應用裏。

TCF:

全稱:Thin-Client Framework

主要應用方面:JAVA GUI。

主要應用技術:JAVA application等

出處:http://www.alphaworks.ibm.com/tech/tcf

簡述:這是IBM出的一個框架。基於MVC模式,基於JAVA Application。推薦一篇介紹文章:http://www-900.ibm.com/developerWorks/cn/java/j-tcf1/index.shtml

.net 平臺構成

1 底層操操作系統 windows

由於Web服務和使用Web服務的應用程序仍然運行在計算機上,而且既然是計算機都 要有外設,所以我們仍然需要一個操作系統.. Windows添加了Xml支持.. Windows XP和Windows.net (現在改名爲windows Server 2003 ) 所有版本都都 爲服務驅動的世界提供最好的支持.

特別地windowsXp和Windows 2003 Server 集成了Microsoft .net Passport Xml Web服務支持.Passport是一種用戶認證服務..當登錄使用Passport認證的Web站點和Web服務時的效率將會大提升.換句話說,用戶在訪問不同的互聯網着站點時,將不再需要每次都輸入用戶名和密碼.

另外Windows XP 和 Windows Server 2003 都提供了對.net框架的內置支持.

2 輔助產品:.net 企業服務器

這些產品主要是爲企業的信息化和信息集成提供幫助的.

Microsoft Application Center

Microsoft BizTalk Server 2000 (現在出了個新版本)

Microsoft Commerce Server 2000

Microsoft Exchange 2000 郵件服務器

Microsoft HostIntegration Server 2000

Microsoft Internet Security and Acceleration(ISA) Server 2000

Microsoft Mobile Information Server 2002

Microsoft SQL Server 2000

這個產品剛開始跟我們的.net平臺其實沒什麼關係.但以後可能爲將一些.net特性集成到這些這些產品中, 目前新版的BizTalk 就集成了.net特性,差且通過vs.net 2003進行開發.

3 Microsoft XML Web 服務: .net My Servers

微軟作爲一個Web服務的底層技術提供商的同時,也推出了自己的XML Web服務

.net Alerts

.net ApplicationSettings

.net Calendar

.net Categories

等等……

4開發平臺:.NET 框架

.net 框架包含兩個部分: 通用語言運行時(Common Language Runtime---CLR) 和.net 框架類庫(Framework Class libarary --FCL) .

.net 框架是.net平臺最關鍵的部分.

本書討論的就是開發面向.net 框架的應用程序和XML Web服務.



.net 框架開發平臺可以允許我們創建各種各樣的應用程序:XML Web服務、Web窗體,Win32 GUI程序,Win32 CUI 應用程序, Windows服務、實用程序、以及獨立的組件模塊。

Windows 2003 Server 內置了.NET框架



Microsft .net 框架爲開發人員提供的技術比任何以前的微軟發平臺提供的技術都要多,比如代碼重用、代碼專業化、資源管理、多語言開發、安全、部署、管理等。在設計.net 框架時,微軟還感到有必要改進目前Windows平臺的某些缺陷。

CLR和FCL提供的部分服務:

l 一致的編程模型

現在的Windows操作系統,某些功能需要通過動態鏈接庫DLL來訪問,而某些功能又是通過COM對像來訪問。 在.net 框架下,所有的應用程序服務都將以一種一致的、面向對像的編程模型提供給開發人員。

l 簡化的編程方式

CLR的其中一個目的就是簡化Win32和COM 環境下所需要的各種繁雜的基礎構造。在CLR下,我們可以不需要 註冊表、全局惟一標識符、Iunknown 、AddRef、Release、HRESULT等。

l 可靠的版本機制

.net 框架採用了一種新型的版本機制來隔離應用程序組件,可以保證一個應用程序總能加載當初生成的測試時所使用的組件。 徹底關上了“DLL hell“的大門。

l 輕便的部署管理

在.net框架下,組件將不再受註冊表的任何引用。大多數.net框架應用程序的安裝工作所需要的只不過是將文件拷貝到一個目錄中。然後添加快捷方式都桌面、開始菜單就行了

l 廣泛的平臺支持

編譯後的.NET框架的源代碼實際上是通用中間語言(Common Intermediate Language) 只有在運行時,CLR纔會將這些中間語言翻譯爲CPU指令。這就意味着只要一臺機中包含有與ECMA兼容的CLR和FCL,我們便可以將.NET框架應用程序部署在該機上。

l 無縫的語言集成

CRL要求所有面向它的語言都要遵循一種稱作通用類型系統(Common Type System,簡稱CTS)的規範和通用語言規範

l 簡便的代碼重用

l 自動化的內存管理(垃圾收集)

CLR爲我們自動追蹤資源的使用情況。

l 堅實的類型安全

CLR可以確保所有的代碼都是類型安全的。

l 豐富的調試支持

CLR完全支持跨語言調試

l 統一的錯誤報告

CLR中,所有的失敗的調用是通過異常來報告的。

l 全新的安全策略

傳統的安全機制都是基於用戶賬號來控制的。

CLR中的代碼訪問安全爲我們提供了以代碼爲中心的控制方式。

l 強大的互操作能力

.net框架完全支持COM ,以及傳統DLL中的Win32函數。

5 集成開發環境 Visual Studio .Net

微軟的Visual Stuaio .net 2003是最好的.net 框架應用程序開發工具。

總結:

這一章主要講了.net平臺的構成和.net平臺的最關鍵部分---CLR和FCL的特點。

.net框架的13大特點:

1. 一致的編程模型

2. 簡化的編程方式

3. 可靠的版本機制

4. 輕便的部署管理

5. 廣泛的平臺支持

6. 無縫的語言集成

7. 簡便的代碼重用

8. 自動化的內存管理(垃圾收集)

9. 堅實的類型安全

10. 豐富的調試支持

11. 統一的錯誤報告

12. 全新的安全策略

13. 強大的互操作能力

其實我個人感覺第5條目前來說還不是很有意義 ,因爲至現在爲止.net框架只能在windows上很好的使用,聽說出了個mono但目前還不是很成熟吧? 第12條其實非常重要,基於用戶帳號的安全機制對於互聯網來說是不太安全的,這直接會影響到.net的普及程度,也就影響到我的飯碗 :)。

還有就是微軟的那些企業服務器我只知道一部分的用途,另一部分壓根不知道是幹什麼用的。也沒有時間主動去找相關資料。前段時間參加了微軟開發者日才知道BizTalk是幹什麼用的。那個主講人也挺牛。資料上寫的暈暈乎乎的東西,被他講的清晰明瞭,一聽就懂啊。

技術或語言特性或者說一些集成方案,只有瞭解它,纔會去主動去使用它,但問題是,很多情況下不使用它也可以正常工作,只不過花費的時間和代價更高。而我在用更高的代價解決問題時,並不知道有一種更好的解決辦法存在,而且就在我身邊。我沒有太多時間去研究層出不窮的名詞背後的技術和特性。

有兩個辦法解決這個問題: 儘量的去了解各種新的事物,哪怕你剛開始認爲它跟你的工作和興趣風牛馬不相及。另外一個就是期望那些提供商(比如微軟)在宣傳時更多的突出 程序員可以用那些產品解決實際應用中的哪些問題。

原文地址:http://dotnet.csdn.net/page/c290a6b8-a40c-431a-a738-b28731eff9e5

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