關於我

我的相片
用心思考、保持熱情,把工作上的經驗作分享與紀錄。希望能夠跟大家一起不斷的成長~
顯示具有 .NET Framework 標籤的文章。 顯示所有文章
顯示具有 .NET Framework 標籤的文章。 顯示所有文章

不一樣的簡報表達方式(Sample VS2010 Test Architecture)

今天看到一篇不錯的文章.

以往簡報不外乎使用PowerPoint.

這是大家常用的方式.

 

而今天看到的這位大師.他使用了 SilverLight 的 Deep Zoom 作為簡報工具。

他介紹了他為什麼使用的一些故事,如果大家有興趣,可看一下他的原文

而實際的簡報,效果真的相當的棒阿.

感覺清楚明瞭,有別於以往PowerPoint方式.

且也整合了完整的架構;說明;圖文;影片…

很不錯的做法,有空可以研究一下喔^_^

 

順帶一提,此範例是他介紹VS2010整個測試環境的架構與做法,

也是相當值得參考學習的教學。

WCF?

什麼是WCF

月底要上微軟的MOC2524: Developing XML Web Services.回頭看課本裡的內容都有點過時了. 現在微軟在分散式應用程式上推廣的是WCF: Windows Communication Foundation. 什麼是WCF.在網路上找到這些值得參考的文章.
  • SOA 與 WCF 原來如此
http://blogs.msdn.com/polo_lee/archive/2007/03/16/soa-wcf.aspx 這篇文章清楚地遻明 WCF 中 ABC 的概念.不錯!
  • Windows Communication Foundation Architecture: WCF 架構圖
http://msdn2.microsoft.com/en-us/library/ms733128.aspx 我喜歡看架構圖,一看就知道它的構成元素.
  • WCF 的Server端

可以是:
  1. Managed Application。像是Console應用程式。
  2. Managed Windows Services。若設為自動啟動,只要伺服器開機便會自動執行。
  3. Internet Information Services。很像Web Service的作法。
  4. Windows Process Activation Service(WAS)。這是Longhorn及Vista中新的行程啟動機制,這個機制其實是從IIS的行程模式(Application Pool)演化而來,但除了 TCP 之外多支援 MSMQ, Named Pipe 通訊協定,以便讓WCF的伺服端可透過更多方式啟動。
這個網頁中提供了一個比較表,比較這幾種Host方式的不同:http://msdn2.microsoft.com/en-us/library/ms730158.aspx
  • What Is Windows Communication Foundation?

這是微軟官方網站對WCF的介紹,你一定不可錯過。用一個租車公司的例子說明WCF的應用及其可解決的問題。 http://msdn2.microsoft.com/en-us/library/ms731082.aspx WCF仍舊是使用 XML 的SOAP做為資料的表示方式,為解決 XML 傳輸時的效能問題,可將 XML 用二進位的方式編碼。

何謂.Net Framework? CLR? BCL? MSIL? JIT?

廣義而言, .Net Framework 2.0包含了:

程式 → JIT → MSIL → CLR

1. CLR(Common Language Runtime)

2. BCL(Base Class Library--基礎類別程式庫)

