公告資訊

未經授權,禁止轉載網站文章與內容。如有需要可以跟我聯絡,謝謝!!




2009年11月25日 星期三

Web (WCF) Service的設計考量 (1) - 基本觀念

繼續談談 SOA Service Layer方面的設計考量。

前一篇網誌文章中提到,通常有跨平台整合、或是需要透過網路提供遠端存取的共用元件,通常才會考慮建立成為Web Service。除此之外,在設計Web Service的時候,也有些需要注意的基本概念。

Web Service雖然是透過服務介面(interface)與用戶端程式繫結,然而就跟一般應用程式一樣,每個Web Service所提供的功能是獨立的,而且與一般應用程式一樣,採用層級的架構設計。Web Service基本的層級架構如下圖:

image 

在設計時,必須盡可能的將 Data Layer 與 Business Layer分別封裝在不同的元件中,並且各層級之間再透過抽象的介面結合。一般來說,後端的元件可以製作成Shared Component,再提供給內部的其他系統整合時使用。

而開發Service Layer時,必須要把Service Contract、Service Implementation、Data Contract 等等,分別定義到不同的組件中。換句話說,你並不應該使用Visual Studio 開發工具新增一個預設的Web Service或是WCF Service專案之後,就只用這一個專案完成所有Service Contract、Service Implementation、Data Contract 的開發;正確的做法應該是另外再建立不同的ClassLibrary專案來開發與維護不同用途的服務元件。這樣的做法可以讓你將來需要調整服務的內容時,可以擁有比較高的彈性;同時也可以比較容易進行單元測試,確保Web Service的穩定性。

同時,也必須要注意到,每個 Web Service 同時也會是一個獨立的應用程式,用戶端程式必須要透過 Service Layer所定義的介面(服務合約),才可以使用其功能。而 Web Service 之間若是需要整合的話,可以透過下面幾種方式:

1. 若是後端資源(如:資料來源)方面的整合,可以透過 Data Layer所提供的Shared Assembly:

image

而通常這種方式,因為跳過了 Business Layer,所以僅能做比較邏輯較單純的資料異動。

2. 若是要進行功能面的整合,則必須要透過 ESB(Enterprise Service Bus),或是再建立一個更上層的 Web Service 來完成;而不是在 Web Service 之間直接建立交互參照:

image

舉例來說,假設 Service A 是庫存系統的服務,提供產品庫存查詢與異動的介面;而 Service B 是訂單管理系統的服務,提供新增訂單與訂單異動的介面。而若是需要整合客戶系統提供即時下單功能時,就應該另外建立一個新的Service C,並且把處理訂單的流程( Business Workflow)封裝到新服務的功能當中。這樣的架構會比你在Service A 和 B之間建立交互參照來得有彈性,而且也較容易維護多變且複雜的商業流程。

2009年11月22日 星期日

Private Component、Shared Component and Web Service

SOA (Service Oriented Architecture) 與雲端運算是目前相當熱門的話題,最近看了一些 design,有些感想。

先請問各位,private component、shared component與 web service,有甚麼相同之處 ?

原則上,這三種都是用來封裝可以重複使用的程式邏輯的技術:

  • Private component 的組件必須要放到應用程式的目錄中執行,一次僅可以分享給一個應用程式使用。
  • Shared component 則是必須要註冊到執行環境的GAC(Global Assembly Cache)中,可以提供給整台電腦的應用程式共用。應用程式在存取shared component時,必須指定所呼叫的組件版本。
  • Web Service 則是發布到網路上特定位置的公開介面(interface),以單一應用程式的方式執行,提供用戶端程式可以透過網路存取程式邏輯。Web Service 是以訊息為導向(message-oriented)的溝通模式,因此用戶端應用程式在存取Web Service 時,必須要先取得Web Service的WSDL文件,並且根據WSDL文件建立服務要求,再取得服務的回應。

而很多人認為,所謂的 SOA,就是要把之前所有的共用元件,都做成Web Service或是WCF Service。於是乎東一個Service、西一個Service,最後不但效能不好,出問題也很難除錯 -- SOA的好處沒享受到,反而增加了很多維護的成本。當然,在目前這一個開發Web Service就像喝水一樣簡單的時代當中,很多人都會有這樣的誤解,因此選擇了錯誤的技術去解決問題,反而製造出更多的問題。

我們以Data Access Componets來舉例,因為很多人導入SOA的第一個步驟,就是先從DAL著手。一般應用程式對於 Data Access Component 都會有幾個基本的需求:新增、修改、刪除、與查詢資料;當然,也包括了要做交易(transaction)的處理。若是你將 DAL實作成Web Service,你馬上就會面臨幾個問題:

