欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线

WCF簡單教程(1)入門

WCF是DotNet體系中很重要的一項技術,但是組內很多組員通過書籍自學的時候感覺涉及面太廣、配置文件太復雜,新名詞太多、抓不到頭緒,有感于此,決定進行一次組內技術培訓,順便把培訓講義整理到blog上來。不求大而全,而是要讓初學者快速入門,因此想入實例入手,并刻意隱藏一些初期用不到的內容,以降低入門門檻。有任何錯誤歡迎指正。

成都創新互聯-專業網站定制、快速模板網站建設、高性價比荷塘網站開發、企業建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式荷塘網站制作公司更省心,省錢,快速模板網站建設找我們,業務覆蓋荷塘地區。費用合理售后完善,十多年實體公司更值得信賴。

注:本系列文章基于.Net Framework 3.5,以教程的最后會歸納一下到了4.0中有哪些差異。

----------------------- 分隔線 -----------------------

第一篇:入門,構建第一個WCF程序

1、服務端

建立一個控制臺應用程序作為Server,新建一個接口IData作為服務契約。這個契約接口一會兒也要放到Client端,這樣雙方才能遵循相同的標準。別忘了添加對System.ServiceModel的引用。

  1. using System;

  2. using System.ServiceModel;

  3. using System.Text;

  4. namespace Server

  5. {

  6.    /// <summary>

  7.    /// 用ServiceContract來標記此接口是WCF的服務契約,可以像WebService一樣指定一個Namespace,如果不指定,就是默認的http://tempuri.org

  8.    /// </summary>

  9.    [ServiceContract(Namespace="WCF.Demo")]

  10.    publicinterface IData

  11.    {

  12.        /// <summary>

  13.        /// 用OperationContract來標記此方法是操作契約

  14.        /// </summary>

  15.        [OperationContract]

  16.        string SayHello(string userName);

  17.    }

  18. }


針對這個接口建立實現類,這個類才是真正干活的,工作在服務端,不出現在客戶端:

  1. using System;

  2. using System.Text;

  3. namespace Server

  4. {

  5.    /// <summary>

  6.    /// 實現IData接口,此處不需要寫契約標記

  7.    /// </summary>

  8.    publicclass DataProvider : IData

  9.    {

  10.        publicstring SayHello(string userName)

  11.        {

  12.            returnstring.Format("Hello {0}.", userName);

  13.        }

  14.    }

  15. }


為工程添加一個App.config文件,這里面要定義與服務發布相關的參數。WCF中常見的做法是用代碼寫服務邏輯,但是用配置文件來定義服務發布方式,這樣做的好處是松散耦合。

  1. <?xmlversion="1.0"encoding="utf-8"?>

  2. <configuration>

  3. <system.serviceModel>

  4.  <!-- 看到services節,就表明這是在定義服務相關的內容 -->

  5.  <services>

  6.  <!-- 定義一個服務,name是契約實現類的全名 -->

  7.    <servicename="Server.DataProvider">

  8.    <!-- 既然要對外提供服務,就要有服務地址,此處定義為 http://localhost:8080/wcf,需要注意,地址總是帶著類型標頭的 -->

  9.      <host>

  10.        <baseAddresses>

  11.          <addbaseAddress="http://localhost:8080/wcf"/>

  12.        </baseAddresses>

  13.      </host>

  14.      <!-- 定義一下終節點,address一般為空,如果不為空,最終服務地址就是在baseAddress的基礎上加上這個address,binding指定為basicHttpBinding,這是最基礎的基于http的綁定方式,contract標明這是為哪個契約服務 -->

  15.      <endpointaddress=""binding="basicHttpBinding"contract="Server.IData"/>

  16.    </service>

  17.  </services>

  18. </system.serviceModel>

  19. </configuration>


萬事具備,只剩最后一步了,將服務發布出去:

  1. using System;

  2. using System.ServiceModel;

  3. namespace Server

  4. {

  5.    class Program

  6.    {

  7.        staticvoid Main(string[] args)

  8.        {

  9.            //定義一個ServiceHost,注意參數中要使用契約實現類而不是接口

  10.            using(ServiceHost host = new ServiceHost(typeof(Server.DataProvider)))

  11.            {

  12.                host.Open();

  13.                Console.WriteLine("Service Running ...");

  14.                Console.ReadKey();

  15.                host.Close();

  16.            }

  17.        }

  18.    }

  19. }

有人可能會問服務發布到哪去了?沒指定地址呀?這是一個初學者容易搞不明白的地方。

是的,此時App.config中的定義就發揮作用了,由于ServiceHost中指定對Server.DataProvider類服務,而App.config中定義了name="Server.DataProvider"的service,其下有endpoint,定義了綁定方式是basicHttpBinding,而http方式的baseAddress只有一個,就是 http://localhost:8080/wcf。

編譯運行,屏幕顯示Service Running ... 就是正常跑起來了,此時如果用命令行 netstat -ano | findstr "8080" 看一下,應該有如下輸出:

  1. TCP    0.0.0.0:8080         0.0.0.0:0          LISTENING      4

  2. TCP    [::]:8080            [::]:0             LISTENING      4

