日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

wcf入门教程

發(fā)布時(shí)間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wcf入门教程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、概述

  Windows Communication Foundation(WCF)是由微軟發(fā)展的一組數(shù)據(jù)通信的應(yīng)用程序開發(fā)接口,可以翻譯為Windows通訊接口,它是.NET框架的一部分。由 .NET Framework 3.0 開始引入。

  WCF的最終目標(biāo)是通過進(jìn)程或不同的系統(tǒng)、通過本地網(wǎng)絡(luò)或是通過Internet收發(fā)客戶和服務(wù)之間的消息。

  WCF合并了Web服務(wù)、.net Remoting、消息隊(duì)列和Enterprise Services的功能并集成在Visual Studio中。

  WCF專門用于面向服務(wù)開發(fā)。

二、基于Asp.net 的應(yīng)用程序開發(fā)與面向服務(wù)開發(fā)

  在基于Asp.net 的應(yīng)用程序開發(fā)中,我們由客戶機(jī)的瀏覽器訪問應(yīng)用程序服務(wù)器,然后通過應(yīng)用程序服務(wù)器中的數(shù)據(jù)庫連接去連接數(shù)據(jù)庫服務(wù)器,讀取或是操作數(shù)據(jù),有時(shí)候可能會(huì)多一個(gè)文件服務(wù)器。大家可以觀察到,基本上所有的應(yīng)用都放在了一臺(tái)服務(wù)器上,但對于一個(gè),由于業(yè)務(wù)上的需要(如:與外部系統(tǒng)交互),一臺(tái)服務(wù)器很難支持所有的應(yīng)用。我們再看下面的圖:

  客戶機(jī)使用瀏覽器訪問服務(wù)器A,服務(wù)器A為了業(yè)務(wù)需要與其他各種應(yīng)用部署在服務(wù)器B、C、D....再通過WCF技術(shù)互相通信,相互訪問...然而面向服務(wù)的好處不僅僅在此,他還提供了不同語言不同操作系統(tǒng)的可交互性..由于本文不是介紹SOA的文章,感興趣的同學(xué)可以參見:SOA

三、第一個(gè)WCF程序

  1. 新建立空白解決方案,并在解決方案中新建項(xiàng)目,項(xiàng)目類型為:WCF服務(wù)應(yīng)用程序。建立完成后如下圖所示:

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

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

代碼如下:

 1 using System.ServiceModel;2 3 namespace WCFService4 {5     [ServiceContract]6     public interface IUser7     {8         [OperationContract]9         string ShowName(string name);
10     }
11 }
12 
13 
14 namespace WCFService
15 {
16     public class User : IUser
17     {
18         public string ShowName(string name)
19         {
20             string wcfName = string.Format("WCF服務(wù),顯示姓名:{0}", name);
21             return wcfName;
22         }
23     }
24 }

  大家可以看到,在WCF中的接口與普通接口的區(qū)別只在于兩個(gè)上下文,其他的和我們正常學(xué)習(xí)的接口一樣。定義這個(gè)上下文要添加System.ServiceModel的引用。

[ServiceContract],來說明接口是一個(gè)WCF的接口,如果不加的話,將不能被外部調(diào)用。

[OperationContract],來說明該方法是一個(gè)WCF接口的方法,不加的話同上。?

此時(shí)我們的第一個(gè)WCF服務(wù)程序就建立好了,將User.svc“設(shè)為起始頁”,然后F5運(yùn)行一下試試,如下圖所示,VS2010自動(dòng)調(diào)用了WCF的客戶端測試工具以便我們測試程序:

  我們雙擊上圖中的 ShowName() 方法,出現(xiàn)如下圖:

  在請求窗口中的值中輸入?yún)?shù)“你的姓名”,然后點(diǎn)擊“調(diào)用”,在響應(yīng)窗口中會(huì)出現(xiàn)返回值“WCF服務(wù),顯示姓名:你的姓名”,說明測試成功,點(diǎn)擊下面的XML也可以看到XML的數(shù)據(jù)傳輸。我們現(xiàn)在建立好了服務(wù)的應(yīng)用程序和業(yè)務(wù)邏輯,即非常簡單的打印姓名的方法,測試也成功了。那么我們怎么用呢?