1. 無法進行交易。雖然微軟的MS-DTC 可以搭配WS-Transaction提供交易的支援,但若是要執行跨平台的交易處理,不是一般的開發人員可以容易實作與維護的。

2. 存取資料效能變差。因為Web Service本身也是獨立的應用程式,因此會有自己的驗證/授權、建立執行環境等等邏輯需要執行,都會影響資料的存取速度。

3. 維護成本增加。建立Web Service需要規劃新的部署與維護計畫,更重要的是,若是將來前端程式出錯,要除錯會是一個很大的災難。

4. 透過Shared Component,用戶端應用程式執行環境是否安裝必要的元件,只需要從檔案總管就可以看出來;若是要更新介面,只需要安裝新版本的組件到production server上,很容易就可以讓新舊版本共存。然而對於Web Service來說,就不是那麼件容易的事。

因此,對於大部分.NET的系統而言,Data Access Componet 其實只需要建立成Shared Components,將來部署到執行環境的機器中就夠了。會需要開發Web Service,一般有兩種情況:

1. 跨平台整合元件的需求

2. 透過網際網路直接存取元件的需求

若是沒有這兩個前題,一般共用元件其實並不需要每個都做成Web Service。參考微軟針對Service Application中 Service的特性的描述如下:

"Services support a heterogeneous environment by focusing interoperability at the message/interface definition."

下次,再跟大家繼續分享其他Web Service設計上還需要注意的其他地方。

通過了 OCUP Intermediate 認證考試 ...

把OMG的認證考試用書 (UML 2 Certification Guide: Fundamental & Intermediate Exams (The OMG Press))裡面Intermediate考試的範圍整理過之後,上星期也順利的通過了OCUP Intermediate 的考試。

基本上,OCUP 這兩級考試的範圍,都沒有超過認證用書的內容,也跟網站中所標示的一致。但是因為UML本身有很多抽象的定義,若是沒有一些UML 經驗,或是沒有接觸過UML 的人,直接看書或是UML Superstructure 的規格應該會是一頭霧水,更不用說是考試了。而考試本身其實並不會太難,主要的出題方向是在理解與應用的方面,因此不用硬去記metamodel,反而要花一些時間去理解metamodel對應到實際的UML notation 時,所表示的意義與特性。

過一陣子整理完Advanced考試的範圍資料之後,再去挑戰最後一級的認證考試。

2009年11月19日 星期四

近況更新

最近陸續接到一些讀者詢問有關於Silverlight 3的書是不是已經出的問題,特別在這裡說明一下。

首先,很感謝悅知出版社的邀稿,讓我有機會把Silverlight到目前為止的研究心得有可以集結成冊的機會。但是幾經考慮之後,Silverlight 3的出書計畫還是在最後關頭停住了。主要有幾個原因:

1. 微軟這次在Silverlight 3 SDK與Blend 3 中文版中所提供了相當多的資訊,這些資訊對於Silverlight 3的入門使用者來說,已經是相當足夠了。

2. 這本書定位是在實戰的等級,但是剛好前陣子公司有重要的案子進行,沒有很多時間可以refine 書裡面的內容;為了維持品質,所以在取得編輯大人的諒解之後將這本書的出書計畫暫停了。

當然,在這裡也要向等待的讀者致歉。不過出書計畫只是暫停,並沒有停止。目前新的計畫是:

1. 關於Silverlight 3,我還是會持續透過"線上講堂" 與各位交流。

2. 未來的bandwidth放在整理 .NET Framework 4.0 的範例與資料。未出版的Silverlight 3 的內容會與 .NET Framework 4.0 所提供的雲端運算服務整合成另外一本書,等級也是會定位在實戰的等級,以VS 2010為開發工具,做為學習完C#程式語言之後,可以延伸學習的進階書籍。

而從我上一篇分享的網誌中,大家應該也可以嗅到了未來微軟的開發平台將會與UML有更緊密的結合(請參考 "Microsoft Focuses on Bringing Modeling Mainstream, Improves IT Delivery of Business Strategies")。因此最近正透過參加OCUP認證考試,複習與整理UML的相關知識,希望可以繼續提供大家更多充實的內容。也因為準備考試的關係,所以最近網誌內容更新的比較慢一點,敬請見諒;當然,如果各位有問題或是想要我分享的內容,都歡迎繼續留言與我聯絡,謝謝。 

