專刊內文

當前位置:首頁>專刊分享>內文

瀏覽次數 : 8221



 

EEP2010承先啓後

訊光科技 / Andy Kao


前言

2010年5月6日的台北國際會議中心,超過1200位的開發者將VS2010的發表會上擠爆,這是這麼多年來從來沒看過的開發者群聚場面,也代表在國內這個工具市場,將正式走入.net 獨大的市場,當然不意味著Java或其他平台將會消失,只是從2010開始正式進入80/20 .net的獨佔市場,身為軟體業者的你,是感受到前途茫茫,又有一堆苦差事要幹活;還是你感受興致勃勃,前途一片光明呢? 還是喜憂參半,喜的是新技術將帶來方便及新知,憂的是需面對現有系統的更新成本與新技術學習成本。面對這些確定要發生的事,你準備好了嗎?

上個月的"再次革命--Entity Framework"文章中,說明了Entity Framework的重要戰略地位,微軟也利用VS2010向全球開發者昭告天下,新的資料庫應用開發模式已經來臨,大家皆期待資料庫的存取能夠物件化與免程式化,當然簡單的檔案管理對EF來說,當然游刃有餘沒什麼問題,但是,針對商業邏輯就很難不寫程式,不管你是用Entity SQL還是在資料庫後端使用Stored Procedure都是必要的,也彷彿告訴我們永遠都沒有不必寫程式的事發生過,雖然是個崇高的理想,但進步卻是不爭的事實。

訊光至2005年推出EEP .net平台以來,已經成功導入200多家中大型客戶進入.net開發領域,尤其EEP的多層方案與元件化觀念,更是得到業者的肯定與認同。隨著VS2010的推出,EEP2010除了將原有的EEP2008的功能提升到VS2010中相容使用外,也在新的平台中使用了Entity Framework 4.0為核心架構,讓你除了享受EF帶給你嶄新的科技外,更利用WCF的通訊技術為你分層處理使用者介面與後端商業邏輯處理,讓你能夠輕易實現SOA的軟
體架構方案。


VS2010新功能

首先我們來簡略說明VS2010所推出一些新功能,有很多網路文章都有詳盡的說明,在此筆者將重要的功能說明如下:(以下部分功能在Ultimate最終版本才有)

1. 新的Designer:解決VS2008的Designer反應速度過慢的問題,新版的Designer 已經沒有過多的遲緩現象發生,更重要的是支援Silverlight的視覺開發介面,不再讓Silverlight採用文字模式來開發。

2. 支援Entity Framework 4:Entity Framework在短短的2年多內迅速竄起,就是因為他可以簡化資料庫開發人員大量的工作,與讓開發者不必在乎實體資料庫的類型,都使用同一種方式來開發,隨著VS2010的推出,Entity Framework在可見的未來中將成為資料庫開發的主流。

3. UML支援:在VS2010中,已經開始支援UML的模型圖,雖然只提供了5種,有類別圖(Class Diagram)、循序圖(Sequence Diagram)、用例圖(Use Case Diagram)、活動圖(Activity Diagram)、元件圖(Component Diagram)等,但是這5種都是最經常使用的UML,對系統架構師與分析師來說是個很方便的選擇。

4. 神奇的IntelliTrace:"看不見的Bug"一直以來程式師的夢靨,這種Bug很常見,當 User偶然發生的Bug,但卻無法複製Bug的重現,當你到場或是在你的開發環境上就是無法模擬Bug重現,有了IntelliTrace可以還原當初發生Bug的情況,更可以讓你在事後去Debug ,真的很神奇。

5. 網站部署:在以往的VS版本中,網站的發佈往往會將WebSite其他檔案清光光,造成不小的困擾,但是VS2010的網站部署,除了所謂一指神功單鍵發佈之外,重要的是他能局部的更新(自動比對),可以更快發佈與避免上述的問題發生,另一個重點就是可以連同資料庫的異動一起發佈,這就讓人拍手叫好了。

