1. 程式人生 > >初識WCF之使用配置檔案部署WCF應用程式

初識WCF之使用配置檔案部署WCF應用程式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

     二月份的開頭,小編依舊繼續著專案開發之路,開始接觸全新的知識,EF,WCF,MVC等,今天小編來簡單的總結一下有關於WCF的基礎知識,學習之前,小編自己給自己提了兩個問題,WCF是什麼?WCF能用來做什麼?WCF具有哪些優點?帶著這樣的問題,小編開始進行了一番搜尋,一下是小編整理的結果。


        WCF是什麼?

        WCF(Windows Communication Foundation)是用於構建面向服務的應用程式的框架 ,是由微軟發展的一組資料通訊的應用程式開發介面。根據MSDN上的定義:WCF為.NetFramework提供了一個基礎,使其能夠編寫程式碼,以在元件、應用程式、系統之間進行通訊。WCF的設計遵循的是面向服務的原則。服務是指可以通過訊息與之進行互動的一段程式碼。服務是被動的。它們等待傳入訊息之後才開始工作。客戶端是發起者,客戶端將訊息傳送給服務來請求工作。

 
 
         WCF能用來做什麼?

        小編查閱了相關資料,形成了小編自己的對wcf能用來做什麼的認識,也許不是很恰當,有不同意見的小夥伴可以相互交流討論,說個小故事,long time ago,有一戶人家,擁有一家小商店,靠賣些花卉過日子,日子不算富裕,但也是吃得飽,穿得暖,可是隨著社會的飛速發展,競爭是如此激烈,為了生存,這家人不得不自己進貨,把貨堆到自己的房間內,如果顧客需要,他們有時還不得不給顧客送貨,總而言之,他們將所有該乾的活都幹了,只為了能賺錢養家,這就是生活。再說我們的程式,一個web程式或者一個winform程式,簡單模式的程式,我們通常都與那個花店的老闆一樣,把所有的功能都集中到這個程式裡面,在簡單的狀況下,這很好。

       花店生意越來越好,老闆的資金慢慢雄厚了,她注意到了賣其他東西比花卉更賺錢,比如說家電、服裝。於是,老闆一口氣又開了幾家店。生意規模越來越大,錢也越賺越多,老闆心花怒放。然而好景不長,亞洲金融風暴來襲,利潤率急劇下降。老闆憂心忡忡,既然外部開源不太可能,那就看看內部能不能節流了。老闆考察一番,注意到,為了銷售,每個店都配置了一個倉庫,每個店都配置了一幫送貨的人馬,這,是不是太浪費了。於是,老闆將所有的倉庫撤銷,成立了一個總倉庫,不管是花卉,家店,服裝,都可以儲存到這個倉庫。管理一個倉庫的費用比管理N個倉庫的費用顯然是要少很多的。然後,每個店的送貨人員都辭掉,另外成立一個運輸公司,專門負責送貨,不管是花卉還是家店亦或服裝,裝到紙箱後,她們都是一個樣。經過這麼一折騰,成本一下就降了下來,而且還便於管理了,真是一舉兩得,老闆又綻放了笑容。再回到我們的程式上來,當程式涉及的範圍越來越大時,也許就要考慮將服務分離出去。WCF是應對分散式開發的,就如花店老闆,生意大了後,她就是個分散式的了,這邊一家花卉店,那邊一家服裝店,他們之間有區別,賣的東西不同,也有共性,都是賣東西,不管是哪家店,他們都需要倉庫,都需要送貨。這時,你就可以單獨成立公司,只提供這兩種服務。如果寫成程式,那麼就如同你開發了一個運輸的WCF,把這個服務放在伺服器上,這樣不管是誰,是Web程式也好,是Winform程式也好,只要介面對應,理解你的服務內容條款(服務契約),都可以要求你這個服務模組提供標準的服務。



        WCF的優點?

        WCF是提供統一的,可用於建立安全、可靠的面向服務的應用的高效開發平臺。WCF具有如下的優勢:  
        1、統一性
        2、互操作性
        3、安全與可信賴
        4、相容性

        介紹完了wcf的一些基本知識以後,我們開始來實踐一下,讓理論知識在動手實踐中牢牢掌握,小編簡單來介紹一下如何使用配置檔案部署WCF應用程式,在敲例子之前,先來簡單介紹一個基本知識點服務三要素和配置服務概要。服務三要素,簡單概括來說就是ABC,A--Adress在哪裡,包含傳輸方式資訊;B--Binding怎麼實現,與地址的傳輸方式要匹配,C--Contract做什麼,服務契約。好了接著,我們開始敲例子,開啟VS建立專案,建立完成之後,如下圖所示:

                     

          接著,我們來編寫程式碼,首先我們來編寫WCFServiceDemo中的介面,程式碼如下:

      

<span style="font-size:18px;"><span style="font-size:18px;">using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data;using System.ServiceModel;namespace WCFServiceDemo{    [ServiceContract]   //定義服務介面    public interface IHelloService    {        [OperationContract]        //返回當前伺服器端的時間        DateTime getDateTime();        [OperationContract]        //返回一組資料        DataTable getUserInfo();    }}</span></span>

         WinformHello中的HelloService,程式碼如下所示:

<span style="font-size:18px;"><span style="font-size:18px;">using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using System.Threading.Tasks;using WCFServiceDemo;namespace WinformHello{    public class HelloService:WCFServiceDemo.IHelloService //實現介面    {        //獲取服務端的系統時間        public DateTime getDateTime()        {            return DateTime.Now;        }        //獲取當前使用者資訊        public System.Data.DataTable getUserInfo()        {            //建立連線物件            string connstring = @"Data Source=.;Initial Catalog=newssystem;User ID=sa;pwd=123456";            SqlConnection conn = new SqlConnection(connstring);            SqlDataAdapter sda = new SqlDataAdapter("select * from category", conn);                        DataTable dt = new DataTable();            sda.Fill(dt);//通過Fill方法將資料填充            return dt;        }    }}</span></span>

        接著就是我們的配置檔案了,程式碼如下:

<span style="font-size:18px;"><span style="font-size:18px;"><?xml version="1.0" encoding="utf-8" ?><configuration> <system.serviceModel>  <services>   <service name="WinformHello.HelloService" behaviorConfiguration="TestBehavior">    <host>     <baseAddresses>      <add baseAddress="http://localhost:8080/Hello"/>           </baseAddresses>    </host>    <endpoint address="" binding="basicHttpBinding" contract="WCFServiceDemo.IHelloService"></endpoint>      </service>  </services>  <behaviors>   <serviceBehaviors>    <behavior name="TestBehavior">     <serviceMetadata httpGetEnabled="true"/>    </behavior>   </serviceBehaviors>     </behaviors> </system.serviceModel></configuration></span></span>
       執行效果如下:

       
       注意,在執行這個程式的過程中有可能會出錯,這個時候只需要,右擊vs的快捷方式,以管理員方式執行即可,重新執行程式即可,成功載入。

       小編寄語:該博文,小編主要簡單的介紹了一下有關於wcf的一些基礎知識,首先解決了三個基本問題,wcf是什麼?用來幹什麼以及wcf的優點,最後使用配置檔案部署了一個wcf的應用程式,由於wcf集合了幾乎.NET Framework 所提供的通訊方法,因此學習曲線比較陡峭,開發人員必須要針對各個部份的內涵做深入的瞭解,才能夠操控 WCF 來開發應用程式。通訊雙方的溝通方式,由合約來訂定。通訊雙方所遵循的通訊方法,由協議繫結來訂定。通訊期間的安全性,由雙方約定的安全性層次來決定。專案進行中,未完待續......

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述