WCF引用方式之IIS方式寄宿服務

来源:https://www.cnblogs.com/lvjy-net/archive/2018/01/16/8297657.html
-Advertisement-
Play Games

通過IIS方式寄宿服務 之前的例子是將控制台作為WCF的寄宿方式或者是直接添加契約項目的引用,然後通過配置或者是ChannelFactory的形式進行創建服務對象,其實在大多的開發中以IIS的形式創建WCF也是比較常見的。每一個Webservice都是具有一個asmx文本文件,客戶端通過訪問.asm ...


通過IIS方式寄宿服務

之前的例子是將控制台作為WCF的寄宿方式或者是直接添加契約項目的引用,然後通過配置或者是ChannelFactory的形式進行創建服務對象,其實在大多的開發中以IIS的形式創建WCF也是比較常見的。
每一個Webservice都是具有一個asmx文本文件,客戶端通過訪問.asmx文件即可實現Webservice的調用。當然WCF和Webservice類似,每一個WCF服務都有一個對應的.svc文本文件。基於IIS服務寄宿要求的WCF服務都具有相應的.svc文件,.svc文件部署於IIS站點中,對WCF服務的調用提現在對.svc文件的訪問上。.svc文件僅僅包含一個%@ ServiceHost這樣的指令,該指令具有一個必須的Service屬性和一些可選的屬性,如下代碼所示就是一個簡單的.svc文本的內容

WCF引用方式之IIS方式寄宿服務

其中指定了Service屬性為一個完整名稱的WCF服務類。

寄宿在IIS下的WCF服務實際上就是一個WEB應用,所以通常會把.svc文件放在Web下,並且通過web.config文件進行配置WCF的終結點和用於發佈元數據的ServiceMetadataBehavior服務行為。由於服務調用是通過訪問服務對應的.svc文件來實現的,這個.svc文件所在的地址對於客戶端來說就是服務(終結點)的地址,因此是不需要配置終結點的adder的,配置代碼如下:

WCF引用方式之IIS方式寄宿服務

 除了終結點沒有指定address之外,服務行為ServiceMetadataBehavior用於元數據發佈時也沒有指定元素的發佈地址。在這種情況下,.svc文件的地址加上?wsdl查詢字元串就是元數據發佈地址。對於當前例子來說,當服務被成功寄宿到本地的Web應用之後,就可以通過http://127.0.0.1:1111/網站名稱/CalculatorService.svc?wdsl得到表示服務元數據的WSDL文件,這也就是為什麼我們右鍵瀏覽.svc文件的時候返回的是很長的xml內容。

再次修改客戶端:

WCF引用方式之IIS方式寄宿服務

僅僅修改了address屬性,當前假設我們的Web應用程式叫做MyWeb,這也我們的address就可以找到發佈後的.svc文件了。

 至此,我們一共介紹了兩大類的WCF的方法:
一種是將WCF服務寄宿在控制台程式:

  1.通過添加服務引用(根據元數據的地址添加),然後創建了一個Client對象,然後就可以操作了;
  2.通過添加對契約項目的引用,然後通過ChannelFactory創建了一個Channel對象(通過契約類型,Binding,以及一個地址);
  3.通過添加對契約項目的引用,然後通過ChannelFactory創建了一個Channel對象(首先會在config中配置endpoint信息,然後通過endpoint的name作為   ChannelFactory的參數進行創建)。  

一種是依靠IIS作為寄宿:

  1.添加對契約項目的引用,然後通過修改配置文件的endpoint的address為.svc的地址,這樣同樣還是通過ChannelFactory方式進行創建代理對象;
  2.添加契約項目的引用,然後通過ChannelFactory創建了一個Channel對象(通過契約類型,Binding,以及一個地址,這時候的地址應該是.svc)。


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

-Advertisement-
Play Games
更多相關文章
  • Lambda 表達式是 C++11 中最重要的新特性之一。類似匿名函數,當需要一個函數但是又不想費力去命名時使用。這樣的場景其實有很多,所以匿名函數幾乎是現代編程語言的標配。 Lambda 表達式基礎 Lambda 表達式的基本語法如下: [捕獲列表](參數列表) mutable(可選)異常屬性 -... ...
  • 面向對象進階 面向對象高級語法部分 靜態方法、類方法、屬性方法 類的特殊方法 反射 異常處理 1、靜態方法(@staticmethod) 通過@staticmethod裝飾器即可把其裝飾的方法變為一個靜態方法。 普通的方法,可以在實例化後直接調用,並且在方法里可以通過self.調用實例變數或類變數, ...
  • ##__name__變數被其他模塊調用的時候就不是main,所以就有這種使用if __name__=='__main__':##軟體目錄結構規範為什麼要設計好目錄結構?"設計項目目錄結構",就和"代碼編碼風格"一樣,屬於個人風格問題。對於這種風格上的規範,一直都存在兩種態度: 1. 一類同學認為,這 ...
  • 在編譯SSM項目時,碰到如下問題,希望能給遇到相同問題的小伙伴們幫助 O(∩_∩)O~ Eclipse導入Maven項目後,選中父項目,執行Run AS——>Maven install後,出現如下錯誤: 說的是執行編譯失敗,你是不是在JRE環境下運行而不是JDK?想了想,JDK已安裝、各種環境變數配 ...
  • package com.swift; public class String_Letter_Number_Test { public static void main(String[] args) { /* * 字元串中英文字母個數 5435abc54abc3AHJ5 */ String str="... ...
  • package com.swift; public class String_Reverse_Test { public static void main(String[] args) { /* * 字元串反轉 */ String str="abcdefghijklmn"; System.out.p... ...
  • python基礎部分學習完了,時間也已經過了兩個月左右,感覺沒學到什麼,可能是我學習之後忘記的太多了。 由於沒錢買書,要是去培訓就更沒錢了,所以在網上找了一本書,感覺還不錯,講的比較好,比較詳細。 Python核心編程(第3版)PDF高清晰完整中文版 ,需要的小伙伴可以去下載,當然如果大家不像我這麼 ...
  • 使用ConcurrentBag創建一個可擴展的爬蟲,本示例在多個獨立的即可生產任務又可消費任務的工作者間如何擴展工作量。本示例模擬一個爬蟲程式。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...