WCF教程一:新建并部署

一翰守、概述

Windows Communication Foundation(WCF)是由微軟發(fā)展的一組數(shù)據(jù)通信的應(yīng)用程序開(kāi)發(fā)接口谜悟,可以翻譯為Windows通訊接口饵沧,它是.NET框架的一部分。由 .NET Framework 3.0 開(kāi)始引入赌躺。
WCF的最終目標(biāo)是通過(guò)進(jìn)程或不同的系統(tǒng)、通過(guò)本地網(wǎng)絡(luò)或是通過(guò)Internet收發(fā)客戶和服務(wù)之間的消息羡儿。
WCF合并了Web服務(wù)礼患、.net Remoting、消息隊(duì)列和Enterprise Services的功能并集成在Visual Studio中。
WCF專門(mén)用于面向服務(wù)開(kāi)發(fā)缅叠。



客戶機(jī)使用瀏覽器訪問(wèn)服務(wù)器A悄泥,服務(wù)器A為了業(yè)務(wù)需要與其他各種應(yīng)用部署在服務(wù)器B、C肤粱、D....再通過(guò)WCF技術(shù)互相通信弹囚,相互訪問(wèn)...然而面向服務(wù)的好處不僅僅在此,他還提供了不同語(yǔ)言不同操作系統(tǒng)的可交互性领曼。

二鸥鹉、新建WCF

說(shuō)明:本文環(huán)境是建立在VS2017的基礎(chǔ)上,不同版本VS操作上可能會(huì)有點(diǎn)不同

  1. 新建項(xiàng)目庶骄,直接選擇創(chuàng)建WCF服務(wù)應(yīng)用程序毁渗,



    創(chuàng)建之后,生成這樣的目錄:


2.刪除系統(tǒng)生成的兩個(gè)文件IService1.cs與Service1.svc单刁。

3.添加自定義的WCF【服務(wù)文件】User.svc灸异,此時(shí)vs2010會(huì)自動(dòng)生成WCF接口文件IUser.cs,我們?cè)贗User中定義WCF方法PlusNumber羔飞,在User.svc.cs對(duì)該接口的方法進(jìn)行實(shí)現(xiàn)肺樟。

代碼如下:

//IUser.cs
namespace WcfService1
{
    // 注意: 使用“重構(gòu)”菜單上的“重命名”命令,可以同時(shí)更改代碼和配置文件中的接口名“IUser”逻淌。
    [ServiceContract]
    public interface IUser
    {
        //[OperationContract]
        //void DoWork();
        [OperationContract]
        string PlusNumber(int a, int b);
    }
}

//User.svc.cs
namespace WcfService1
{
    // 注意: 使用“重構(gòu)”菜單上的“重命名”命令么伯,可以同時(shí)更改代碼、svc 和配置文件中的類名“User”恍风。
    // 注意: 為了啟動(dòng) WCF 測(cè)試客戶端以測(cè)試此服務(wù)蹦狂,請(qǐng)?jiān)诮鉀Q方案資源管理器中選擇 User.svc 或 User.svc.cs,然后開(kāi)始調(diào)試朋贬。
    public class User : IUser
    {
        //public void DoWork()
        //{
        //}
        public string PlusNumber(int a, int b)
        {
            int c = a + b;
            string result = "WCF服務(wù)計(jì)算結(jié)果:"+c.ToString();
            return result;
        }
}
}

大家可以看到凯楔,在WCF中的接口與普通接口的區(qū)別只在于兩個(gè)上下文,其他的和我們正常學(xué)習(xí)的接口一樣锦募。定義這個(gè)上下文要添加System.ServiceModel的引用摆屯。
[ServiceContract],來(lái)說(shuō)明接口是一個(gè)WCF的接口糠亩,如果不加的話虐骑,將不能被外部調(diào)用。
[OperationContract]赎线,來(lái)說(shuō)明該方法是一個(gè)WCF接口的方法廷没,不加的話同上。

此時(shí)我們的第一個(gè)WCF服務(wù)程序就建立好了垂寥,將User.svc“設(shè)為起始頁(yè)”颠黎,然后F5運(yùn)行一下試試另锋,如下圖所示,VS自動(dòng)調(diào)用了WCF的客戶端測(cè)試工具以便我們測(cè)試程序,然后雙擊PlusNumber()方法名狭归,就會(huì)出現(xiàn)下圖:

