.net姍姍來(lái)遲了.但是終于我覺(jué)得應(yīng)該談?wù)撘幌?net的未來(lái)了.原因很簡(jiǎn)單,我現(xiàn)在每天都收到幾乎50封郵件詢問(wèn).net的未來(lái)以及與其它技術(shù)相比,它有什么樣的優(yōu)勢(shì)等.所以在這里,我將介紹我個(gè)人對(duì)這項(xiàng)技術(shù)未來(lái)發(fā)展的看法.
我將從開(kāi)發(fā)者的期望開(kāi)始并以公司(軟件工業(yè)企業(yè))的視點(diǎn)結(jié)束.
好了!
當(dāng)一個(gè)開(kāi)發(fā)者開(kāi)始開(kāi)發(fā)一個(gè)軟件的時(shí)候,他所要求或需要的是:
1.適當(dāng)?shù)木幊陶Z(yǔ)言知識(shí)來(lái)將商業(yè)邏輯寫成程序
2.數(shù)據(jù)庫(kù)知識(shí)來(lái)儲(chǔ)存他的數(shù)據(jù)
3.在分布式環(huán)境中將商業(yè)邏輯連接到數(shù)據(jù)庫(kù)的工具
4.懂得如何將應(yīng)用程序打包
5.如果需要在客戶端提供用戶透明性則需要開(kāi)發(fā)web解決方案
6.希望得到一些組件來(lái)復(fù)用他辛勤勞動(dòng)的結(jié)果或其他人高效的解決辦法
7.希望能夠通過(guò)腳本或服務(wù)器端的邏輯來(lái)完成更新客戶端的任務(wù)
8.希望能夠授權(quán)一個(gè)團(tuán)體來(lái)重用你的組件以便促進(jìn)你的業(yè)務(wù)或工作
9.希望提供一個(gè)簡(jiǎn)潔的用戶界面
10.希望避免建立一個(gè)你已經(jīng)作過(guò)的web頁(yè)面的麻煩
還有很多...(我無(wú)法包括或討論所有的方面因?yàn)樗羞@些東西實(shí)際上隨個(gè)人的不同而不同)
但我認(rèn)為上面提到的10點(diǎn)應(yīng)該是所有認(rèn)真的開(kāi)發(fā)者都要考慮的.所以從技術(shù)上講,在.net到來(lái)以前,我們知道的對(duì)這些問(wèn)題的解決辦法是:**這里我假設(shè)你們希望從列出了所有可能選項(xiàng)的列表中選擇一個(gè)而且我只會(huì)提供這些流行技術(shù)的名字.
1.適當(dāng)?shù)木幊陶Z(yǔ)言知識(shí)來(lái)將商業(yè)邏輯寫成程序:c,c++,和java.
2.數(shù)據(jù)庫(kù):oracle,sol server 等.
3.在分布式環(huán)境中將商業(yè)邏輯連接到數(shù)據(jù)庫(kù)組件的工具:corba, rmi, dcom等
4.為分發(fā)應(yīng)用程序打包:安裝程序(獨(dú)立于環(huán)境),二進(jìn)制文件而后最終注冊(cè)組件
5.通過(guò)(顯示)提供在線解決方案:html, dhtml, css, 和xml等.
6.希望使用軟件重用機(jī)制:java beans, com等
7.客戶端更新:java script, jscript, applets 等和服務(wù)器端邏輯: perl, asp, php 等.
8.組件發(fā)售:進(jìn)行物理拷貝和注冊(cè)組件或完全通過(guò)服務(wù)器訪問(wèn)
9.簡(jiǎn)潔的用戶界面:vb, vc++, gtk 等
10.可重用web組件:目前工業(yè)界還沒(méi)有任何一個(gè)流行的軟件被經(jīng)常使用.
例如我曾為我的開(kāi)發(fā)環(huán)境使用:c++, sql server, dcom, html, com, jscript, asp,服務(wù)器和客戶端注冊(cè)實(shí)用程序, vc++, gtk+ (在linux上) 和 xml .所以我所遇到的問(wèn)題是我需要花費(fèi)很長(zhǎng)的時(shí)間來(lái)學(xué)會(huì)這些技術(shù)而且?guī)缀趺看挝叶紤岩蛇@些技術(shù)能否普及或者能否生存下去.我并不是說(shuō)所有的開(kāi)發(fā)者都要一下子學(xué)會(huì)這所有的技術(shù)但可以肯定的是,如果你要設(shè)計(jì)新的和有創(chuàng)意的東西那么你就必須對(duì)上面我們討論的每一點(diǎn)中的至少一項(xiàng)有很好的了解而且做到這一點(diǎn)的人的確是這個(gè)工業(yè)的領(lǐng)頭人.
但是對(duì)于.net,微軟在一個(gè)軟件包里依靠幾種擁有明顯界線的技術(shù)集成了幾乎所有的東西.意味著你擁有了所有的東西但不會(huì)把它們混淆起來(lái).
因此如果你開(kāi)始學(xué)習(xí).net,你所需要學(xué)習(xí)的一切是:
主要技術(shù):c#(vb.net也是一個(gè)好的選擇)
asp.net
xml.
只有三種....................是的!
c#可以用來(lái)編寫客戶端更新的腳本,創(chuàng)建商業(yè)邏輯,做服務(wù)器端編程,編寫windows應(yīng)用程序,編寫控制臺(tái)程序,做組件設(shè)計(jì),而且它可以將xml作為數(shù)據(jù),元數(shù)據(jù)(自描述的數(shù)據(jù)),商業(yè)邏輯和數(shù)據(jù)庫(kù)之間的連接工具,但同時(shí)你需要ado.net的c#實(shí)現(xiàn),更進(jìn)一步的是如果你要將東西發(fā)布到網(wǎng)上,你需要在服務(wù)器端安裝asp.net,如果要?jiǎng)?chuàng)建可重用的web組件,你需要web services的概念,就象vc++開(kāi)發(fā)的windows services一樣,但是沒(méi)有了物理上的局限.
只有一種語(yǔ)言,我們能將它用在幾乎每一個(gè)地方.沒(méi)有更多的混淆...是的!沒(méi)有了com/dcom里浪費(fèi)系統(tǒng)主存的組件注冊(cè)過(guò)程也沒(méi)有了系統(tǒng)上的授權(quán)允許過(guò)程(除了一些特殊情況).
所以從程序員或開(kāi)發(fā)者的視點(diǎn)來(lái)看這是一個(gè)高度的成功.
現(xiàn)在讓我們從公司的角度來(lái)想一想(當(dāng)然!這里我討論的是小公司,它們以獨(dú)立項(xiàng)目的方式工作).例如一個(gè)公司招聘了四個(gè)vc++程序員因?yàn)樗麄兊捻?xiàng)目將用vc++開(kāi)發(fā),但是在后來(lái)的6個(gè)月里他們獲得了一個(gè)用vb開(kāi)發(fā)的項(xiàng)目.
現(xiàn)在會(huì)怎么樣呢?
他們會(huì)要求他們的開(kāi)發(fā)者學(xué)習(xí)vb開(kāi)始工作,當(dāng)然另一種方法是解雇他們而招聘一批vb開(kāi)發(fā)者!
所以這是一個(gè)主要問(wèn)題.
但是對(duì)于.net,由于極好的相互兼容性,你不需要學(xué)習(xí)一種新的.net語(yǔ)言因?yàn)槟憧梢詫⒁环N語(yǔ)言的組件引入到另一種.net語(yǔ)言中來(lái).
因此對(duì)于.net沒(méi)有必要將你的vb程序員轉(zhuǎn)變成managed c++ 程序員或把c#程序員轉(zhuǎn)變成jscript.net程序員.