盡管微軟和.NET社區(qū)一直都是經(jīng)常對(duì)立的,但是最近幾年都加入到了開(kāi)源運(yùn)動(dòng)的陣營(yíng)中來(lái)了。而且依靠開(kāi)源,微軟社區(qū)中的開(kāi)源開(kāi)發(fā)工具日益發(fā)展壯大。本文將深入介紹六個(gè)在全球受到數(shù)百萬(wàn).NET開(kāi)發(fā)者擁戴的開(kāi)源項(xiàng)目。
AJAX 控件工具包
僅僅五年時(shí)間,自從AJAX的概念提出來(lái)以后,使用JAVASCRIPT,XML和異步通信去提升用戶(hù)的在線(xiàn)體驗(yàn)已經(jīng)從新穎的想法變?yōu)閷?shí)在的需要。因?yàn)锳JAX驅(qū)動(dòng)的要求已經(jīng)變得很普通,不久開(kāi)發(fā)者們都投入到開(kāi)發(fā)AJAX框架中去,這使得像日歷和客戶(hù)端表單驗(yàn)證這樣的功能變得很容易實(shí)現(xiàn)。
.NET開(kāi)發(fā)者在處理AJAX方面有ASP.NET AJAX Control Toolkit工具包這個(gè)很好的解決方案。它由微軟公司和開(kāi)發(fā)者社區(qū)聯(lián)合開(kāi)發(fā),提供了多種功能強(qiáng)大的控件,如評(píng)分控件,模態(tài)彈出窗口,密碼強(qiáng)度驗(yàn)證器,可拖拉的面板。
可以查看ASP.NET主頁(yè)上該項(xiàng)目的主頁(yè),上面有控件示例的清單和例子,除此之外,還有大量的導(dǎo)學(xué)文章,能指導(dǎo)如何充分利用工具包的很多特性。
Mono
2002年,.NET 1.0的出現(xiàn)是軟件開(kāi)發(fā)領(lǐng)域中的一個(gè)分水嶺,在眾多特性中,它可以讓開(kāi)發(fā)者使用任何支持.NET公共運(yùn)行時(shí)的語(yǔ)言去開(kāi)發(fā)應(yīng)用。當(dāng)然,微軟將WINDOWS平臺(tái)作為.NET運(yùn)行的主要平臺(tái),這對(duì)象LINUX等其他系統(tǒng)來(lái)說(shuō)是個(gè)噩夢(mèng)。然而因?yàn)?NET是基于一系列公開(kāi)的標(biāo)準(zhǔn)的,一些企業(yè)組織的開(kāi)發(fā)者開(kāi)發(fā)了Mono項(xiàng)目,能讓.NET可以運(yùn)行在非微軟平臺(tái)上。
現(xiàn)在由于Novell公司的大力支持,Mono項(xiàng)目這些年發(fā)展得相當(dāng)迅速,它不但能讓.NET跑在非微軟的平臺(tái)上,也支持在LINUX上運(yùn)行Sliverlight技術(shù)(目前代號(hào)為Monnlight),甚至開(kāi)始研究在使用C#語(yǔ)言去編寫(xiě)iPhone上的應(yīng)用。
可以到Mono的主頁(yè)上去查看更多的相關(guān)信息,除此之外還可以去下載Mono專(zhuān)門(mén)為Visual Studio開(kāi)發(fā)的插件工具。
NHibernate
盡管在軟件開(kāi)發(fā)中,關(guān)系數(shù)據(jù)庫(kù)的應(yīng)用是很普遍了,但開(kāi)發(fā)者和數(shù)據(jù)庫(kù)之間還是存在一些壁壘。問(wèn)題關(guān)鍵在于如何高效地在應(yīng)用和數(shù)據(jù)庫(kù)之間以各自支持的格式轉(zhuǎn)換數(shù)據(jù)。開(kāi)發(fā)者盡了很大的努力創(chuàng)造了很多方便轉(zhuǎn)換的工具,其中最著名的是象Hibernate這樣的對(duì)象關(guān)系映射框架(ORM)
.NET開(kāi)發(fā)者在處理ORM方面有NHibernate這樣的工具,自從2005年它出現(xiàn)后,廣為受到開(kāi)發(fā)者的歡迎。NHibernate能完成.NET開(kāi)發(fā)者面對(duì)的大量枯燥的數(shù)據(jù)日常操作,不僅在映射應(yīng)用的模型到數(shù)據(jù)表上很有作用,而且能根據(jù)預(yù)先定義好的數(shù)據(jù)模型去產(chǎn)生表的模型定義。
NHibernate的網(wǎng)站上提供了大量的有用的資源,能幫助你去了解這個(gè)強(qiáng)大的ORM解決方案框架
ASP.NET MVC
MVC的架構(gòu)在現(xiàn)在的Web開(kāi)發(fā)中起著重要的作用,象Ruby on Rails,Zend Framwork等框架都是使用MVC框架進(jìn)行開(kāi)發(fā)的。多虧有了ASP.NET MVC框架,.NET開(kāi)發(fā)者也能夠擁有一個(gè)功能強(qiáng)大的MVC框架了。ASP.NET MVC框架提供了MVC的良好分層,測(cè)試驅(qū)動(dòng)以及“約定優(yōu)先”的最佳實(shí)踐,為.NET開(kāi)發(fā)者構(gòu)建復(fù)雜的網(wǎng)頁(yè)提供了強(qiáng)大的解決方案。因?yàn)槭腔?NET構(gòu)建的,開(kāi)發(fā)者能充分利用ASP.NET的諸如數(shù)據(jù)緩存和表單驗(yàn)證等功能。你還可以發(fā)現(xiàn)不少其他項(xiàng)目也是基于ASP.NET MVC構(gòu)建,并且提升了其功能,象MvcContrib,它擴(kuò)展了ASP.NET MVC的功能,還包括象UI helper和模型綁定器等功能。
ASP.NET MVC框架的網(wǎng)站提供給新手一系列學(xué)習(xí)資源,包括了視頻系列導(dǎo)學(xué),它們通過(guò)示范搭建應(yīng)用程序的方法去指導(dǎo)讀者學(xué)習(xí)。
CruiseControl
現(xiàn)在軟件的復(fù)雜性使得軟件開(kāi)發(fā)團(tuán)隊(duì)不得不重新考慮軟件開(kāi)發(fā)的過(guò)程,這要引入既能縮短開(kāi)發(fā)時(shí)間又能提高軟件質(zhì)量的方法。這使得出現(xiàn)了大量的軟件開(kāi)發(fā)最佳實(shí)踐,它們?cè)絹?lái)越廣泛應(yīng)用在企業(yè)中,象測(cè)試驅(qū)動(dòng)和持續(xù)集成。其中持續(xù)集成在整個(gè)軟件開(kāi)發(fā)過(guò)程中,通過(guò)有計(jì)劃和嚴(yán)格地整合工程的組件,并能盡可能減少在這方面付出的時(shí)間和精力。這使得開(kāi)發(fā)者能盡早發(fā)現(xiàn)和解決在整合過(guò)程中的問(wèn)題,而不是等問(wèn)題變得越來(lái)越復(fù)雜再去解決。
更準(zhǔn)確來(lái)說(shuō),持續(xù)集成包含了軟件開(kāi)發(fā)過(guò)程中的自動(dòng)化過(guò)程,包括定期運(yùn)行測(cè)試,在每次開(kāi)發(fā)者向工程代碼庫(kù)提交代碼時(shí),重新編譯構(gòu)建項(xiàng)目。因?yàn)檫@個(gè)自動(dòng)化的階段包含了大量的象文件移動(dòng)等操作,近年來(lái),很多能完成自動(dòng)持續(xù)化集成的解決方案出現(xiàn)了,其中包括開(kāi)源項(xiàng)目CruiseControl,CruiseControl提供了自動(dòng)化構(gòu)建的工具,可以查看構(gòu)建的結(jié)果,并且生成報(bào)告。CruiseControl現(xiàn)在已變成一個(gè)十分流行的持續(xù)集成解決方案。在眾多的第三方持續(xù)集成工具中,可以找到象JCCTray這樣的工具,它是一個(gè)桌面運(yùn)行的應(yīng)用程序,可以直接了解你的構(gòu)建服務(wù)器的狀態(tài),并且BigVisibleCruise這個(gè)工具,使用可視化的提示顯示構(gòu)建服務(wù)器上所有受管理的工程的狀態(tài)。
DotNetNuke
隨著越來(lái)越多的公司正把它們的商務(wù)活動(dòng)遷移到在網(wǎng)上,這需要功能強(qiáng)大的網(wǎng)站內(nèi)容管理系統(tǒng),而不僅是簡(jiǎn)單更新一下網(wǎng)頁(yè)內(nèi)容。實(shí)際上,現(xiàn)在的網(wǎng)站不僅是賣(mài)商品,同樣也管理銷(xiāo)售機(jī)會(huì)和其他合同等,也要維護(hù)文檔和提供如圖片和視頻等多媒體服務(wù)。最有效去管理這些大量的內(nèi)容的是采用集中的內(nèi)容管理系統(tǒng)。其中最著名的解決方案是DotNetNuke,它是一個(gè)功能強(qiáng)大的