2009年11月15日 星期日

通過了OMG Certified UML Professional (OCUP) Fundamental 認證

OCUP(OMG Certified UML Professional),是目前主導UML(Unified Modeling Language) 規格發展的國際組織 OMG (是 "Object Management Group",不是"Oh, My God !") 所推廣的UML認證。比起Microsoft或是Sun Java等大廠的認證來說,在台灣算是比較冷門的認證。然而以UML本身來說,卻是你在任何專案的文件當中,都一定會看到、用到的東西;因此就算沒有了解全部的UML文件規格,也至少會在文件中看過Class Diagram、Use case Diagram 等基本的UML圖。

目前系統開發的分工越來越細,拜SOA發展所賜,系統的執行環境與架構也越來越複雜,一般公司的系統外包給協力廠商開發或是透過雲端系統執行,已漸漸變成了趨勢。而要將系統外包給協力廠商開發,就必須要在系統進入開發測試階段之前,透過UML建立起完整的系統模型。此時,你就不能只是 "會用" UML的階段,還必須要 "了解" UML,專案才有辦法在發包之前確定規格以及找出問題。

理論上,UML 是以圖形化方式描述系統的架構,應該是相當容易了解;但是往往大家在應用的時候,就會出現一些盲點。例如有多少人可以正確的告訴我,下面這兩張圖所代表的意義跟差異?

image

另外一個常看到的問題是, 當 SA/SD 使用UML完成設計之後,因為開發人員或是協力廠商對於 UML的規格不熟悉,誤解了系統文件中設計的內容,而做出了錯誤的東西。因此若是要導入 UML,除了SA/SD 人員一定要熟悉 UML的規格之外,開發人員也必須要對 UML 有一定程度的了解,才能夠成功。

Microsoft 近幾年來,也慢慢的開始與這些軟體工程的公開標準整合。像是BizTalk Server 2006就支援了BPEL(Business Process Execution Language);在WF中 透過設計工具就可以以建立類似 UML 的Active Diagram、State Diagram的方式,建立程式的流程。在 "Microsoft Focuses on Bringing Modeling Mainstream, Improves IT Delivery of Business Strategies" 中,微軟也正式的宣布加入OMG組織;並且在VS 2010中,加入了 "Modeling Projects" 的專案範本 -- 換句話說,你可以直接使用 VSTS 2010 建立專案的 UML 文件,並且透過 TFS 加入專案中管理。關於這部分,以後會再慢慢跟大家分享。

