公告資訊

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




2008年3月26日 星期三

問題與回應(3/26)

1. 請問我目前如果要學ASP.NET的話,需要學哪些東西? 需要學Silverlight嗎?

=> ASP.NET是從ASP演化而來,因此主要的精神是以Server端的程式結合Server端的資源產生動態網頁的內容。ASP.NET的技術發展到現在已經相當的成熟,在ASP.NET 3.5中結合ASP.NET自己的AJAX框架,可以將動態伺服器網頁的技術發揮到淋漓盡致。因此現階段你需要學ASP.NET的話,先學基本的.NET程式語言,再學ASP.NET的Server Control與服務的使用,最後在學ASP.NET AJAX,你就可以開發出功能強大的網際網路應用程式。

至於Silverlight,主要是執行在前端瀏覽器中,加強使用者操作經驗的技術,就像是Flash與Java Applet一樣,可以滿足部分網頁中動態效果的需求。但就目前的架構看來,與伺服器端網頁與控制項的互動性不如AJAX,設計工具(Expression)與開發工具(Visual Studio 20??)也還沒到位,不像現在Visual Studio 2008對於JavaScript與AJAX技術有相當好的整合。因此現階段你把ASP.NET跟AJAX學好就近乎無敵了,前端的東西就交給設計人員去處理(請參考"你是設計人員,還是開發人員?"),有閒情逸致的話再慢慢看就好。

2. 請問一下如果我要學Web 2.0的話,要從哪邊學起?

=> "Web 2.0" 跟 "M型社會" 一樣,都是行銷用來騙錢的名詞,在網際網路開發的技術中,沒有所謂"Web 2.0"的規格。Web 2.0只是一個概念,重點是網站透過不斷設計的活動,讓會員與會員之間可以保持緊密的互動,並延續網站的生命。Web 2.0的網站設計有兩個重點:

1. 活動:透過不斷更新的活動,讓會員之間有互動性,並願意持續瀏覽網站,對網站有貢獻。

2. 管理:除了活動需要管理之外,網站管理人員還要必須針對網站的內容做管理,以避免惡意的內容影響到會員瀏覽網站的意願。

因此,如果你是要建立所謂"Web 2.0"的網站的話,重點是在經營方式,而不是技術。如果你要問的是技術的話,除非你的活動有額外的需求,否則一般學會ASP.NET+AJAX就夠了。

2008年3月25日 星期二

問題與回應(3/25)

1. 請問一下C#與Visual C# 2008、Visual C# 2005有甚麼不一樣?

C#跟VB.NET(現已改稱為VB)都是用來開發.NET平台程式的程式語言;而Visual C#則是C#程式語言的視覺化開發工具。Visual C#跟C#程式語言的版本有關,也跟.NET Framework的版本有關,Visual C# 2008是支援C# 3.0語法與.NET Framework 3.5的開發工具,和Visual C# 2005有很多不一樣的地方,最明顯的就是多了對於WF、WCF、WPF和LINQ開發的支援。我的書的最後幾章就是介紹這些新的功能,有興趣的話你可以參考一下。

2. 請問一下.NET目前有哪些認證?

