WCF(一) Windows Communication Foundation 概述

來源:互聯網
上載者:User

 我希望能用連續的幾篇博文,記錄下自己學習WCF的過程,同時也為了能和大家一起交流分享自己學習WCF的心得。

學習WCF的英文資料對英文基礎不太好的人來說有些難以接受了,中文書籍不太多,好不容易有兩本,又寫的像研究生畢業論文一樣。

所以,我想寫點自己的WCF文章,希望能對自己的WCF知識起到促進作用,又能和大家一起交流,協助到大家理解WCF。

宗旨:我不會用中文的專業術語(例如:協定,地址,綁定,通道,終結點,宿主,單工、雙工,回調等),因為用一個英文單詞可以被多個人翻譯成多個中文詞語,這樣不好。我堅持使用英文的原本單詞(如:contract,Address,binding,pipe,endpoint,host,one-way ,duplicate,call back)。

本人最為“痛恨”那種滿口專業術語講技術概念的人。如果學習所有的技術都要先被大量技術名詞搞暈掉,那學習實在是太痛苦了。我見識過這樣的一本書:當你隨意翻開一頁,隨意找出一段讀一讀,會發現根本不知道作者在講什麼,因為全是難懂的技術名詞和概念。遇到這種情況,英文再差的人寧可去讀英文資料。我崇尚的技術教學或交流是通俗易懂的。不論多麼複雜的新/舊技術,能簡單的一定簡簡單單的講出來。做到這一點其實不難,個人認為,作者只需用自己的話來講就完全可以,越是照搬學術的東西,“貌似權威的”,卻是缺少福士親和力。畢竟大部分人學習的目的不是去作秀寫論文,而是去寫自己的實實在在的代碼的。呵呵。願IT界的明天更加美好吧。

閑言少敘,書歸正傳。

=======================================================================

WCF被推出來很久了,但是對於剛剛接觸WCF的人們來說,想必會有以下問題:

WCF是什嗎?為什麼我們需要WCF?WCF能給我們帶來什嗎?學習WCF的難易度如何?

以上這些問題的答案在網上已經很多介紹了,我在此本不必再浪費口舌,只是大概提一下。

WCF: Windows Communication Foundation.從名字可以看出,這是一項和通訊密切相關的技術。我們知道軟體設計到處是通訊。當然我們必須學了以後,才能更好的知道它、運用它,而不能單單從它的名字揣測它的威力如何。

WCF提供給了我們一種面向服務(SOA)的程式設計的解決方案:何為面向服務?之前有使用過.NET Web Service 開發的朋友,很容易理解面向服務是咋回事。.Net Web Service也是更早的時候微軟提出的一種面向服務的解決方案。面向服務是一種標準,不同的公司可以給出各自的實現架構。單純的講SOA,畢竟太抽象了。學習一下SOA的一種實現比如.Net Web Service 或WCF以後,相信不用任何文字定義,你也會深刻地理解SOA。所以,何為面向服務?這裡不解釋,等你學一段時間的WCF,你自己就有答案了,真的,呵呵。

WCF提供了統一的通訊模型:以前我們寫通訊可以是:TCP/UDP,Socket等這些方式,在WCF中被統一了。至於如何統一?這裡先不說了。所以,當你在項目中同時使用了多種通訊方式時,可以考慮使用WCF了。

以前沒有接觸過Web Service 開發接受WCF也不是難事,相信我!

這次,我們只做一點WCF的概述,更為詳細的知識到後面再慢慢展開。邊學習,邊交流。

1. 開啟VS 2010 -->file-->new Project ,選擇C#下面的WCF,選擇WCF Library。如:

2.此時有了IService 檔案和一個Service 檔案。Service檔案實現的IService中的兩個函數:GetData函數和GetDataUsingDataContract函數。至於這兩個函數是幹嘛的?想必不用說大家都能看懂的。之後詳細說明他們的角色。這裡也不修改類名和函數名了,方面起見。

3.按F5運行程式,此時開啟了一個WCF 的一個測試 視窗。如:先測試GetData函數

測試結果:

同樣的方法測試GetDataUsingDataContract函數:結果如

4.上面完成了對WCF的函數功能的簡單測試,能說明的是Service正確地實現了IService。接下來我們需要將這個WCF部署到一個Web Site中。

在解決方案上面右擊:New -->New Web Site 如:

修改web site項目中的Service.svc 檔案裡面的 Service="WcfFirstDemoServiceLib.Service1" (其中意思就是已命名空間加類名的方式指定service的名字)

 

 5.添加一個winForm程式 ,用它來調用WCF的函數。

6.給winForm 項目添加web 引用:

7.在Form1上面添加幾個控制項,然後再在Form1.cs中添加下列幾行代碼:

Form1.cs

 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using WCFClient.WCFServiceDemo;10 11 namespace WCFClient12 {13     public partial class Form1 : Form14     {15         Service1Client proxy = null;16         CompositeType ctin = null;17         CompositeType ctout = null;18         public Form1()19         {20             InitializeComponent();21         }22 23         private void btnGetData_Click(object sender, EventArgs e)24         {25             this.tbOutputBox.Text = proxy.GetData(Convert.ToInt32(this.tbInputbox.Text));26         }27 28         private void Form1_Load(object sender, EventArgs e)29         {30             proxy = new Service1Client();31 32         }33 34         private void button2_Click(object sender, EventArgs e)35         {36             ctin = new CompositeType();37             ctin.StringValue = this.tbInputCTStrvalue.Text;38             ctin.BoolValue = this.rboxInTrue.Checked;39             40             ctout = proxy.GetDataUsingDataContract(ctin);41 42             this.tbOutputCTStrvalue.Text = ctout.StringValue;43             if (ctout.BoolValue)44             {45                 this.rboxOutTrue.Checked = true;46             }47             else48             {49                 this.rboxOutFalse.Checked = true;50             }51         52         }53     }54 }

8.Ctrl+F5 運行:

 

說明:這裡只是概述WCF,所以全部在使用WCF的預設設定,也沒有詳細說明每一步的作用是什麼。只是給出三個項目:項目1是WCF的庫也是WCF功能核心。項目2是WCF的host用於向外界發布WCF提供的介面(:介面這裡指提供了哪些函數可被調用)。項目3是WCF的用戶端用於調用WCF。其實,這裡已經隱約體現出一點點分布式軟體架構的意思了:有專門提供功能實現的模組,有專門提供對外公開介面的模組,有專門作為調用的模組。

後面詳細WCF每一部分的。歡迎關注!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.