6. 支援MVC設計架構:MVC 2來勢洶洶,雖然用的人不多,但看來微軟對MVC情有獨鍾,特別在VS2010中堆出了MVC 2.0來滿足愛好者,所謂MVC就是Model View Controller的縮寫,前端網頁(就是Input-Ouput啦),後端商業邏輯就是Model,中間就是Controller 控制器(用來控制前端的Input如何與後端商業邏輯運作,後端的資料如何控制給前端的Ouput等等),其實MVC是個30年的老觀念,與早期Cobol的Input-Process-Output很像,時代好像有走回來的感覺。

7. 更強的專案管理:VS2010增強了之前的VSTS(Team System)的功能,讓整個專案管理透過TFS(Team Foundation Server)來做更細膩的專案管理,從專案啟動,文件管理,工作項目展開,進度回報,程式開發,單元測試,自動化測試,到Bug的管理與版本管理等等,讓整個專案從啟動到結束都在掌控之下。

8.強化品質功能:VS2010在品質功能上的表現更是又邁進了一步,從程式開發Checkin開始就可以定義各種Checkin Role規範,如命名規格或是更為嚴謹的編譯條件等等,必須這些Role過關才可以Checkin;另外可以自動產生Unit Test的程式碼,可以透過Excel 定義測試參數並可以自動執行Unit TEST;在Function Test中,更可以啟動自動紀錄UI測試的過程,讓你可以再下次自動化驗證與測試,帶來測試的效益。


EEP2010架構

如圖,在EEP2010的架構中,我們提供了兩種多層通訊模式,一種是從EEP2006沿用到今日的.net Remoting,另一種是最新的WCF技術,如下:



1. .net Remoting:因為早期.net 2.0並沒有WCF(Windows Communication Foundation),所以我們使用了.net Remoting主流技術做為Application Server的通訊協定。

在後端繼承了ADO .net的SqlConnection與SqlCommand 的元件,做為我們與資料庫溝通的橋梁,這個InfoCommand能針對不同的資料庫,下達不同的SQL語句,來達到動態支援不同類型資料庫的功能;並透過了InfoRemoteModule提供前端的資料服務,讓前端可以透過InfoDataSet元件與 Windows或Web與Ajax元件溝通,在EEP2006與EEP2008只能提供這3種UI介面。

2. WCF:這是.net 3.0以後提出來更高階更強大的通訊平台,透過WCF可以輕易提供各種服務給不同的主機或Client,達到SOA(服務導向架構)的目的,另外WCF也改善很多Object的透通問題,例如類似Entity這種Object就無法透過.net Remoting來傳遞,必須透過WCF才能傳遞;WCF也能透過Service Proxy讓其他主機或Client端輕易透通Entity(或Object)的方法與欄位來使用。由於後端我們使用了最新的Entity Framework,因此資料的控制是透過Entity Client Provider來存取,這個Provider也是架構在ADO .net上,可由各家資料庫廠商來提供,目的也是要讓一套程式能夠運作在不同的資料庫當中,不受各家資料庫各自的語句所綑綁,這部分讓我們在開發EF Module時省掉30%以上的程式碼,確實帶來正面的效應,Provider之前我們包裝成EFCommand,因為是Entity,所以使用的是 Entity SQL(不是一般的SQL命令喔),透過EFCommand來控制EDMX內的Entity實體物件,然後透過DataContext取得資料;最後當然透過WCF送到前端的EFDataSource中,EFDataSource會還原Entity的控制並統一託管(抽象化),前端就可以使用各式不同的UI介面來與其連結,可以是最夯Silverlight,或是ExtJS或JQuery等Ajax介面,或是傳統的ASP.net,或是一般的Windows介面皆可。

