技術(shù)架構(gòu)評估
--主要對Java、Dotnet等技術(shù)進行綜合評估weide2005 年 12 月17 日
在本文中我們將根據(jù)一個業(yè)務(wù)需求對當(dāng)前流行的幾種技術(shù)架構(gòu)進行評估。
這篇文章的目的不是為了評價各種技術(shù)架構(gòu)在單項指標(biāo)上的優(yōu)劣,僅僅根據(jù)我們描述的業(yè)務(wù)需求做出選擇。同時,強烈希望大家發(fā)表自己的意見和建議,幫助我們做出這種選擇。
業(yè)務(wù)場景描述這是一個經(jīng)典的業(yè)務(wù)場景,其核心問題是:作為一家行業(yè)軟件提供商,要形成自己的
企業(yè)應(yīng)用框架[6],并在該企業(yè)應(yīng)用框架上搭建行業(yè)的整體解決方案。
現(xiàn)狀:經(jīng)過多年的積累,我們形成了一個系列的行業(yè)軟件產(chǎn)品,從幾個方面分別描述如下:
- 滿足的業(yè)務(wù)需求: 服務(wù)于企業(yè)質(zhì)量管理這一行業(yè),同時為滿足不同的業(yè)務(wù)需求,產(chǎn)生了相應(yīng)的多款產(chǎn)品
- 使用的數(shù)據(jù)庫: SQL AnyWhere、SQLServer、Oracle
- 開發(fā)語言(工具): PB、VC、Delphi、Dotnet(C#)、Java(JSP)
- 發(fā)布形式: 核心業(yè)務(wù)仍以C/S為主,最新的項目根據(jù)企業(yè)需求也用Dotnet/Java實現(xiàn)了少量B/S應(yīng)用。最終的產(chǎn)品線將會是B/S、C/S共存,包括單機版、網(wǎng)絡(luò)版;標(biāo)準(zhǔn)版、定制版本的產(chǎn)品系列。
- 經(jīng)營模式: 定制開發(fā)與標(biāo)準(zhǔn)版軟件升級并行,在標(biāo)準(zhǔn)版的基礎(chǔ)上進行定制,同時把適用于多數(shù)企業(yè)的新功能合并到標(biāo)準(zhǔn)版中來。
- 用戶數(shù)許可規(guī)模:當(dāng)前的數(shù)量級為N*10,可預(yù)期的上升空間為幾百到幾千。所以對應(yīng)用服務(wù)器、并發(fā)等性能要求不算太大。
目標(biāo):
將這些不同語言開發(fā)的,擁有不同發(fā)布形式,但卻服務(wù)于同一行業(yè)的單個軟件,統(tǒng)一到一致的技術(shù)架構(gòu)下,并增加B/S發(fā)布模式的支持。最終形成B/S與C/S相結(jié)合的產(chǎn)品系列,形成行業(yè)的整體解決方案。
舉例描述:首先用Java(或C#)搭建企業(yè)應(yīng)用框架,該框架包含認(rèn)證/權(quán)限/組織角色管理、文件管理等通用性的功能。然后在該框架的基礎(chǔ)上把現(xiàn)存
C/S版的--PB實現(xiàn)的財務(wù)管理系統(tǒng),Delphi實現(xiàn)的庫存管理系統(tǒng),VC實現(xiàn)的局域網(wǎng)即時通訊系統(tǒng)的業(yè)務(wù)功能模塊全部用Java或(C#)重寫,并
增加B/S版本的實現(xiàn)。
統(tǒng)一到一致的企業(yè)應(yīng)用框架下,形成統(tǒng)一、規(guī)范的開發(fā)方式,使得我們不用再去維護多個技術(shù)團隊;通過一致的企業(yè)應(yīng)用框架,建立積累機制,逐步形成并完善整個系統(tǒng)的業(yè)務(wù)功能。
評價方法
根據(jù)上述業(yè)務(wù)場景的目標(biāo),我們根據(jù)如下幾個因素進行評價,同時希望得到大家的意見和建議,最終將在這些數(shù)據(jù)的基礎(chǔ)上形成一個綜合性的評估結(jié)論。
社區(qū)文化
開發(fā)語言流行程度
技術(shù)體系和思維方式
成本
學(xué)習(xí)曲線
社區(qū)文化Python和Ruby從技術(shù)角度也能夠滿足我們的要求,但由于在國內(nèi)太“小眾”,缺乏相應(yīng)的技術(shù)支持和客戶基礎(chǔ),現(xiàn)階段不被考慮。Java和dotnet目前都擁有活躍和為數(shù)眾多的開發(fā)社區(qū),我們能夠獲得足夠的交流空間和技術(shù)支持。
Ruby
知道Ruby是因為Ruby on Rails,一個相對較新的 Web 應(yīng)用程序框架,構(gòu)建在 Ruby 語言之上。它被宣傳為現(xiàn)有企業(yè)框架的一個替代,而它的目標(biāo),簡而言之,就是讓生活,至少是
Web 開發(fā)方面的生活,變得更輕松。
但是,對于Ruby實在生疏的厲害,雖然知道也有相關(guān)的GUI庫,但如果拿它來做一個系列產(chǎn)品,可能人手都找不夠。基本沒有交集,資源不列舉了。
Python
Dotnet
Dotnet最大的社區(qū)是MSDN Home?MSDN中文網(wǎng)站擁有無數(shù)的中文Dotnet技術(shù)資源,這也是國內(nèi)相比Java的一大資源優(yōu)勢。
Dotnet社區(qū),其中最受關(guān)注的是多是關(guān)于控件以及和技術(shù)關(guān)系不是太大而在非技術(shù)上很有爭議的隨筆.在java社區(qū)已經(jīng)普及的面向?qū)ο笠约澳J降母拍?在.net社區(qū)鮮有提及.
在cnblogs的情況稍微好些. 不過通常局限在運用面向?qū)ο蠛湍J絹斫鉀Q一些示例性的小問題.這樣層次似乎太低了,這離企業(yè)級的應(yīng)用差的還比較遠。
[4]Java
Java由于時間的積累,項目的積累,社區(qū)資源多多。很多在實踐第一線的開發(fā)人員、架構(gòu)師活躍在各個社區(qū)之中。由于社區(qū)文化的不同,Java社區(qū)有N
多技術(shù)先行者,并樂于把自己的開發(fā)經(jīng)驗分享給整個社區(qū)。而Dotnet由于時間尚短,在這方面相對較差。
Java開源產(chǎn)品多,面臨的選擇多,各開源項目文檔充分程度各異,且文檔又多以英文為主:( 好在國內(nèi)的Java牛人自發(fā)組織了文檔的翻譯
[5],并樂于分享自己的學(xué)習(xí)體驗,這種方式對于技術(shù)的提高又有很大的幫助。
英文
TheServerSide.com http://www.theserverside.com/tss
http://java.sun.com
http://www.javaworld.com
中文
BlogJava http://www.tkk7.com/
Java視線論壇 http://forum.javaeye.com/index.php
Matrix http://www.matrix.org.cn
J道-專業(yè)的Java解決之道 http://www.jdon.com/
Java愛好者http://www.javafan.net/index.jsp
BEA dev2dev 在線 http://dev2dev.bea.com.cn/
IBM developerWorks 中國 http://www-128.ibm.com/developerworks/cn/java/index.html
http://www.javaresearch.org Java相關(guān)技術(shù)綜合服務(wù)網(wǎng)站
http://www.javaworld.com.tw/jute/index.html
開發(fā)語言活躍程度我們將引入兩個排行榜,來評估開發(fā)語言的活躍程度和受歡迎程度。
TIOBE程序語言使用排行榜
下面列出2005年11月排行榜,最新排行請參考
官方網(wǎng)站[1]。
近日來,在TIOBE程序員社區(qū)中公布了其2005年11月的程序語言排行榜。這得注意的是PHP即將超過C++成為了排行榜的老三!而Java作為開源先鋒首當(dāng)其沖的成為了龍頭老大,并且仍然保持著很好的增長勢頭。
這個排行榜每月更新一次,其排名順序按照世界范圍內(nèi)的技術(shù)工程師、講師、第三方廠商的調(diào)查依據(jù),并查詢了目前流行的搜索引擎:Google,MSN,
Yahoo,結(jié)合前兩者的數(shù)據(jù)計算后得出的。根據(jù)TIOBE的觀點,此排行榜是被程序員們用來檢查自己的程序技能是否過時,或者作為建立新的軟件系統(tǒng)時進行參考之依據(jù),并非意味著哪種語言是最好的。
圖 1. 2005年11月TIOBE發(fā)布:世界前20位語言排行榜
圖示說明:
(Position):此列表明當(dāng)前語言與去年位置的變化。
Ratings:在查詢搜索引擎計算排名順序時使用了 '+" programming" -tv -channel'公式,對上12個月內(nèi)Google,MSN,Yahoo!和Google新聞組的數(shù)據(jù)進行查詢。注意此公式應(yīng)用于標(biāo)準(zhǔn)的Google
web點擊率、標(biāo)準(zhǔn)的MSN web點擊率、標(biāo)準(zhǔn)的Yahoo!web點擊率和標(biāo)準(zhǔn)的Google新聞組點擊率。這里的“標(biāo)準(zhǔn)”意味著一次對前50位語言web點擊率總和的查詢是均勻分布的,即保證了排名的相對公正性和科學(xué)性。
(Ratings): 此列表明當(dāng)前語言在上12個月內(nèi)的排名變化。
Status:帶有“A”的程序語言被認(rèn)為是主流語言。帶有“A-”和“A--”表示程序語言位于“A”和“B”之間。從支持能力的觀點看,盡量在工業(yè)的、任務(wù)危機的軟件系統(tǒng)中使用帶有“A”的主流程
序語言。如果某種語言在上3個月內(nèi)具有超過0.7%的增長率,則此語言將獲得“A”狀態(tài)。上兩個月內(nèi)具有超過0.7%的增長率的程序語言相應(yīng)的將獲得“A--”和“A-”狀態(tài)。
圖 2. 2005年11月TIOBE發(fā)布:世界前10位語言在前五年內(nèi)長期發(fā)展趨勢圖
sourcefage開源項目所用語言排行榜
SourceForge.net,全球最大的開放源代碼開發(fā)網(wǎng)站。對各個開發(fā)語言的開源項目統(tǒng)計,最新信息請訪問
官方網(wǎng)站[2]。
以下列出2005.11.25數(shù)據(jù),Java超過C++成為Sourceforge第一語言
1. Java (16738 projects)
2. C++ (16731 projects)
3. C (15934 projects)
4. PHP (12175 projects)
5. Perl (6209 projects)
6. Python (4542 projects)
7. C# (2892 projects)
8. JavaScript (2779 projects)
9. Visual Basic (2192 projects)
10. Delphi/Kylix (1926 projects)
11. Unix Shell (1845 projects)
12. Assembly (1608 projects)
13. PL/SQL (1145 projects)
技術(shù)體系與思維方式
在同樣滿足技術(shù)期望目標(biāo)的情況下,Java和dotnet的體系結(jié)構(gòu)越來越近似,因此對于Java和dotnet架構(gòu)的比較沒有太大意義。
二
者最大的區(qū)別是社區(qū)文化:Java是由各大公司一塊兒制定規(guī)范,開源產(chǎn)品多,發(fā)展迅速,同時開源產(chǎn)品有些過多了;dotnet基本由微軟控制,底層技術(shù)不
開放,但是對第三方軟件開發(fā)商而言,也很友好,因此現(xiàn)在已經(jīng)有眾多的軟件公司提供dotnet下的組件--這一點很類似于Delphi。Java由幾大
IT公司共同制定和維護其規(guī)范,有著可選的若干方案;Dotnet由于微軟的強勢地位,只能是一支獨秀的局面。其它公司采用
Dotnet開發(fā)產(chǎn)品,若微軟也要插一腿,則其它公司很難競爭得過,最終難免衰敗(Borland?)。比如金蝶最早準(zhǔn)備用.net,現(xiàn)在改Java了
(?)
給
個形象的比喻:走入Dotnet的世界,MS既是Dotnet世界的王,Dotnet世界規(guī)則的制訂者,它就像太陽照亮了廣闊的空間,大家除了仰望,誰能
與其爭輝?Java世界,則是一個誰都能閃爍光芒的地方,能量小的是螢火中,能量大的就是恒星啊(IBM?BEA?)。
轉(zhuǎn)貼兩篇
C#
vs. Java:相反的思維方式 (譯文):
Conflicting
mindsets of C# vs. Java,Malcolm Davis,September 12, 2004
我最近受邀對 C#/.NET 和 Java/J2EE 做一個對比。一開始,我比較了它們的功能特性、產(chǎn)品、技術(shù),然后我發(fā)現(xiàn)
C# 和 Java 的戰(zhàn)場并不在這些表面特征方面,而是思維方式層面的競爭。
坐在辦公電腦前,開發(fā)者腦袋中按兩種相反的思維方式看問題:
1.接受桌面上已有的工具并以此為標(biāo)準(zhǔn)。
2.經(jīng)常的搜索能夠提高工作效率的機會。
接受主義與探尋主義是兩個社區(qū)的主要思維方式差異。什么是對開發(fā)者有益的,接受主義者放棄了對工具的控制,接受經(jīng)理和賣主的選擇。探尋主義者搜索、尋找正好對他們工作有用的工具。兩種思維方式都有其正面因素和反面因素。
工具的探尋(包括 IDE,組件,工具等)是正常的、預(yù)想的、首選的行為。作為開發(fā)者,應(yīng)該尋找適當(dāng)?shù)耐緩剑热缧碌某绦颉⒆詣由芍貜?fù)的代碼以及組件重用等途徑,提高工作效率。可是,這對于一個
IT 公司來說,可能是一個不好的兆頭。很多的 IT 公司限制隨意安裝新的軟件,很多公司限制對外部網(wǎng)站訪問,有的還限制對新聞組和
blog 站點的訪問。(當(dāng)然,很難想象有些 IT 公司甚至不允許訪問 weblogs.java.net。)這些 IT 公司有很多適當(dāng)?shù)睦碛桑热鐚Σ《尽⒛抉R軟件傳播的擔(dān)憂,以及由于缺少許可證而導(dǎo)致的法律問題,很多程序員并不清楚也并不關(guān)心引進新軟件可能帶來的這些后果。
四年前,我向一家 IT 公司引進了 Ant,Tomcat 和 JUnit,這些工具簡化并加快了 web 編程、測試以及制造的過程,極大的提高了公司的生產(chǎn)效率。現(xiàn)在幾乎每一個
Java 開發(fā)者都已經(jīng)掌握了這些技術(shù)。
NAnt 和 NUnit 是僅有的一些開源的、對 Java 工具集的 .NET 移植。然而,Microsoft 并不是采納這些已有方案、加以改進、并將它們集成到生產(chǎn)線中,而是自己重新創(chuàng)建了類似的產(chǎn)品
Visual Studio Team System。停下來想象一下,會不會有哪家 Java IDE 會聲稱“我們將不會支持
JUnit 或者 Ant,我們將推出我們自己的產(chǎn)品。”這簡直是不可想象的!你現(xiàn)在知道 Java 和 .NET 之間的思維差異了吧:一個采納社區(qū)已有的成熟工具,另一個則重新創(chuàng)造一套集成的方案。因為商業(yè)
IT 公司偏愛集成的解決方案,Microsoft Team System 給人感覺不錯。可是,Team System 只是一個落后時代大約
5 年的產(chǎn)品。
商業(yè)世界的人們已經(jīng)開始使用 Jakarta 項目上發(fā)布的 Ant 和 Tomcat。思維方式凸現(xiàn)了商業(yè)運作和 IT 開發(fā)的主要差異。如果商業(yè)軟件能夠遵守和
IT 開發(fā)相同的規(guī)則,它們將壓縮競爭對手的空間,同時失去他們最好的開發(fā)人員。
由于 IT 公司需要以應(yīng)用程序提供商(Application Service Provider, ASP)的等形式采用外部資源,Java
以及 Open Source 將成為 IT 的主流。Microsoft 的做法最終會傷害他們。ASP 的商業(yè)模式,將帶領(lǐng)我們進入一個商業(yè)軟件開發(fā)的新時代。Industrial
strength development techniques, cutting edge technology, 以及經(jīng)常性的探尋提高生產(chǎn)效率的機會,將成為標(biāo)準(zhǔn),我們將看到“小魚吃大魚”的一幕,我們將看到
Java 吃掉 .NET 的午餐。
Conflicting
mindsets of C# vs. Java: Part II,Aaron Hohnson,September 21, 2004
大家都看到了 Malcolm Davis 剛剛發(fā)表的那篇“C# vs. Java:相反的思維方式”了吧?你也注意到:sourceforge
上 Lucene.NET 的主持者關(guān)閉了項目,帶著他們的玩具回家去了吧?我接著 Malcolm 的話題,說說這兩件事之間的關(guān)系。
大體而言,.NET 社區(qū)的參與者總是在談?wù)?Microsoft 推出的最新的、最強大的東西:MapPoint Location
Server,SQL Server,Longhorn,ASP.NET 2.0,Visual Studio,所有來自雷德蒙(Redmond,微軟總部所在地)的產(chǎn)品。相反的,Java
社區(qū)的程序員在那里談?wù)?JBoss,Hibernate,Struts,Eclipse,這些東西沒有一個來自硅谷。
Malcom 的文章說,.NET 開發(fā)者接受 Microsoft 提供的工具和服務(wù),我想這在很大程度上是對的。.NET
開發(fā)者很少花時間,開發(fā)持續(xù)層方案(persistence layers),web 應(yīng)用程序框架(web application
frameworks)或者緩存解決方案(caching solutions),因為 Microsoft 已經(jīng)為這些問題提供了
Microsoft 解決方案。但是僅僅是因為 Microsoft 提供了這些工具嗎?那為什么 JSF,JDO,NetBeans
不能成為 Java 技術(shù) Blog 站點的主流聲音呢?拿 ASP.NET 和 JSF 作一個細致的比較,它們并沒有太多的不同,但
ASP.NET 和 Visual Studio 一起被廣泛應(yīng)用,而 JSF 卻很少人用并且飽受嘲弄。我認(rèn)為 Malcom
是對的,的確是思維方式的差異早就了這一切。
回過頭來看看 Lucene.NET 的那群人吧:他們?yōu)槭裁搓P(guān)閉了開源的項目,他們?yōu)槭裁床辉倮^續(xù)為這個很優(yōu)秀的想法貢獻他們的時間和精力呢?或許
.NET 社區(qū)對他們工作的反響,讓他們無法繼續(xù)維持下去了吧!使用 google 在 weblogs.asp.net 上搜索“l(fā)ucene”只得到了
17 項結(jié)果,而在 jroller.com 得到了 2570 項結(jié)果。Lucene 已經(jīng)存在很長時間了,但 Lucene.NET
的那群人們把東西包起來另起門戶,其中一個原因可能就是:幾乎沒有人關(guān)注他們的工作:大家都在忙著研究 SQL Server
的全文檢索,這才是 Microsoft 提供的解決方案(當(dāng)然,需要為每個處理器花費成千的美元購買許可)。在 Java 世界,Lucene,Struts,Tomcat
之所以繁榮,也是因為為一個大的開源項目工作,給開發(fā)者帶來了足夠的威望。而當(dāng)你投身于一個開源項目,卻很少人注意時,沮喪的你也許也要尋找另外的動力。在
Lucene.NET 這個事例中,money 是他們的動力,所以他們關(guān)閉了項目,轉(zhuǎn)而販賣他們的個人版本和商業(yè)版本。他們或許能得到雙倍的美元吧,但我打賭一年以內(nèi),不會有多少人談?wù)?
seachblackbox.com 的。
那么我的觀點是什么呢?是說 .NET 開發(fā)者很貪婪,不關(guān)心社區(qū)嗎?不是這樣的。我認(rèn)為,這兩個社區(qū)有不同的司機:.NET
開發(fā)者盯著 Microsoft,關(guān)心 Microsoft 提供的解決方案,如果他們在車窗外看到了好東西并拿來使用,Microsoft
可能會最終進入這個領(lǐng)域,并發(fā)布產(chǎn)品或者提出解決方案,這樣,以前的工作就完全被否定了。Microsoft 是 .NET 社區(qū)的司機。Java
開發(fā)者們看了看 Sun 推出的產(chǎn)品和語言規(guī)范,扭頭去開發(fā)他們自己的工具、框架、應(yīng)用程序。Sun 推出的東西,Java 社區(qū)的開發(fā)者只有他們確實喜歡才會去使用。Struts
的門庭若市,與 JSF 的門庭冷落,印證了這一點。在 Java 社區(qū),開發(fā)者自己是司機。
Eclipse聯(lián)盟與桌面GUI
目
前由IBM牽頭,圍繞著Eclipse項目已經(jīng)發(fā)展成為了一個龐大的Eclipse聯(lián)盟,有150多家軟件公司參與到Eclipse項目中,其中包括
Borland、Rational Software、Red Hat、Sybase、SAS等。
作為一款企業(yè)信息化產(chǎn)品,服務(wù)端和客戶端的技術(shù)應(yīng)盡可能的保持一致,這樣能夠最大的限度的資源共用。Eclipse聯(lián)盟的建立使得我們對于Java的桌面
GUI有著充分的信心。
Eclipse的插件機制、擴展機制、自動升級、幫助系統(tǒng)等平臺性的功能,使得我們擁有了一個現(xiàn)成的平臺性軟件,很多基礎(chǔ)性工作可以不再重復(fù)去做。
桌面GUI一向是MS的強項,在性能與界面美觀方面占據(jù)優(yōu)勢,但沒有現(xiàn)成可用足以媲美Eclipse的框架。
成本
開發(fā)成本
另外一個非常重要的問題在于,用Java做為我們的軟件架構(gòu),開源社區(qū)為我們提供了免費(或低價)的應(yīng)用服務(wù)器,項目管理工具,開發(fā)工具,數(shù)據(jù)庫系統(tǒng)。這
些足以滿足我們的業(yè)務(wù)需求,而沒有任何版權(quán)問題,而版權(quán)是我們軟件產(chǎn)品經(jīng)營中早晚要面對的問題。我們需要付出的代價就是了解并掌握這些開源的產(chǎn)品;若采用
微軟的技術(shù)架構(gòu),則從開發(fā)工具、應(yīng)用服務(wù)器、數(shù)據(jù)庫服務(wù)器、工作流等整套系統(tǒng)全部正版的話,有著高昂的成本。
用戶實施成本
用戶既可以在現(xiàn)有Windows系統(tǒng)上安裝,也可以安裝在Linux系統(tǒng)上,伸縮性良好。同時,可以支持開源的數(shù)據(jù)庫,降低用戶的實施成本。Java由于有著良好的移植性,和為數(shù)眾多的應(yīng)用服務(wù)器產(chǎn)品,可以滿足各種客戶的需求。
跨平臺
Java當(dāng)然比之Dotnet要好很多。只是對于C/S應(yīng)用而言,運行在國內(nèi)幾乎90%以上的Windows系統(tǒng)中,跨平臺貌似沒有任何意義。若干年后,如果Linux或其它系統(tǒng)在企業(yè)應(yīng)用中被普及的時候,可能Dotnet也能夠很好的跨平臺了。
學(xué)習(xí)曲線
Dotnet入門容易,有著從服務(wù)器到開發(fā)工具的一站式解決方案;Java的入門曲線則相對較高,N多的技術(shù)、開源框架要掌握、要選擇,服務(wù)器、開發(fā)工具的順利使用要做很多的配置工作。
對于企業(yè)級開發(fā)而言,其關(guān)鍵在于滿足業(yè)務(wù)要求,合理的設(shè)計方案和架構(gòu),設(shè)計模式等,這些無論對于Java或Dotnet都是非常重要的。使用Java來學(xué)的話,由于整個社區(qū)對于架構(gòu)、設(shè)計模式的普及,提升會比dotnet快。
趣味觀點
以色列軟件工程師Tamir Khason 揭示出了一個驚人的理論:有大胡子——有旺運;沒胡子——只有干瞪眼!
[8]
圖 3. C#之父Anders Hejlsberg
圖 4. Java之父James Gosling
結(jié)束語
注意了,注意了!走過路過,千萬不要錯過下面的信息啊!
感謝大家把這篇文章一直看到最后^_^
既然已經(jīng)看到最后,我誠摯地邀請您再伸出援助之手:請在這篇文章的最后給出您的寶貴意見,格式如下:
我建議采用的平臺是:(Java/Dotnet/其它)
我的理由是:...
我的補充意見:...
參考資料
[1]
TIOBE程序語言使用排行榜
[2]
sourcefage開源項目所用語言排行榜
[3]
C#
vs. Java:相反的思維方式(譯文)
[4]
質(zhì)疑國內(nèi).Net社區(qū)
[5]
滿江紅.開源
[6]
理解企業(yè)應(yīng)用框架,原載于《程序員》
[7]
整理一下技術(shù)路線,robbin
[8]
有胡子與沒胡子的區(qū)別
[9] 微軟是如何輸?shù)鬉PI之戰(zhàn),
上、
下
關(guān)于作者
最近正在進行本文所描述的技術(shù)架構(gòu)評估,對于Java和Dotnet有些舉棋不定。熱切希望得到大家的寶貴建議,再次感謝!