表示我們的程序已經在TCP 8080端口開始監聽了。值得注意的是PID是4,這是系統進程而不是我們自己的進程,這說明WCF程序對外提供HTTP服務時,是借用了系統功能(http.sys)。

此時如果我們用瀏覽器訪問一下 http://localhost:8080/wcf,不報錯,但是會提示“當前已禁用此服務的元數據發布”,這是由于默認不允許以http get方式獲取服務的WSDL,我們不用管它,不影響后面的使用,以后的章節中我們再來看這個問題。


2、客戶端

再建立一個控制臺應用程序作為Client,把Server中的接口IData拷過來,因為這是服務契約。

為工程添加一個App.config文件,這里面要定義客戶端訪問的相關參數,這里我去掉了一些用不上的參數,以保持配置文件簡單,防止各位看暈了頭。

  1. <?xmlversion="1.0"encoding="utf-8"?>

  2. <configuration>

  3.  <system.serviceModel>

  4.    <!-- 看到client,就表明是客戶端設置 -->

  5.    <client>

  6.      <!-- 定義訪問時的終節點,name也是隨意取的,注意address是Server端發布時指定的baseAddress+endpoint的address,binding也要對應,contract就更不用說了,由于之前把IData.cs拷過來的時候沒有修改命名空間,所以還是Server.IData -->

  7.      <endpointname="DataService"address="http://localhost:8080/wcf"binding="basicHttpBinding"contract="Server.IData"/>

  8.    </client>

  9.  </system.serviceModel>

  10. </configuration>


然后寫代碼,來調用Server端發布的SayHello方法:

  1. using System;

  2. using System.ServiceModel;

  3. using System.ServiceModel.Channels;

  4. namespace Client

  5. {

  6.    class Program

  7.    {

  8.        staticvoid Main(string[] args)

  9.        {

  10.            //客戶端訪問有多種方式,此處只顯示一種

  11.            //利用ChannelFactory的CreateChannel方法創建一個IData的代理對象,其中參數“DataService”就是剛才在App.config中定義的endpoint的名稱

  12.            var proxy = new ChannelFactory<Server.IData>("DataService").CreateChannel();

  13. //調用SayHello方法

  14.            Console.WriteLine(proxy.SayHello("WCF"));

  15. //用完后一定要關閉,因為服務端有最大連接數,不關閉會在一定時間內一直占著有效連接

  16.            ((IChannel)proxy).Close();

  17.        }

  18.    }

  19. }

編譯運行,屏幕應能正常打印出“Hello WCF.”。第一個入門demo就搞定了,應該還是比較簡單的。只是App.config的配置有些復雜,后面我們會看到,其實也可以不要配置,直接用代碼搞定,不過從松散耦合的角度講不建議這么做。

網頁題目:WCF簡單教程(1)入門
當前鏈接:http://m.kartarina.com/article14/pojsge.html