不管是新的WCF + Entity Framework架構還是原來的.net Remoting架構,都可以在同一台EEP Application Server上同時服務,就是為了能相容原來的系統,不是每次都要做大幅的更新,舊的使用舊的服務,新的系統使用新的服務,這樣才能讓之前的投資不至於浪費重來。


堅持N-Tier發展

EEP從1999年開始於Delphi 4.0,歷經了11年,走過了Delphi5/6/7,到了.net2.0重新開始到現在的.net 4.0,我們的目標都是不變的,就是N-Tier的架構,前端UI希望能多平台並且不准碰觸資料庫連線,讓前端單純只有輸入輸出,而中間層的Application Server負責資料存取服務與商業邏輯,後端的資料庫負責資料儲存等等,過程中,也飽受開發者的批評與指教,畢竟N-Tier的開發效率與執行速度在當時都是一團疑問,經過了十年的努力,時代也走到這裡來了,隨著雲端概念SaaS的興起或是大型架構的SOA觀念普及,N-Tier的開發儼然成為開發的主流。



如圖,多年來堅持的Application Server架構,沒有因為Delphi或是VS而改變,也沒有因為.net2或.net4而改變,更沒有因為Entity Framework而改變,從Pooling開始到所有Service的Log,到管理Server端的Package商業模組(DLL)到多元化的Login服務,從遠端接口服務到平衡負載的機制,最後發展到配合Workflow Foundation所提供的流程引擎服務等等,就是要提供你一個服務導向的架構,具有容易擴充性,與高度的安全性,並能滿足企業多數的要求下服務架構。

當然時代進步了,科技技術也進步了,我們當然無法原地踏步,新的技術的更新也是我們的努力重點,這次發展的N-Tier架構中,幾乎全用的新技術,後端改用了Entity Framework到通訊層使用了WCF,Client端採用了Silverlight,這些動作都是蠻大膽的。我們並不是要趕搭流行的便車,而是看到一個新技術的成熟居然會從之前的3~5年,縮短到2~3年,如果我們抱著舊的技術不放,或許幾年我們將消失在市場的波濤中。


UI的多元化

在這個彩色酷炫的時尚時代裡,使用者對於軟體使用者介面可說越來越挑剔,我們經常聽到的就是:有一個網站的功能可以這樣,你們可否也這樣;你看我的手機可以這樣用,你們是否可以這樣等等。UI已經到了五花八門各有喜愛的地步了,軟體除了功能與品質之外,美觀與親和成了User必要的選項,或許只願意躲藏在技術世界的你我,無法認同與適應,但這儼然已經成了普世價值,不得我們不去面對。

從上面的EEP架構上來看,除了Windows Mobile(我們會排入2011年的開發時程)之外,幾乎含括所有各式的UI介面,從Windows X的平台到Web平台,Web平台是最多樣的,如果你只是簡單的使用介面你可以使用ASP .net傳統頁面,如果你想有更多的互動性,你可以使用Ajax的UI介面(有Ext JS與JQuery可以配合),如果你想用最新最炫的Silverlight的介面,當然也可以直接在EEP中使用,其實這些技術都不大一樣,嚴格來說是差很大,但為了統合所有的開發,在EEP中可以使用同一套Application Server來同時提供這麼多種不同的UI與服務,這都要歸功於我們獨特的N-Tier架構所發揮的價值,將UI Client完全獨立,來面對未來多變且推陳出新的各式UI平台。


引入新的品質概念

60年代有了軟體產業開始,軟體產業就一直不斷的成長與茁壯,到了今日已經深深影響到你我的生活與企業運作,甚至是國家整體的國防安全與公共安全等等,影響之深可謂無遠弗屆。因此軟體品質在近10餘年來就不斷的被提起與重視,眼見著當今的軟體越來越龐大,系統越來越複雜,品質的也相對困難很多;隨著VS2005微軟推出了Team System針對軟體工程管理與品質管理功能,發展到VS2010的Ultimate版本,已將這些軟體工程與品質管理再推往更高更自動化的層次。