目前.NET的認證類型分為MCTS、MCITP跟MCPD等,每種技術(Web、Windows、BizTalk Server....)都有自己的認證,詳細的介紹你可以參考微軟的Learning網站(http://www.microsoft.com/learning)、恆逸資訊網站(http://edu.uuu.com.tw)或是直接參加恆逸資訊的認證課程說明會,都可以獲得關於.NET認證的資訊。

2008年3月22日 星期六

Silverlight 2.0 Beta 1 First Look

前一陣子測試IE 8的時候,順便也下載了Silverlight 2.0 Beta 1,看一下有沒有甚麼特別的地方。不過因為趕書稿的關係,所以沒有太多時間做完整的測試,先說說從架構中看到的設計方向。

Silverlight原本標榜的就是和Flash一樣具備多媒體與動畫的展現能力,這一點在Silverlight 1.0中就可以看出來了。在Silverlight 2.0目前看到的架構當中,主要擴充下面幾個部分:

1. 與瀏覽器的整合能力

2. 與伺服器端的整合能力

3. 新的控制項

首先,就與瀏覽器的整合能力來說,新的Silverlight Runtime應該會採用跟WPF一樣的架構,以多執行緒的方式分別處理UI的動作與.NET的程式碼。這也意味著執行時需要較多用戶端的資源,而瀏覽器的穩定性也會影響到使用者操作的經驗。目前還在Beta 1的版本,所以也測不出來在Silverlight Runtime當中的CLR中的GC在不同的平台是否都可以有很好的表現。

Silverlight 2.0新增加了與伺服器端的繫結能力,跟Flash一樣,可以透過網路服務存取伺服器端的資料。但為了執行效能與跨網域安全性的考量,以Syndication的方式擷取資料應該是目前最可行的架構。也難怪在Silverlight 2.0當中會增加對於LINQ to XML的支援,就像在我的"Visual C# 2008精研講座"第17章的RSS Reader做法一樣 --> 透過LINQ to XML處理從伺服器端同步的RSS資料,再去做資料繫結或是其他的處理。

至於新的控制項應該是大家都期待的,終於可以不用自己畫了! 不過就目前看來,如果要開發的是具有新增、修改、刪除等功能的資料存取表單的話,使用ASP.NET的 Server Control暫時還是無法取代的。

等Silverlight 2.0規格確定了之後,Expression Studio與Visual Studio 2008開發工具有完整的支援,這些東西都會更容易使用。畢竟沒有多少開發人員會想要自己畫Grid或是Button,也沒有設計人員使用記事本維護HTML是一樣的道理。

2008年3月21日 星期五

問題與回應 (03/21)

1. 請問一下學完 .NET之後是不是應該要再去學Java,聽說學Java才可以打好程式設計基礎?

=> 第一點,你先確定你真的 "學完" .NET了。如果你真的 "學完" 了,那我也就不需要回答了.....

在微軟開始進入.NET時代之前,的確,Java的世界提供了標準物件導向的環境,也強調要從設計模式(design patterns) 開始學習,對於程式設計人員來說,的確養成比較完整的程式設計概念。

而所謂的設計模式,其實並沒有語言之分。自從進入.NET世代之後,C#與VB也都是物件導向的程式語言,因此很自然的也可以套用物件導向的設計模式開發。但就好像很多人以為"Honda '" 就是 "喜美" 一樣,大家就自然以為微軟平台的程式沒有所謂 "設計模式";其實微軟在.NET 1.0剛出來時就已經建立了 Pattern & Practice的網站,而且裡面所有介紹設計模式的電子書,都是可以免費下載的。

所以我覺得,如果真的要學的話,其實.NET平台的世界中還是有很多東西可以去研究。當然,如果有興趣,能多學一些程式語言,多看看其他技術的架構也是很好的。

2008年3月18日 星期二

問題與回應 (03/18)

很抱歉,基於一些個人的考量,所以我的網誌不允許匿名發表意見。不過有一些朋友在這幾天透過了上課的時間或是Email或是即時通訊的留言,提出了一些不錯的問題,慢慢整理給大家參考:

1. 使用WEB API是不是可以完成直接選取檔案系統的檔案或資料夾,然後批次上載檔案的功能?

=> 沒錯。在ASP.NET中雖然提供了FileUpload的控制項,但若是想要做到可以一次選取多個檔案做批次上傳的功能,甚至於製作像是"我的公事包"一樣可以透過網路磁碟做資料備份、同步的功能的話,並非一件容易的事。主要的問題還是發生在瀏覽器所造成的限制,因此有很多的動作是無法直接在用戶端執行的。

但你可以試著建立可以上載資料的Web API,然後再透過Windows表單建立用戶端應用程式,就可以製作一個像是Google Picasa一樣,使用者可以隨時在用戶端編輯,再批次上載檔案的工具。

2. WF會不會很難? 以工作流程為導向的設計方式跟物件導向有甚麼不一樣?

=> WF其實一點都不難,而且可以減少很多程式開發及維護的力氣。對於剛開始接觸WF的開發人員而言,你可以先透過我的 "Visual C# 2008精研講座"書中的介紹開始入門。熟悉基本操作概念之後,你可以參考我的Blog中所設計的延伸範例與新一代MVC架構介紹,獲得較全面性的了解。至於較進階一點的範例或是實作方式,會在下一本書做介紹,或是你可以來參加4月份我在微軟的研討會,我會親自做介紹。

以工作流程為導向的設計方式主要是要將系統分析時,由Usage Scenario衍生出來的Workflow Sequence、State、Activity等直接定義成工作流程,如此一來就不需要另外再定義物件來維護這些抽象、而且可能會需要隨時做調整的系統規則。另外,一般在進行物件導向系統分析時,若是使用者一開始所提供的資訊不夠完整,或是一些隱藏性的需求沒有被考量進去的話,系統很容易失敗。以工作流程為導向的設計方式結合物件導向所建立的模組(Model),可以減少設計物件模型的時間,並且讓你所設計的系統架構更有彈性。

2008年3月17日 星期一

關於ASP.NET的MVC設計模式

可能是因為ASP.NET 3.5要出MVC Framework套件的關係,最近很多朋友問我關於在ASP.NET應用程式中導入MVC設計模式的方式。前面我已經說明過,MVC設計模式本身是一種應用程式的開發架構,你只要了解就可以直接應用在應用程式當中,不一定需要特別的套件。幾年前我在教JSP、Servlet及J2EE課程時也沒有使用特別的套件,一樣可以實作出MVC的架構出來。

然而談MVC的人多了,我看了一些國內外研討會中的東西,有些觀念也講錯了,這樣很容易誤導大家。微軟的課程從前比較沒有特別強調MVC架構,但事實上,微軟在2003年6月就已經發表了ASP.NET的MVC實作架構,你可以從Pattern & Practices的網站上找到這一些資料:

Pattern & Practices的網站上還有很多好東西,像是各種不同類型應用程式的不同設計模式及開發準則介紹,對於各位發展應用程式有很大的幫助。

2008年3月15日 星期六

使用WF設計MVC的Controller

Windows Workflow Foundation(WF) 技術,提供應用程式流程設計的架構,做為ASP.NET 3.5或是一般MVC設計架構中開發及維護Controller邏輯的技術相當合適。MVC設計模式中的Controller負責維護狀態,並且根據Model的執行結果決定使用者所要看到的下一個顯示介面(next view)。在我的下一本書當中,將會為各位深入剖析WF在企業級應用程式的運用模式。而這一個範例和前面的兩個範例,主要是要給 "Visual C# 2008精研講座" 的讀者們做延伸學習用的。

"Visual C# 2008精研講座" 這本書中,我在 15 ~ 18章中介紹了Visual Studio 2008開發工具操作WF、WCF、LINQ、WPF的基本步驟,看完之後對於想要再進一步應用這些技術的讀者來說,應該會有點意猶未盡的感覺。但是如果要把這些技術說明清楚,卻也不是三言兩語可以解決的事。因此目前我正在進行下一本深入介紹WF、WCF實戰技術的書籍開發。在截稿之前,為了讓各位對於這些技術有個架構性的通盤概念,因此我先製作了這些延伸範例。各位在閱讀完 "Visual C# 2008精研講座" 之後,可以試著研究這幾個範例程式,相信可以幫助各位在一堆新的技術名詞當中,找到屬於開發人員自己的技術領域。

雖然是MVC的範例,不過我先省略掉Model,讓範例簡單一點。這一個範例簡單的說,就是使用WF的技術設計一個接收姓名與年齡的工作流程,讓前端的網頁或是Windows Form程式分別輸入使用者名稱與年齡之後,最後工作流程再回傳 "Hello, XXX. Your age is XXX."的字串。為了讓工作流程容易了解,先以循序工作流程為例,實務上應該是用狀態機器工作流程較合適。按照下面步驟執行範例:

1. 使用Visual Studio 2008開發工具到解壓縮後的資料夾開啟解決方案檔(.sln)。

2. 開啟時會有警告訊息,這是因為我將Web Client網站先行編譯過在放進去,按下 "是" 就可以開啟解決方案。

3. 開啟之後先瀏覽WFWCF_SeqSample_01.Workflow1_WebService網站下的WFWCF_SeqSample_01.Workflow1_WebService.asmx服務位置,確認服務測試網站啟動,並且Port No = 64781。

4. 先到解壓縮後的資料夾執行WinClient子目錄下的WinClient.exe。你可以同時執行幾個WinClient.exe程式,因為Controller是建立在Server端而且是由WF維護,因此每一個WinClient.exe程式的執行狀態都不會互相影響,同時每次輸入資料,工作流程就會傳回給用戶端顯示的結果。

WFWCF

5. 回到Visual Studio 2008開發工具,瀏覽WebClient專案中的Default.aspx網頁,你會發現表單會有跟WinClient.exe一樣的控制效果。多用幾個瀏覽器開啟Default.aspx,你會發現每次輸入資料,工作流程就會傳回給用戶端顯示的結果。

6. 這就是我前面網誌(http://john-publish.blogspot.com/2008/03/mvc-2.html)所介紹的以Web Server結合WF技術設計Controller的一種實作。建立好的Controller發佈到IIS上之後,將來就可以提供給所有企業前端的應用程式供同使用。若是需要修改Controller的邏輯,只需換掉Server端工作流程的動議即可。當然,若是你停止了步驟3 所建立的服務測試網站,WinClient.exe或是WebClient就也就都無法執行。

PS:

1. 年齡請輸入數字,我沒做防呆處理......

2. 或許你會說,"這有啥了不起,不就是做一個網路服務罷了!"。如果你是這樣想的話,請你再仔細想一下,在這一個範例當中,用戶端會"分別"存取網路服務"兩次"。就是因為我們使用WF設計了Controller的邏輯,因此每個用戶端程式(View)的執行狀態才會維護在Server端(Controller)的工作流程實體當中。

-----------------------------------------------------------------------------------------

之前有朋友問我,"聽說ASP.NET 3.5 要出MVC Framework,那我是不是一定要使用ASP.NET 3.5才可以設計出MVC架構的網站?"。其實MVC架構主要的重點在於分工、分層來設計、開發跟維護。透過WF工作流程的支援,我們可以直接在系統設計時,將應用程式工作流程透過WF實作,如此一來OO的設計就只需要著重在Model與資料物件的部分。而在Model、View與Controller之間,可以透過訊息(Message)來傳遞資料。如此一來,Model、Controller與View都可以分散在不同的平台上執行, 這就是新一代企業級應用程式的設計模式!

希望目前透過這些說明,能幫助各位開發人員對於ASP.NET3.5的網站及.NET Framework 3.5應用程式的開發技術,能夠有一些基本的概念,才不會有 "到底我該學甚麼?" 或是 "學了這個要用在哪?"的困擾。延伸的範例暫時做到這裡,更完整的介紹,我將在下一本書中為各位呈現。

2008年3月14日 星期五

ASP.NET 3.5的Web API範例

如果,你有下載ASP.NET 3.5 GridView範例的話,一定會發現到裡面有一些額外的東西。沒錯,那就是我在專案中加入了WCF的服務。這一個範例延續前一個範例,我把網站可開放的功能透過WCF發佈成Web API,如此一來,我的Windows Form應用程式就可以直接透過Http繫結到Server端的功能。因為時間關係,詳細開發步驟也是暫時先省略,但在我的新書第16章有介紹WCF,各位可以先參考。簡單介紹一下範例重點:

1. \app_Code\Service.cs:服務元件原始檔。

2. web.config:服務組態檔,搭配IIS 7.0可以同時支援多種不同通信協定繫結端點。

Client端就更簡單了,[加入服務參考],再透過服務代理元件(proxy),就可以呼叫Server端功能,完成資料存取動作。

RIA

使用這一個例子注意一下:

1. 解決方案開啟之後,先執行網站中的Default.aspx,確定Server端資料存取正常,以及Port No為11171。

2. 按下[Ctrl]+[F5],執行Client端程式。

------------------------------------------------------------------------

目前Java平台也有支援WCF的Solution,換句話說,開發Web API之後,你可以使用Java或是.NET的Windows表單,開發直接存取網站功能的用戶端應用程式--當然,用戶端你要多Rich,就可以多Rich! 走出瀏覽器的框框,你會發現很多事情是多麼的簡單就可以完成。

2008年3月13日 星期四

Rich Internet Application = Real Interactive Architecture?

昨天小測了一下IE 8 Beta, 使用者操作介面跟IE 7差不多, 在瀏覽器中加入了Activities和WebSlices的功能, 據說效能與穩定度上也將會有所提升.比較怪的是, 推的很兇的Silverlight並沒有內崁在其中, 反而是在Windows Update的下載選項裡面出現了Silverlight 1.0的選項-->看來還是從Windows Update推廣比較快.

安裝完IE 8, 心裡有個感覺, 大概目前瀏覽器最多就做到這樣了吧! 還記得在從前好像是IE 4的時候, 微軟曾經在IE中加入了推播頻道(Channel)的功能, 也發行過IE的SDK, 我還記得曾經研究了一下. 但是後來發展的RSS技術, 雖然概念類似, 但因為不需要綁特定環境, 反而變成主流.


微軟每出一款新的瀏覽器就會試著把一些新的服務整合進去, 這很正常, 就像IE 7中建立的Search功能. 但有了推播頻道的經驗, 微軟也發現使用者其實都會有自己的選擇, 因此在IE 7中隨然預設是使用Live Search, 但你也可以隨時換成使用Google Search或是Yahoo Search, 作為瀏覽器的搜尋介面. 或許你會想,微軟為何要在IE中加入搜尋的功能呢? 透過網頁搜尋不就好了嗎?
 
以前的Web應用程式,最大的限制就是瀏覽器。例如我現在在瀏覽器中寫了一大篇的Blog,結果突然瀏覽器當掉--預設狀況之下,當你使用瀏覽器時是處於離線狀態的--因此若是發生了前面情況的話,除了流下英雄淚重新開啟瀏覽器編輯之外----無解。因此所有的所謂RIA應用程式,若是透過網頁的方式執行的話,都會有下面的問題:
1. 無法離線使用。
2. 不容易完整記錄使用者歷史操作狀態。
3. 會受到瀏覽器種類的限制。
4. 無法直接使用其他網站中服務或資源(安全性限制).
5. 無法充分與用戶端系統的環境或功能整合。
因此目前主要的網路服務提供者發現了這樣的情況,於是乎在建立網站的同時,就另外開放了Web API。像IE的搜尋功能就可以幫你透過Web API,連線到網路搜尋引擎,執行搜尋功能(一種簡單的SOA實作)。
 
而RIA的主要精神,應該不是要把Browser變得Rich,而是要使用Rich Client應用程式--像是Windows Form或是手機中的程式--去呼叫Web API,使用Server端的功能。在這樣的架構之下,你可以用Client端的程式記錄使用者的操作狀態,也可以暫存使用者的操作,又可以使用用戶端作業系統的Native API最佳化應用程式--當然,一定可以與Server端的功能整合。你會發現,Google Picasa、MSDN ReaderWindows Live Mail、甚至於我現在使用的Windows Live Writer,都是這種架構的實作(注意標紅色的都是微軟產品)。
 
ASP.NET 技術發展到ASP.NET 3.5,結合ASP.NET AJAX與Server Controls,網頁的開發已經幾乎到了一個近乎完美的境界。接下來的Rich Internet Application,應該是要走出瀏覽器的框架,才能實現Real Interactive Architecture。我相信,這也是未來一年應用程式開發平台發展到行動裝置平台(這裡的行動裝置不只是手機,泛指車用電腦、工業用機台等等....)之後,所必然發展的架構,屆時Web API甚至可能直接整合到作業系統中(我猜Google Android有這個企圖......)。
 
因此在ASP.NET 3.5,開發的重點已經不是網頁本身,而是Web API。在Visual Studio 2008當中建立ASP.NET 3.5網站時,你可以透過加入"已啟用AJAX的WCF服務",快速建立Web API。將來部署到IIS 7.0時,你就可以透過組態設定,將網站的功能同時透過TCP、SOAP、MSMQ等方式,同時整合到不同的Client端的應用程式使用--而且還可以跳脫出瀏覽器的框架執行!

AJAX-WCF
因此,若是下次你要問我:"張老師,ASP.NET 3.5可以做甚麼 ?",我會請你先想想:
1. 我的用戶端需要哪些功能?
2. 我的網站可以開放哪些功能?
ASP.NET 3.5 結合IIS 7.0就可以幫助你,將Server端的功能,整合到不同的用戶端的應用程式中,建立真正的RIA應用程式!
------------------------------------------------------
ASP.NET 1.X的特點 --> Server Controls。
ASP.NET 2.0的特點 --> Server端服務。
ASP.NET 3.5的特點 --> 利用WEB API整合用戶端應用程式。

ASP.NET 3.5 GridView 範例

ASP.NET AJAX 不只是讓使用者的操作可以更順暢,同時可以讓你的資料存取表單,可以發揮的更好! 寫了一個簡單的範例,讓使用者直接透過GridView可以修改書籍的作者資料。因為最近比較多事要做(趕稿、研討會、上課.......),所以有空再補上詳細說明步驟,不過我想大家也可以自己研究一下,程式碼不多,但從這個範例延伸出去,結合WCF、WF,ASP.NET 3.5帶來的是整個設計架構的改變,而非只是在Visual Studio 2008上面的新專案範本。

PS:

1. 請使用Visual Studio 2008開發工具開啟專案,並請確定有安裝SQL Express 2005。

2. 我一向不擅長美工,你可以套用樣式設計一下。

3. 如果要將這一個範例引用到別的地方去的話,請先跟我說一下。

4. 百敬,這一個範例可以說明為何我看好ASP.NET AJAX........

附上執行畫面圖:

1. Pubs 資料庫的書籍作者資料維護

AJAX-1

2. 可以同時維護書籍作者資料(非同步更新)

AJAX-4

3. 修改完直接更新回資料庫,並更新畫面

AJAX-3

2008年3月11日 星期二

新書出版日期延期

這次真的不是因為我拖稿! 編輯大人可以為我作證!!

今早得知因為新書的封面有一些問題,所以雖然內文已經送印了,可是出版日期可能會比預計延個三到四天。出版社方面答應盡全力趕工,因此如果已經預購新書的朋友就請耐心等一下喔! BTW,我也滿期待可以拿到我的新書的.....

2008年3月6日 星期四

你是設計人員,還是開發人員?

網際網路的興起,帶動了程式開發的變革,除了在開發環境上的改變之外,在使用者操作介面上,也和Windows表單開發有很多不一樣的地方。以往開發Windows表單只需要學會把控制項放到表單上,再加上事件處理常式就可以完成的工作,在Web應用程式當中,為了串接Browser與Server兩個不同的執行環境,這些程式卻變得相當的煩瑣。但其實說穿了,Web應用程式是由"兩個"執行環境所構成,因此除了原本表單需要執行的程式邏輯之外,在瀏覽器中,也可以透過Javascript操作HTML控制項,產生DHTML的效果。

另外,Browser加上了適當的外掛套件之後(ex:Flash Runtime、Java Rintime),就可以在瀏覽器當中執行Flash動畫,或是Java Applet等等其他的程式。隨著執行環境的日益複雜,就有聰明的人想到把這個複雜的環境分成Model、View、Controller三塊--也就是MVC設計模式。前面兩篇我已經稍為介紹過Model跟Coltroller,這一篇要來談的是View的部分。

記得之前做產品或是做案子的時候,公司都會有美工人員幫我把白白的網頁製作成漂亮的網頁--因為我不熟網頁設計軟體的操作(還有一部分是因為沒有美感...囧),因此雖然我會DHTML,也了解CSS的設定,但是美化使用者操作介面的工作,還是得交給美工人員來處理。特別是後來網頁流行加上Flash動畫效果之後,美化網頁的工作我可以說就放棄了......

Silverlight基本上跟Flash是一樣的東西,提供了自己的物件模型,可以幫助建立友善又具有高互動性的使用者操作介面,但是就像我前說的一樣,Silverlight也是屬於外掛的東西,所以第一個會遇到的就是相容性的問題。本人的64位元瀏覽器到現在還是沒有辦法執行Flash就是其中一個例子,我們也沒有辦法期待或是期望Silverlight將來"一定"可以使用在所有的瀏覽器--特別是手持裝置的瀏覽器。

再者就是,我從來不會覺得,網頁中有沒有美美的按鈕或是效果是一件很重要的事。一個灰色的按鈕和一個漸層的按鈕,對我來說都是一樣的;反而我比較在乎的是網頁邏輯處理的速度--這就是開發人員和設計人員的差別。基本上,Silverlight跟Flash都是給設計人員用的東西,雖然目前看來加上一些Script程式之後,也可以用來執行程式邏輯甚至式資料繫結,但是有了之前寫DHTML與RDS的經驗,我實在沒辦法對於這技術有太多的興趣--畢竟這還是執行在瀏覽器框架裡的東西,除非瀏覽器有重大規格的改變,否則最後的限制都是一樣的。

最後,目前暫時也還沒有像Flash的設計工具方便的工具可以套用在Silverlight上(應該是正在研發中),就算有的話,我想也是提供給"設計人員"用的。對於開發人員來說,我想設計一個會動、會變色的按鈕的時間不如拿來解決堆積如山的使用者需求。

但Silverlight也不是不值得學,因為Silverlight是WPF的子集,因此學會Silverlight之後,將來就可以使用相同的設計經驗來建立WPF的表單。不過話說回來,在MVC的設計模式中,開發人員只需要先定義好View與Controller溝通時所使用的規格,將來不管設計人員表單如何設計,都可以觸發後端的工作流程邏輯執行。因此對於開發人員而言,如何建立彈性、可靠的工作流程,並且和不同的端點繫結,應該是相當重要的;而如何使用工具設計Silverlight或是WPF表單,則是設計人員需要花時間學習的。問問自己下面的問題:

你覺得你是開發人員還是設計人員?

你的美術創意會比設計人員好嗎?

你就知道該把時間花在哪裡.......Orz

2008年3月5日 星期三

2008年3月4日 星期二

淺談新一代的MVC設計模式 -2

ASP.NET Web 應用程式一般說來,並不容易實作完整的MVC架構,其中一個原因,主要是因為在伺服器控制項中,已經包含了一些Controller的邏輯在其中。因此若是要討論ASP.NET 表單的MVC架構的話,應該要分成幾種模型來討論:

  1. 以ASP.NET 伺服器控制項建立的表單(標準情境)
  2. 與用戶端(AJAX Library、Windows Form、WPF、Handheld Devices)整合的情境 (Web API情境)

新一代ASP.NET應用程式的發展,已經不再是以"網頁"、"Web表單"為中心,而是改以"工作流程"為主要的設計中心。拜Http通信協定Stateless的特性所賜,在以往建立Web應用程式時,我們必須要透過在伺服器端的程式扮演Controller的角色,因此動態伺服器網頁不管是直譯式、編譯式、或是直譯加編譯式,都必須要有PostBack的動作,才可以執行處理用戶端(View)操作的邏輯。

這樣的架構也沒啥不好,但壞就壞在Web應用程式必須透過瀏覽器操作,而瀏覽器預設只支援HTML加上JavaScript,因此若是要開發高度互動性的網頁,就必須要在瀏覽器中植入一堆東西(AJAX Library、SilverLight.....),這是一個問題。再者,當我們將接收使用者操作的程式延伸到用戶端之後,原本伺服器端的Controller的邏輯就不能直接用了(因為程式封裝在伺服器端頁面的程式中)! 這樣一來,就無法實現MVC架構的延伸性跟彈性。

幸好,.NET Framework 3.5中提供了WF的基礎架構,讓我們可以將這些邏輯從頁面中抽離出來定義成流程,然後再透過WCF基礎架構,結合IIS 7.0的WAS(Windows Activation Service),我們很容易就可以將工作流程以各種不同的繫結方式,以IIS作為流程控管中心發佈到網際網路或是區域網路中。而用戶端(View)也不再侷限於瀏覽器的架構,因此你可以更容易的使用Windows表單或是WPF表單開發具有高度互動性,並且支援離線操作的使用者操作介面(ex:MSDN Reader、Windows Live Writer......)。至於Model的部分,通常會需要與較多的後端資源結合,並提供給多種前端程式共用,因此可以使用BizTalk Server 2006 R2建立企業級的流程,與IIS中的工作流程(Controller)結合,如此一來,就可以建立具有兼具有彈性、可維護性的新一代企業級分散式架構!!

 MVC_DNA

2008年3月3日 星期一

淺談新一代的MVC設計模式 -1

Visual Studio 2008上市之後,WF終於有了一個完整的設計工具,同時加上了支援WCF的SendActivity、ReceiveActivity之後,以工作流程為導向的設計模式就算正式到位了。究竟以工作流程為導向的應用程式發展方式,和以往有甚麼不一樣? 我想,我們可以從MVC設計模式切入進來了解一下。

所謂MVC設計模式,簡單的說是將應用程式分成三個設計區塊:Model、View、Control。Model指的是後端負責運算的邏輯模組;View指的是接收使用者輸入資料與顯示狀態的操作介面;而Control指的是在Model和View之間,負責派送與驗證資料,還有決定下一個使用者要檢視的介面(next view)的邏輯。一般說來,Model跟View是很容易區分跟理解的,比較麻煩的,就是Control這一塊。

MVC

WF 提供兩種流程模式--State Machine和Sequential。State Machine Workflow相當適合用來建立Control所需要的邏輯,並且可以根據使用者的操作狀態,切換並記錄狀態。而在Model當中,則可以使用Sequential Workflow維護運算的邏輯,包含物件的邏輯、企業級運算的邏輯、資料處理的邏輯等等。透過這樣的架構,我們就可以比較容易的使用MVC架構建立企業級的分散式應用程式。

接下來,我將以ASP.NET為例,說明透過WF進行MVC設計的方式。

2008年3月1日 星期六

Visual C# 2008 精研講座 -- 自序

封面 「張老師,請問最近有沒有出書計畫?」

「張老師,請問這一門課你有沒有寫書可以讓我們回去參考?」

最近幾年經常會有學員上完課之後會問我這些問題,其實我一直想要寫一本C#程式語言的初階書籍,讓大家可以用比較輕鬆的方式一次學好程式開發的技巧與物件導向的觀念,但是最近幾年因為授課時間較多,一直抽不出時間好好的將上課的這些資料整理成書,因此每當學員問我這些問題時,我都覺得非常的愧疚。

而這次會寫這本書,主要的原因是從Visual Studio 2008上市之後,應用程式的開發方式,已經要從以往的程式碼編輯模式,轉向「以工作流程為導向」的設計模式。然而.NET Framework 3.0發表到現在,我發現很多開發人員對於WF、WCF、WPF、LINQ等新一代應用程式開發方式很感興趣,卻不知從何下手。為了幫助大家可以快速的了解如何使用新的Visual Studio 2008開發工具,結合新的應用程式開發方式建立應用程式,因此特別將我過去的研究以及教學的一些範例,整理到這本書中,希望讓各位可以快速的透過這一本書,了解新一代應用程式的開發技巧。

除了新的東西之外,這本書也很適合用在C#初學者自學或者是課堂教學。因為在撰寫這一本書時,我特地將章節的順序做了一些調整。因為這幾年的教學經驗告訴我:如果不能先吸引初學者的學習熱忱,那麼後面的內容再好都沒有用!因此本書先介紹Windows應用程式的開發,然後才開始切入程式語言,最後才是開發實務。相信在這樣的編排之下,學習的效果應該會更好。

另外,這本書也算是我在恆逸教育訓練中心授課八千多個小時的一個紀念。感謝這一段日子以來張智凱資深處長的提攜與照顧,當然也謝謝我的同事,百敬、薰尹、慧真、嘉仁…等平常在技術上的建議。也謝謝悅知的葉總經理幫忙讓我有機會將授課的經驗集結成書跟大家分享,還有編輯Vicky,容忍我拖稿拖了這麼久。也謝謝我的家人還有老婆,犧牲了過年出去玩的機會,讓我可以專心的將這本書的稿子完成。

當然,更謝謝支持我的讀者與學員們,你們的支持是我教學與寫作的原動力。

謝謝大家

最新回應

Loading...

即時與版主對話


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