而 OCUP,就是用來證明你對 UML 規格了解程度的認證。OCUP 認證分成三級,你可以根據在專案中所扮演角色的角色,決定你要考到哪一個等級。每個等級的詳細說明在網站(http://www.omg.org/uml-certification/index.htm) 上介紹的很清楚,各位如有興趣可以自行參考;一般開發人員應該考過初級(Fundamental)就可以了。

準備 OCUP 的考試,其實也不太難,因為UML的規格其實在規格書當中定義的相當清楚 -- 但也就是因為太清楚了,所以看起來會有點辛苦。OMG 自己有出版一本認證教材,整理的很詳細,解釋的也很清楚:

UML 2 Certification Guide 

UML 2 Certification Guide: Fundamental & Intermediate Exams (The OMG Press)
      by Tim Weilkiens and Bernd Oestereich

這本書很有系統的介紹了 UML 的規格,以及整理了 OCUP 考試所需要了解的重點。就算你沒有要考 OCUP 認證,這本書中的經典範例也可以幫助你深入學習 UML,我個人認為這是每一個導入UML 的專案團隊所必備的一本工具書。

 

2009年9月28日 星期一

Silverlight 3 與ASP.NET MVC

TechDays 2009 會後,有學員問我說:"老師,請問一下Silverlight 3 是不是不可以用在ASP.NET MVC 當中 ?"。

事實上,對於Silverlight 3的Web 應用程式開發來說,整合ASP.NET MVC可以減少很多開發和維護上的effort;相對的,以Silverlight 3 做為ASP.NET MVC 的前端開發技術,也是相當合適的。

在 "微軟新一代分散式架構與網際網路開發技術剖析(2)" 這一篇網誌中,曾為大家剖析過MVC 架構在ASP.NET 的技術中,必須要搭配ASP.NET AJAX 來進行實作。然而,就如同我在TechDays 的場次中為各位說明過的,ASP.NET AJAX 主要仍是以整合ASP.NET Server Control 為考量,因此在發展MVC架構中的展示層(View),或是以用戶端操作經驗為主的RIA應用程式時,就會出現比較多的一些限制。

因此,下面是我的看法:

"以Silverlight 3 做為開發ASP.NET MVC 展示層操作介面的主要技術,不但可以讓你更容易建立高互動性的使用者操作介面,更可以透過ASP.NET MVC 所建立的伺服器端環境,簡化Silverlight 3應用程式在伺服器端的開發與維護工作"

兩種技術可以說是相輔相成的!!

TechDays 2009 – Silverlight 3 應用與導入(範例1與2)

我在TechDays 2009的 "Silverlight 3應用與導入"的場次當中,針對SIlverlight 3的協同開發做了初步的介紹,後續也有許多朋友跟我詢問有關於Silverlight3 的開發相關的問題,可見大家對於導入Silverlight 3 開發企業的Web應用程式都很有興趣。

的確,對於Silverlight 3的Web應用程式發展而言,企業內部比較容易有可以控制的用戶端環境,而且很多RIA應用程式的開發需求其實也是從內部系統來的。導入Silverlight 3在加上ASP.NET MVC,可以讓你很容易開發需要的Web 應用程式和後端的網路服務整合。

附件是我在TechDays 2009中所實作的的第一個與第二個範例。其實對於學習Silverlight 3應用程式開發來說,複製範例回去看XAML或是程式碼內容,對於學習是沒甚麼太大的效果的--就跟BizTalk應用程式的開發一樣。因此即便是在千人的演講場次中,我也堅持要用live demo而非開程式碼的方式介紹,這樣大家才可以學到正確的開發步驟。當然,時間有限,所以詳細的Silverlight 3開發觀念與技巧我會在整理到下個月的書當中。

2009年9月24日 星期四

TechDays 2009 - Silverlight 3 應用與導入實務


9月23號在微軟的TechDays 2009研討會中介紹了"Silverlight 3應用與導入實務",有興趣的朋友可以從下面的連結下載演講的Silde 參考。當天的範例我也會陸續的分享出來,如果大家對於使用Silverlight 3 開發Web應用程式有興趣或是需求的話,下個月我將會透過悅知出版社出版一本"Silverlight 3 Web應用程式開發實戰",屆時各位可以用來做為開發時的參考。


Office封面-完稿 [轉換]

2009年7月13日 星期一

移除Windows Service

移除Windows Service的幾種方式:

1. 新增/移除程式:

一般開發Windows Service專案時都會搭配開發Installer 跟Setup Project, 所以在大部分的狀況之下安裝好的Windows Service 都可以從[控制台]-->[新增/移除程式]中移除。但是要記得的是:一定要先將服務停止之後再移除--否則就要用到最後的大絕招了。

2. InstallUtil.exe

在開發階段,你也可以直接呼叫InstallUtil.exe 工具程式幫忙新增/移除 Wundows Service,這樣就可以省去建立Setup project的時間。

3. SC.exe

SC.exe 是Windows作業系統中管理Windows Service 的一個工具程式,可以用來建立、啟動、停止跟刪除Windows Service。

4. Regedit.exe

看到這工具程式名稱,應該就知道大絕招是什麼了。當你移除Windows Service時,若是沒先將Windows Service以及其關聯的服務停止,有時還是可以移除,但是Windows作業系統中的註冊資訊還是會繼續存在,下次你要在崇裝服務時就會出現錯誤訊息。如果是這樣的話,就要使用Regedit.exe 工具程式,刪除在 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services 裡面的服務註冊資訊,然後再重新開機,這樣就可以將Windows Service 清除乾淨了。

2009年7月7日 星期二

如何在.NET程式中存取與設定資料夾與檔案的存取權限 (ACL)

在悅知出版社的網站中分享了一篇如何利用 .NET程式存取及修改資料夾存取權限的文章,有興趣的朋友可以點選下面的連結參考這一篇文章:

如何在.NET程式中存取與設定資料夾與檔案的存取權限 (ACL)

2009 微軟最有價值專家 (Microsoft Most Valuable Professional,MVP)

在7月2號,收到微軟所寄來的通知:

親愛的微軟「最有價值專家」(MVP),您好︰

在歷經長達數星期的激烈競爭與評選,恭禧您從眾多優秀的競爭者中脫穎而出,成為 2009年第四季微軟「最有價值專家」(Most Valuable Professional, MVP)!微軟技術社群暨最有價值專家全球總監 Nestor Portillo,及微軟技術社群暨最有價值專家亞太及大中華區 (APAC) 總監Howard Lo,帶領全微軟技術社群暨最有價值專家部門同仁,在此恭禧您!

微軟「最有價值專家」(MVP)是贏得微軟技術社群討論區、論壇參與者肯定的最高榮譽,同時也讓廣大的微軟技術討論區、論壇參與者認識到您的貢獻是極具價值的!

回顧過去這半年來,因為換工作所以在很多地方都做了調整,唯一沒有調整的就是對於吸收新知識的熱情。當然,換了新的工作也讓我有更多的經驗可以跟大家分享。未來這一年微軟陸續會有很多新的、重要的開發技術與工具會陸續推出,我也將繼續為大家介紹與分享這一些技術!

附上2009年第四季微軟最有價值專家的當選名單,也恭喜這一些一起得獎的專家!

當選名單

趙敏翔,王作桓,王仲麒,王寧疆,朱泰銓,游佩諭

陳景忠,何偉碩,陳少華,柯博安,王恩琦,鄭祿盛

簡浩洋,呂高旭,張俊宜,傅嘉賢,林柏甫,郭智誠

陳明倫,張書源,黃燕忠,張智榮,蘇晉正,歐志信

農令辰,洪子寓

2009年4月23日 星期四

初窺 BizTalk Server 2009

最近Micrisift Virtual Lab 發布了三個新的BizTalk Server 2009的Workshop:

雖然已經不需要再教BizTalk Server的課程了,不過這個我從小教到大(BizTalk Server Technical Preview ~ BizTalk Server 2006 R2) 的產品有了新的版本,總是會讓人有些期待 - 看看又有哪些新的東西加了進去。先跟大家分享一下從Microsoft Virtual Lab所準備的環境中目前所看到的一些新東西:

1. 基本上,主要的功能都和BizTalk Server 2006 R2差不多,一樣提供了對於RFID模組的支援。

2. 整合Visual Studio 2008 開發環境,可以透過Visual Studio 2008開發工具建立BizTalk Server專案。比較有趣的是可以針對Map的XSLT進行中斷點偵錯,以及可以建立Unit Test執行BizTalk Component的單元測試。

3. 提供升級精靈,可以將BizTalk Server 2006的專案升級成BizTalk Server 2009的專案再部署到新環境中。這一點我想問題應該不大,因為BizTalk Server 2006早就支援業界的XML標準,因此升級精靈應該是針對Visual Studio的專案範本升級。

大家如果有興趣,也可以點選上面的連結進去玩玩看 !

2009年3月26日 星期四

何謂軟體即服務(SaaS)?

軟體即服務(Software as a Service,SaaS),或是微軟所提出的Software + Service,都是屬於新一代雲端運算的架構。雖然推出很久了,但是還是很多人對它還是一知半解。剛好最近寫了一篇相關的文章發表在悅知出版社的網站上,各位有興趣的話可以上去看一下:

http://www.delightpress.com.tw/article_c.aspx?article_id=41

2009年2月4日 星期三

Windows服務啟動帳號的問題

在某些情況下, 會考慮使用網域上的特定使用者帳號作為Windows服務的啟動帳號. 但若是在Windows啟動時(或是手動啟動服務時)無法連上DC, 就會出現”這個帳戶名稱不正確或不存在 ……”的錯誤, 必須要注意這一點.

2009年1月7日 星期三

Virtual PC 掛點....

昨天回家想要把Silverlight 2正式版的環境更新到Virtual PC的開發環境中,沒想到一起動Virtual PC的環境,就顯示掛點的訊息....

因為這樣的關係,所以我就沒辦法更新我的網站內容了。因為最近幾天我在教Microsoft CRM 4.0的課,所以最快要等到星期五(1/9)晚上才有時間重新將網站上線了。

2009年1月6日 星期二

網站更新中

昨天有朋友反映 www.silverlight.idv.tw 的網站無法連上,其實是因為在新年期間將伺服器安裝積存的更新之後,設定未修改的關係,昨天已經將網站重新上線了。但是還有一個地方沒有修改到,就是原本的Silverlight桌面程式,還沒有修改到SIlverlight 2正式版的環境,這部分可能要等我今天晚上回家再來修正一下了,先跟各位朋友說聲抱歉,可能要到明天才能繼續讓大家正常操作了。

最近在研究Azure平台的開發,如果發展起來的話,以後通通放在雲端平台就輕鬆多了....

最新回應

Loading...

即時與版主對話


(若狀態顯示"忙碌"時,我可能無法馬上回應。你可以留下Email,我會盡快跟你聯絡,謝謝喔!!)