長期以來我們都是使用土法煉鋼的方式進行EEP的元件測試,不但無法顧及全面更是毫無效率可言,每次改版,都要用相同的步驟重複無聊再做一次測試,測試步驟也無法標準化,為此,我們在這次新開發的EF Module中,引入VS2010所提供新的品質測試功能來進行品質的提升,簡單說明如下:

1. 改用TFS中的Versiion Control功能:原來我們使用VSS來做版本的管理,這次配合Team Foundation Server所提供的版控來處理,功能更加完善,更容易搭配其他品管功能。

2. 使用TFS來管理工作/文件/Bug:利用VS2010與TFS整合,以Work Item來建立共享文件資料夾,還有Bug與Issue的紀錄與追蹤等等,透過Team Explorer 來讓管理人員隨時了解狀態。

3. 將Help內容置入程式碼中:我們在元件的Source Code中直接寫入Help的說明,利用Sandcastle help編譯到MS Help 2.0中,這樣就可以在VS中直接來呼叫出Help內容,就好像是VS的內建元件一樣方便,另一個好處就是會讓程式碼與Help在同一個文件中管理,不容易遺漏。

4. 使用VS的自動化單元測試:在EEP所寫的元件事件或方法,我們可以利用VS自動產生單元測試的程式碼雛形,然後由另一組的品管人員撰寫測試程式並利用Excel來傳入測試參數來做為測試樣本,目的是能夠做到Code Coverage 100% (將所有的程式碼100%走過)。

5. 使用VS的自動化UI進行功能測試:光靠單元測試是不夠的,很多測試必需靠UI TEST才能夠測出問題,因此透過VS的TEST Manager來規劃測試步驟,並實際依步驟一邊測試一邊錄製起來,下次更版即可以重新自動測試一遍,並且可以自動根據不同的案例參數來填寫資料等等。

6. 使用VS的簽入規範功能:可以設定程式碼簽入時,來制定自動檢查的Checkin Policy,規範程式碼的標準,如編譯是否成功,警告等級,引用規定,命名規則,是否經過單元測試,SQL隱形碼掃描通過等等,可設定通過才能checkin,以Check-in Policy充當你的品質守門員。

當然,或許這些品質管制措施還不夠,但這也是我們邁向品質測試自動化的一大步,如有所不足的,我們可以在未來逐漸改善與增加品管項目;不但如此,我們還要拋磚引玉將這些品管經驗與方法寫成文件,分享給我們EEP的客戶們,因為有越來越多的客戶開始重視寫出的系統不但要快速且功能必須滿足,並兼具品質,更重要的是測試可以自動化。



結語

我們這些從事軟體開發業者就是這麼悲哀,每5~10年一定會被洗牌一次,所有現有技術將會被Reset重來,或許是我們身為軟體業者的宿命,也許就是這樣,你可以隨時退出5~10年都無所謂,然後隨時可以重出江湖,跳躍式引用最新的技術,成為新的競爭者。20年來,不管技術發展如何,訊光就是要堅守崗位,從DOS的DBTOOLS,然後Windows的DBTWIN與Visual DBTOOLS,接著是Delphi的EEP平台,最後到.net的EEP平台,歷經這麼多時代背景與技術,我們始終還是一種路線--就是開發工具,始終就是一種理念--就是讓開發者少寫程式。雖然時代進步的很快,Delphi/VS原本是我們的競爭者,變成合作夥伴,中間的轉折就是體會須善用資源,不是蒙頭硬幹,無論技術更新到哪裡,開發工具變得多方便,始終都需要有廠商將 『可以用且好用』的技術找出來,然後包裝好讓懶人可以輕易使用,或許每代產品都無法盡如人意,但我們用心服務,陪客戶成長,卻始終是我們的使命,隨著這次的VS2010與EEP2010的發表,期待客戶們與開發者都能有更高的開發效率,更有品質的呈現功能,更輕鬆的完成任務。(完)