在請(qǐng)求窗口中的值中輸入?yún)?shù)“a”與“b”夭坪,然后點(diǎn)擊“調(diào)用”,在響應(yīng)窗口中會(huì)出現(xiàn)返回值“WCF服務(wù)計(jì)算結(jié)果:a+b的值”过椎,說(shuō)明測(cè)試成功室梅,點(diǎn)擊下面的XML也可以看到XML的數(shù)據(jù)傳輸。我們現(xiàn)在建立好了服務(wù)的應(yīng)用程序和業(yè)務(wù)邏輯疚宇。

三亡鼠、將WCF部署到IIS

到IIS右擊網(wǎng)站,然后添加網(wǎng)站灰嫉,將下圖的參數(shù)填上拆宛。



然后再右擊WcfService1文件將它設(shè)為應(yīng)用程序:



然后就可以瀏覽此服務(wù):

點(diǎn)擊User.svc,跳轉(zhuǎn)到以下調(diào)用頁(yè)面:


點(diǎn)擊 http://localhost:8001/WcfService1/User.svc?wsdl,從這里可以看到我寫(xiě)的方法,這個(gè)地址也是我們后用將要引用的地址:

現(xiàn)在我們的WCF服務(wù)就算是已經(jīng)部署完成了。

四讼撒、調(diào)用WCF

這邊我是打算創(chuàng)建一個(gè)web服務(wù)程序來(lái)調(diào)用浑厚,所以我新建一個(gè)空白MVC web項(xiàng)目,


創(chuàng)建后目錄:


然后添加服務(wù)引用,將添加好參數(shù)根盒,可以修改引用命名空間名稱钳幅,


完成添加后,這里我是選擇創(chuàng)建一個(gè)Test控制器以及對(duì)應(yīng)視圖來(lái)達(dá)到調(diào)用那個(gè)WCF的服務(wù),要記得using剛添加的WCF引用炎滞,這樣才能使用敢艰。
控制器代碼如下:

using WebForTest.ServiceReference1;
public class TestController : Controller
    {
        // GET: Test
        public ActionResult Index()
        {
            ViewBag.result = "暫無(wú)計(jì)算";
            return View();
        }
        // POST: Test
        [HttpPost]
        public ActionResult Index(int a,int b)
        {

            UserClient user = new UserClient();
            string result = user.PlusNumber(a, b);
            ViewBag.result = result;
            return View();
        }
    }

視圖代碼如下:

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
<p>@ViewBag.result</p>
@using (Html.BeginForm("Index", "Test", FormMethod.Post))
{
    <p>
        <input id="a" name="a" type="text" />+<input id="b" name="b" type="text" />
        <br/><input id="submit_txt" type="submit" />
    </p>
}

運(yùn)行效果如下:




通過(guò)以上例子我們就已經(jīng)完成了對(duì)WCF的一個(gè)簡(jiǎn)單新建,部署及調(diào)用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末册赛,一起剝皮案震驚了整個(gè)濱河市钠导,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌森瘪,老刑警劉巖牡属,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異扼睬,居然都是意外死亡逮栅,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)窗宇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)措伐,“玉大人,你說(shuō)我怎么就攤上這事军俊〗募樱” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵粪躬,是天一觀的道長(zhǎng)担败。 經(jīng)常有香客問(wèn)我矗蕊,道長(zhǎng),這世上最難降的妖魔是什么氢架? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮朋魔,結(jié)果婚禮上岖研,老公的妹妹穿的比我還像新娘。我一直安慰自己警检,他們只是感情好孙援,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著扇雕,像睡著了一般拓售。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上镶奉,一...
    開(kāi)封第一講書(shū)人閱讀 49,785評(píng)論 1 290
  • 那天础淤,我揣著相機(jī)與錄音,去河邊找鬼哨苛。 笑死鸽凶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的建峭。 我是一名探鬼主播玻侥,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼亿蒸!你這毒婦竟也來(lái)了凑兰?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤边锁,失蹤者是張志新(化名)和其女友劉穎姑食,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體砚蓬,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡矢门,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了灰蛙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祟剔。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖摩梧,靈堂內(nèi)的尸體忽然破棺而出物延,到底是詐尸還是另有隱情,我是刑警寧澤仅父,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布叛薯,位于F島的核電站浑吟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏耗溜。R本人自食惡果不足惜组力,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抖拴。 院中可真熱鬧燎字,春花似錦、人聲如沸阿宅。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)洒放。三九已至蛉鹿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間往湿,已是汗流浹背妖异。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留煌茴,地道東北人随闺。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蔓腐,于是被迫代替她去往敵國(guó)和親矩乐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容