WCF 創建WCF

来源:http://www.cnblogs.com/Liyuting/archive/2017/12/04/7977068.html
-Advertisement-
Play Games

一、概述 Windows Communication Foundation(WCF)是由微軟發展的一組數據通信的應用程式開發介面,可以翻譯為Windows通訊介面,它是.NET框架的一部分。由 .NET Framework 3.0 開始引入。 WCF的最終目標是通過進程或不同的系統、通過本地網路或是 ...


一、概述

  Windows Communication Foundation(WCF)是由微軟發展的一組數據通信的應用程式開發介面,可以翻譯為Windows通訊介面,它是.NET框架的一部分。由 .NET Framework 3.0 開始引入。

  WCF的最終目標是通過進程或不同的系統、通過本地網路或是通過Internet收發客戶和服務之間的消息。

  WCF合併了Web服務、.net Remoting、消息隊列和Enterprise Services的功能並集成在Visual Studio中。

  WCF專門用於面向服務開發。

二、基於Asp.net 的應用程式開發與面向服務開發

wcf

  在基於Asp.net 的應用程式開發中,我們由客戶機的瀏覽器訪問應用程式伺服器,然後通過應用程式伺服器中的資料庫連接去連接資料庫伺服器,讀取或是操作數據,有時候可能會多一個文件伺服器。大家可以觀察到,基本上所有的應用都放在了一臺伺服器上,但對於一個,由於業務上的需要(如:與外部系統交互),一臺伺服器很難支持所有的應用。我們再看下麵的圖:

wcf

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

三、第一個WCF程式

  1. 新建立空白解決方案,併在解決方案中新建項目,項目類型為:WCF服務應用程式。建立完成後如下圖所示:

wcf

  2.刪除系統生成的兩個文件IService1.cs與Service1.svc。

  3.添加自定義的WCF【服務文件】User.svc,此時vs2010會自動生成WCF介面文件IUser.cs,我們在IUser中定義WCF方法ShowName,在User.svc.cs對該介面的方法進行實現。

代碼如下:

using System.ServiceModel;

namespace WCFService
{
    [ServiceContract]
    public interface IUser
    {
        [OperationContract]
        string ShowName(string name);
    }
}


namespace WCFService
{
    public class User : IUser
    {
        public string ShowName(string name)
        {
            string wcfName = string.Format("WCF服務,顯示姓名:{0}", name);
            return wcfName;
        }
    }
}

大家可以看到,在WCF中的介面與普通介面的區別隻在於兩個上下文,其他的和我們正常學習的介面一樣。定義這個上下文要添加System.ServiceModel的引用。

[ServiceContract],來說明介面是一個WCF的介面,如果不加的話,將不能被外部調用。

[OperationContract],來說明該方法是一個WCF介面的方法,不加的話同上。 

此時我們的第一個WCF服務程式就建立好了,將User.svc“設為起始頁”,然後F5運行一下試試,如下圖所示,VS2010自動調用了WCF的客戶端測試工具以便我們測試程式:

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

  在請求視窗中的值中輸入參數“你的姓名”,然後點擊“調用”,在響應視窗中會出現返回值“WCF服務,顯示姓名:你的姓名”,說明測試成功,點擊下麵的XML也可以看到XML的數據傳輸。我們現在建立好了服務的應用程式和業務邏輯,即非常簡單的列印姓名的方法,測試也成功了。那麼我們怎麼用呢?

四、場景

  我們設計的場景是在生產中經常應用的場景,把WCF程式寄宿在IIS之上。假設場景如下:A伺服器和B伺服器。我們把我們剛剛建立的WCF程式“部署”在B伺服器上(本教程的A,B伺服器都放是我自己的一臺機器),我們的目標是在A伺服器的應用程式來訪問B伺服器的WCF程式,實現伺服器端的應用程式通訊。