3. 使用BCL來寫程式的程式語言(如C++.Net或VB.Net或C#.Net等等)

我想我們都很清楚了程式語言可以用來開發軟體(用.Net Framework開發好的軟體我們稱它為組件--Assembly), 之所以稱它為組件的用意我想很明顯, 在用BCL以及各種.Net Framework來開發的軟體過程中, 就像堆積木一樣(積木即BCL或.Net元件), 程式人員所作的工作就像創意家一樣, 發揮它的各種想像力和創造力, 堆積出各式各樣的組合積木出來(所以所開發出來的應用程式叫做組件--組件可以是 .exe 或是 .dll), 以下我們就各別的來看看以上所提到的三點。

1. CLR (Common Language Runtime) 相信有寫過JAVA程式的人一定都知道JVM (Java Virtual Machine)—Java執行時期的虛擬機器, 其實它也是JAVA軟體的一種Runtime Environment(簡稱Runtime), 其實用過VB6的人也都知道寫好的VB6要封裝時都會順便把VB6的相關執行時期DLL順便一起封裝進去, 那個就叫做VB6的Runtime Environment, 同樣的你寫好的VC++6程式, 要可以在客戶的機器上執行無礙, 也必須在客戶的電腦上在Setup時裝上必要的C++的相關DLL(那個叫做C++的Runtime), 各位試想用VB6寫就要自己的一套Runtime, 用VC++寫也要自己的一套Runtime, 而且用VC++寫的類別程式碼無法直接被VB6繼承來使用, 必須在VC++6中寫成DLL檔或COM元件來讓VB6呼叫使用, 造成使用VB6和使用VC++不同程式語言的人極大的隔閡與不便, 而且COM或COM+這樣高深的技術也只能讓初學者望COM而興嘆, 其實JVM本身是一個用來將程式語言和底層硬體分開的一種抽象層, 所以JAVA開發者它宣稱它可以寫一次然後可以到處跑(Write once and run anywhere), 亦即良好的跨平台特性, 說了這麼多, 其實CLR就像JVM一樣, 是一個用來隔開硬體的抽象層, 所以.Net的應用程式, 可以在Windows平台上執行無礙, 也可以在LINUX中順利地執行(LINUX下的CLR是由Open Source專案Mono所實作), 將來如果其他平台上的CLR實作也有了之後, 相信.Net程式要達到和JAVA一樣的跨平台特性就指日可待了。

2. BCL (Base Class Library) 在.Net Framework中亦提供了一組定義良好的類別庫可供程式開發人員使用, 就像以前在VC++6時代有一組MFC類別庫可供使用一般, 但是, 可別把.Net Framework BCL和MFC混為一談了, MFC算是棺材已經進了一半了, MFC有太多太多的缺點和歷史的包袱, .Net Framework BCL易學易用, 如果你已經掌握了BCL的使用訣竅, 日後你遇到新的BCL CLASS時, 所需的只是查閱MSDN的功夫而已, 真的是一點都不誇大。

3. 支援.Net的程式語言目前支援.Net的程式語言多不勝數, 最常聽到的就屬C#, VC++.Net, VB.Net, J#.Net或Delphi.Net等等, 雖然這些各種不同的語言擁有各自的程式語法, 如果你習慣Basic語法, 你就選VB.Net, 如果你還是新手, 那不妨選原汁原味的C#, 如果你用慣C++, 那你可以選C++/CLI (算是第二代的C++.Net), 如果你習慣Pascal語法, 你可以選Delphi.Net。總而言之, 不管你所選的是哪一種語言, 它們用的類別庫通通都是一樣的, 都是.Net Framework BCL, 更妙的是用C++/CLI寫好的CLASS可以給任何其他的.Net語言繼承過來使用, 當然要寫成DLL類別庫供其他的語言來呼叫也是可以的。

4. MSIL(Microsoft Intermediate Language) 咦, 記得前面筆者並沒提到MSIL啊, 啊, 那一定是筆者給忘了, MSIL叫做微軟中繼語言, 算是一種中間碼, 拿JAVA作比較, MSIL就類似JAVA的byte code, 這樣如果學過JAVA的大大就懂了, 在第3點中提到的各種.Net程式語言, 經過編譯之後, 通通都會變成MSIL, 它本身並無法直接執行, 所以在.Net機制中就透過JIT式編譯(Just In Time Compiling), 在MSIL被喚起執行時, 會被JIT編譯器翻譯成目的機器的原生碼(Native Code), 然後再交給CLR去執行。

.NET初學者的學習建議

無論是初學者或是已經有一般基礎的程式員,接下來我們列舉一連串的步驟,作為你學習.NET的參考。 1. 瞭解.NET語言:在你開始學習.NET之前,選擇一個語言,C#或是VB.NET,學習相關語法,例如迴圈,宣告等等,瞭解類別設計,OOP的基礎概 念,在你熟悉這些東西之前,不要去碰所謂的WinForm或是ASP.NET,當然,這是建議,如果你不覺得這會模糊學習焦點,如果你打算就語言本身下去 學習,從Console模式作練習。 2.探索基礎的.NET Framework類別庫:瞭解何謂命名空間,類別如何被組織歸納,如何引用現有的類別庫實作所需的應用程式功能,學習一些基礎的核心類,例如Math、Exception等等。 3.選擇所使用的UI:傳統的視窗應用程式(WinForm),或是Web應用程式(WebForm),也就是ASP.NET。 4.深入類別庫:學習特定領域的技術,例如資料庫的ADO.NET,繪圖技術的GDI+,網路與串流技術,甚至大型應用程式的發展等等。 .NET 程式設計師一旦過了初學的門檻,有一大部份的時間,都會在類別庫的類別功能上打轉,無論你所開發的是ASP.NET的Web應用程式員,還是傳統視窗應用程式,都脫離不了類別庫的應用,強化類別庫的知識將是最主要的課題。 以下為可參考之學習地圖: .NET 的架構設計得非常出色,因此很容易學習,按步就班很快的就會成為一個堪用的.NET應用程式開發人員,有了好的基礎,無論是目前的.NET3.0,或是明 年蓄勢待發的.NET3.5,對你都不再會是困擾,因為它們都只是堆疊了一些新的東西上去,只要在需要的時候,針對這些新增功能繼續下功夫即可,至於那些 新功能,我們用一些簡單的數學式來說明。 .NET 2.0 = CLR +BCL+ C#(VB.NET) + Win Form + Web Form .NET 3.0 = .NET 2.0 + WCF + WPF + WF + WCS .NET 3.5 = .NET 3.0 + ASP.NET AJAX +Silverlight+LINQ CLR = Common Language Runtime BCL = Base Class Libary 如 何,是不是比較好受了,從這幾條數學公式當中,我們得到了一個很重要的結論,如果沒有.NET2.0的基礎,你是不可能學好所謂的.NET 3.0,甚至迎接明年即將到來的.NET3.5,也因此,除非你已經準備好了,否則學好你的.NET 2.0 逺比關注目前的新技術來得重要。 至 於.NET 1.0或是.NET 1.1,試著擺脫它吧,.NET 2.0相較於.NET 1.X的改變儘管並非革命性的,但是.NET 2.0在某些方面的確作了一些變動,語言的功能亦作了不少的加強,編輯器的檔案架構同時也有一些不小的調整,跳到.NET 2.0是比較合適的選擇。