成都網站建設公司_創新互聯,為您提供動態網站Google定制網站全網營銷推廣網站制作關鍵詞優化

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都app開發公司
欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线
精品国产一区二区在线观看| 91成人国产精品| 午夜精品久久久| 亚洲伦在线观看| 国产精品日日摸夜夜摸av| 蜜桃视频在线观看一区| 国产精品色婷婷久久58| 欧美精品一区二区在线播放 | 日韩理论片在线| 欧美激情在线一区二区三区| 欧美国产日韩亚洲一区| 亚洲欧洲色图综合| 一区二区视频在线| 欧美一区二区三区婷婷月色| 91精品国产色综合久久| 精品国产自在久精品国产| xnxx国产精品| 综合分类小说区另类春色亚洲小说欧美| 国产精品国产三级国产专播品爱网| 最近日韩中文字幕| 日韩av网站免费在线| 久久99精品久久久久久久久久久久| 精品一区二区av| 亚洲欧美在线高清| 日本亚洲天堂网| 成人免费看黄yyy456| 在线一区二区三区四区| 日韩一区和二区| 国产精品狼人久久影院观看方式| 亚洲视频一区二区在线观看| 日韩国产高清影视| 99国产精品99久久久久久| 欧美日韩国产综合视频在线观看 | 国产精品免费av| 亚洲综合清纯丝袜自拍| 国产一区二区三区在线观看精品| 99国产精品国产精品毛片| 精品国产在天天线2019| 一区二区三区不卡视频| 国产大陆a不卡| 91精品欧美久久久久久动漫| 国产精品乱码一区二区三区软件| 亚洲二区在线视频| 亚洲蜜臀av乱码久久精品| 精品在线亚洲视频| 日本久久一区二区| 国产精品婷婷午夜在线观看| 美女视频黄 久久| 一本大道久久a久久综合婷婷| 精品国产乱码91久久久久久网站| 一区二区三区91| 不卡的电影网站| 欧美xxxxx裸体时装秀| 国产精品视频观看| 国产美女娇喘av呻吟久久| 欧美嫩在线观看| 亚洲一区二区三区四区五区黄| 成人av网站在线观看免费| 久久你懂得1024| 精品一区二区三区影院在线午夜| 欧美日韩一级黄| 亚洲品质自拍视频| 91亚洲精品乱码久久久久久蜜桃| 国产日韩精品一区二区三区在线| 另类专区欧美蜜桃臀第一页| 欧美一区二区私人影院日本| 亚洲国产一区二区三区| 91丨九色丨蝌蚪富婆spa| 国产精品久久久久天堂| 国产iv一区二区三区| 国产欧美日本一区二区三区| 国产精品1区二区.| 亚洲国产电影在线观看| gogogo免费视频观看亚洲一| 亚洲欧洲日韩在线| 色综合天天做天天爱| 一区二区欧美国产| 欧美精品v国产精品v日韩精品| 亚洲国产视频直播| 欧美一区二区三区不卡| 蜜臀精品久久久久久蜜臀| 日韩欧美在线观看一区二区三区| 麻豆精品视频在线观看视频| 久久久亚洲国产美女国产盗摄 | 精品精品国产高清一毛片一天堂| 性欧美大战久久久久久久久| 欧美日韩一区二区三区四区| 精品国产一区二区三区忘忧草| 激情伊人五月天久久综合| 久久嫩草精品久久久精品一| 成人免费视频网站在线观看| 亚洲人成在线播放网站岛国| 欧美自拍丝袜亚洲| 日韩av电影天堂| 国产日韩视频一区二区三区| 99riav一区二区三区| 亚洲国产精品自拍| 精品伦理精品一区| 亚洲欧美日韩国产中文在线| 欧美日韩精品一区二区三区 | 视频在线观看91| 精品日韩在线观看| 成人免费毛片高清视频| 日韩影视精彩在线| 国产欧美日韩在线看| 欧美色综合网站| 国产日本亚洲高清| 欧美午夜电影网| 国产一区二区伦理| 亚洲一区二区三区不卡国产欧美| 日韩三级精品电影久久久| 不卡一区二区在线| 青青草原综合久久大伊人精品| 久久久亚洲高清| 欧美在线一区二区三区| 国产麻豆9l精品三级站| 亚洲成av人片在线| 中文字幕亚洲区| 久久久久综合网| 欧美日韩大陆在线| 99久久婷婷国产综合精品| 日本va欧美va欧美va精品| 亚洲另类中文字| 欧美成人一区二区三区片免费 | 国内外成人在线| 亚洲一区国产视频| 中文一区二区在线观看| 欧美草草影院在线视频| 欧美午夜片在线看| 色系网站成人免费| 不卡av电影在线播放| 国产精品99久久久久久似苏梦涵| 日韩av中文字幕一区二区三区| 亚洲综合一区二区三区| 亚洲天堂2014| 国产精品国产三级国产普通话三级 | 日韩午夜激情av| 欧美精品国产精品| 欧美日韩综合一区| 欧美中文字幕一二三区视频| 不卡一区二区中文字幕| 成人亚洲一区二区一| 国产精品538一区二区在线| 精品亚洲成a人| 久久精品久久综合| 美女脱光内衣内裤视频久久影院| 天天做天天摸天天爽国产一区 | 亚洲欧洲另类国产综合| 国产亚洲欧美在线| 欧美一区二区美女| 日本v片在线高清不卡在线观看| 伊人夜夜躁av伊人久久| 亚洲女与黑人做爰| 亚洲在线视频网站| 亚洲国产中文字幕在线视频综合| 亚洲综合网站在线观看| 欧美午夜精品一区二区蜜桃| 欧美影院一区二区| 欧美性xxxxxx少妇| 69久久99精品久久久久婷婷| 欧美精品色综合| 精品少妇一区二区三区免费观看 | 韩国欧美一区二区| 精东粉嫩av免费一区二区三区| 美洲天堂一区二卡三卡四卡视频| 奇米777欧美一区二区| 久久机这里只有精品| 国产一区二区在线看| 成人激情黄色小说| 欧美三级在线看| 精品久久国产97色综合| 中文字幕一区av| 一区二区三区高清在线| 蜜桃视频免费观看一区| 成人深夜视频在线观看| 欧美亚洲一区二区在线观看| 日韩写真欧美这视频| 欧美激情一区二区三区四区| 亚洲欧美另类久久久精品2019| 午夜在线电影亚洲一区| 国产精品一区二区x88av| 色综合久久88色综合天天免费| 欧美二区乱c少妇| 中文字幕巨乱亚洲| 五月婷婷欧美视频| 国产成人在线观看| 欧美高清一级片在线| 国产色综合久久| 亚洲国产视频一区二区| 国产在线一区二区| 欧美色综合久久| 日本一区二区三区dvd视频在线| 亚洲专区一二三| 国产成人av一区| 日韩视频一区二区三区| 亚洲视频图片小说| 久久99热99| 91精品在线免费观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 蜜乳av一区二区|