四、場景

  我們設(shè)計(jì)的場景是在生產(chǎn)中經(jīng)常應(yīng)用的場景,把WCF程序寄宿在IIS之上。假設(shè)場景如下:A服務(wù)器和B服務(wù)器。我們把我們剛剛建立的WCF程序“部署”在B服務(wù)器上(本教程的A,B服務(wù)器都放是我自己的一臺(tái)機(jī)器),我們的目標(biāo)是在A服務(wù)器的應(yīng)用程序來訪問B服務(wù)器的WCF程序,實(shí)現(xiàn)服務(wù)器端的應(yīng)用程序通訊。

五、將WCF程序寄宿在B服務(wù)器的IIS之上

  首先我們將WCF應(yīng)用程序發(fā)布一下,然后部署在B服務(wù)器的IIS之上,如下圖所示:

?

  鼠標(biāo)右鍵瀏覽Uesr.svc,在游覽器中出現(xiàn)如下圖所示,說明服務(wù)部署成功。

?  上圖中的http://localhost/User.svc?wsdl即為我們要引用的服務(wù)地址。

六、在客戶端[A服務(wù)器]創(chuàng)建服務(wù)的引用

  我們這里以Web應(yīng)用程序?yàn)槔?#xff0c;建立地物理地址為本機(jī),但是大家可以想像成B服務(wù)器是遠(yuǎn)程計(jì)算機(jī),localhost為一個(gè)其他的IP地址。

  新建解決方案,并且創(chuàng)建ASP.NET Web應(yīng)用程序的項(xiàng)目。命名為:WCFClient,如下圖所示:

?

  (1)新建Asp.net頁面,命名為:WcfTest.aspx。

  (2)添加在第五步中部署的服務(wù)的引用。如下圖所示:

  此時(shí)彈出添加服務(wù)引用的窗體,如下圖所示:

  我們在地址里寫上我們寄宿在IIS上的WCF服務(wù)的地址服務(wù)路徑,此處為:http://localhost/User.svc?wsdl,在名稱空間處填寫WCFService[此名稱空間要在下面的客戶端中引用]然后點(diǎn)擊“前往”-->“確定”按鈕。此時(shí)我們完成了對服務(wù)的引用。我們再次查看解決方案,里面多了Service References的文件夾,通過資源管理器打開后里面多了些文件,這些文件用于客戶端向服務(wù)端的調(diào)用,現(xiàn)在先不用管他。

?、使用WCF服務(wù)端的方法

  WcfTest.aspx的代碼如下:

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WCFTest.aspx.cs" Inherits="WCFClient.WCFTest" %>2 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">4 <html xmlns="http://www.w3.org/1999/xhtml">5 <head runat="server">6     <title></title>7 </head>8 <body>9     <form id="form1" runat="server">
10     <asp:TextBox ID="txtName" runat="server"></asp:TextBox><br />
11     <asp:Button ID="btnSubmit" runat="server" Text="測試WCF服務(wù)" OnClick="btnClick" />
12     </form>
13 </body>
14 </html>
15 
16 using System;
17 using System.Collections.Generic;
18 using System.Linq;
19 using System.Web;
20 using System.Web.UI;
21 using System.Web.UI.WebControls;
22 
23 //引用WCF服務(wù)的名稱空間
24 using WCFClient.WCFService;
25 
26 namespace WCFClient
27 {
28     public partial class WCFTest : System.Web.UI.Page
29     {
30         protected void Page_Load(object sender, EventArgs e)
31         {
32 
33         }
34 
35         protected void btnClick(object sender, EventArgs e)
36         {
37             UserClient user = new UserClient();
38             string result = user.ShowName(this.txtName.Text);
39             Response.Write(result);
40         }
41     }
42 }

  上面中的UserClient類是在添加引用的時(shí)候生成的服務(wù)端User類的客戶端代理類,一般客戶端代理類名稱都會(huì)是**Client。我們運(yùn)行一下看下效果。

  通過以上的例子,我們完成了由A服務(wù)器的應(yīng)用向B服務(wù)器中WCF提供的方法的調(diào)用。這個(gè)例子比較簡單,對于經(jīng)常開發(fā)B/S結(jié)構(gòu)應(yīng)用程序的同學(xué)們來說比較好理解。

轉(zhuǎn)載于:https://www.cnblogs.com/TBW-Superhero/p/5570503.html

總結(jié)

以上是生活随笔為你收集整理的wcf入门教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。