五、將WCF程式寄宿在B伺服器的IIS之上

  首先我們將WCF應用程式發佈一下,然後部署在B伺服器的IIS之上,如下圖所示:

  滑鼠右鍵瀏覽Uesr.svc,在游覽器中出現如下圖所示,說明服務部署成功。

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

六、在客戶端[A伺服器]創建服務的引用

  我們這裡以Web應用程式為例,建立地物理地址為本機,但是大家可以想像成B伺服器是遠程電腦,localhost為一個其他的IP地址。

  新建解決方案,並且創建ASP.NET Web應用程式的項目。命名為:WCFClient,如下圖所示:

 

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

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

wcf

  此時彈出添加服務引用的窗體,如下圖所示:

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

 、使用WCF服務端的方法

  WcfTest.aspx的代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

//引用WCF服務的名稱空間
using WCFClient.WCFService;

namespace WCFClient
{
    public partial class WCFTest : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnClick(object sender, EventArgs e)
        {
            UserClient user = new UserClient();
            string result = user.ShowName(this.txtName.Text);
            Response.Write(result);
        }
    }
}

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

  通過以上的例子,我們完成了由A伺服器的應用向B伺服器中WCF提供的方法的調用。這個例子比較簡單,對於經常開發B/S結構應用程式的同學們來說比較好理解。

八、說明:因為網上的入門教程比較少,本教程只做入門,後面會繼續講些其他入門的東西,深入的請看園子里:Artech 大哥的文章。

九、代碼下載:

  10 WCF 教程

 

原文鏈接:http://www.cnblogs.com/iamlilinfeng/archive/2012/09/25/2700049.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第一步:檢查更新 檢查更新其實無非就是去比較更新包的版本和本地軟體版本,如果高則更新、低則不更新。怎麼獲取版本號方法很多,本案例是獲取軟體的配置文件。 第二步:下載更新包 因為C/S的軟體更新是面對所有用戶,S端除了給C端提供基本的服務外,還可以給C端提供更新包。而這個S端可以是網路上的一個固定地址 ...
  • 在多線程應用中將會涉及不同的線程訪問同一控制項的問題,C#中禁止跨線程直接訪問控制項。某個控制項在被創建時就記下了是誰創建了它,即它的創建線程。如果從另一個線程調用該控制項,那麼必須使用控制項的 Invoke 方法來將調用封送現在調用它的線程。(Invoke方法是控制項的方法) 到底是哪個線程要使用該控制項呢?需 ...
  • .net-Excel導入-OleDB方式(備註:表頭在第二行/不在第一行 的解決方法) ...
  • CAD二次開發可以採用寫擴展DLL的方式實現。該DLL的函數可以被CAD調用。 但是調用前,必須用命令netload 將該dll載入到CAD。 其實可以修改註冊表,當CAD軟體啟動後,自動載入擴展DLL。 為此,我寫了一個函數,很方便的修改註冊表,達到自動載入dll的目的! 該函數支持各個版本cad... ...
  • 將 vs iso 文件載入到驅動器,進入到文件夾里 然後輸入:vs_ultimate.exe /uninstall /force ...
  • 1、能提供Visual Studio開發工具包嗎? 解決方法: Visual Studio 2017開發環境下載地址: https://www.visualstudio.com/zh-hans/downloads/ Visual Studio 2015及之前的版本開發環境下載地址: https:// ...
  • 一、 環境vs2010,WCF應用程式,server 2008 第一步:WCF項目右鍵點擊項目,選擇生成部署包,如下圖: 第二步:WCF項目上右鍵,選擇:在windows資源管理器中打開文件夾,如下圖: 第三步:第二步:在你項目所在的文件目錄下找到Package文件夾,這就是我們的部署包所在的地方。 ...
  • 首先,在WIN系統下打開IIS,每種操作系統是不同的,請不要弄混。 1、控制面板 左下放的程式 啟用或關閉Windows功能,如圖: 2、找到Internet Information Services,其中FTP伺服器,WEB管理工具下麵的所有文件夾及其子文件夾全選,令萬維網服務中的安全性、常見HT ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...