WCF服務調用與普通HTTP請求區別

来源:http://www.cnblogs.com/lm-nice/archive/2016/04/27/5440044.html
-Advertisement-
Play Games

用WCF技術也有一段時間了,只知道引用服務地址後調用裡面的方法就行了。之前也沒有思考wcf裡面的一些東西,現在才對WCF里的一些產生疑惑,比如,為什麼會有代理類,為什麼要有綁定,通道又是幹啥用的。 今天結合傳統的瀏覽器請求講講我個人的見解,至於WCF的基本技術點,什麼通道,ChannelFactor ...


用WCF技術也有一段時間了,只知道引用服務地址後調用裡面的方法就行了。之前也沒有思考wcf裡面的一些東西,現在才對WCF里的一些產生疑惑,比如,為什麼會有代理類,為什麼要有綁定,通道又是幹啥用的。

今天結合傳統的瀏覽器請求講講我個人的見解,至於WCF的基本技術點,什麼通道,ChannelFactory,ClientBase之類的我就不管了。

由於技術有限,不對的地方歡迎批評。

那我們就傳統瀏覽器的例子解釋WCF里的一些技術名詞(WCF服務以IIS為宿主環境)

 

通道

當們我在瀏覽器里輸入地址,按下回車鍵後,就能得到我們想要看到的內容。

其實當我們按下回車的那一瞬間,瀏覽器幫我們做了很多工作,

如:與伺服器建立連接,對發送的內容進行編碼,對數據進行傳輸等,這些步驟對應WCF里的通道,通道的作用正是通信的通道,

通道可不只有一個,最重要的有編碼通道,傳輸通道,正是這些通道解決兩個端點數據發送/接收和問題。

 

在普通瀏覽器請求中,通道是由瀏覽器建立出來的,而在WCF中,信息是被System.ServiceModel 這個組件建立的。所以我們使用WCF時必須要引用這個組件

 

地址

WCF的地址與瀏覽器的地址一樣,有了地址我們才知道我們要請求的服務在哪裡。

 

綁定

如果我們用監聽軟體監聽HTTP請求,如Fiddler很容易發現請求的時候有這樣的信息:

 

這些信息在HTTP 請求里叫請求頭或者響應頭,它解決了客戶端和服務端用什麼編碼規則,是什麼數據類型,數據大小等規定。

在WCF里類似的這樣的規定叫“綁定”,

 

如:在反編譯器中給綁定對象賦值的CloseTimeOut,SendTimeOut是否很熟悉,webconfig里綁定配置里就有設置相關的內容。當然WCF的綁定比瀏覽器的功能更強大。

 

代理類

先說說序列化,客戶端和服務要傳遞的對象一定要是能序列化的,因為序列化後對象才能在網路中傳輸,我們知道網路傳輸最終的形式是比特流,而序列化正是把數據對象弄成比特流。

 

當們引用服務地址後(也可能用生成工具生成代理類),我們可以發現在Reference.cs里看到和服務端提供服務的類里的代碼非常像。這個文件是實實在在的存在我們本地文件夾里的,那這個文件就是我們VS,或者生成工具根據服務提供的元數據信息在我們本地生成的一個這樣的類。

 

那這個類的作用就是為我們本地代碼服務的,

首先裡面的實體數據類,我可以new出實體對象與服務端進行數據傳遞,如參數對象等。

接著是操作類,就是後面帶有Client的類,當我們調用這個類里的方法的時候,通道就被創建出來了,通道出來後就能調用到服務端的方法了,也就完成了遠程調用了,得到了伺服器返回給我們的結果。

 

既然WCF調用(IIS宿主環境),與瀏覽器請求本質是一樣的東西,為什麼不能在瀏覽器里輸入服務地址得到處理結果呢。

因為WCF用的是SOAP協議,SOAP協議也是基於HTTP協議的,但是瀏覽器根本就不能處理SOAP的數據。

 

契約

聲明哪些函數和類可以讓客戶端使用

 

所以WCF最主要的功能可以看成兩點:封裝了一整套網路通信的功能,本質上用的還是TCP/IP,Socket,Http那一套東西。二是數據的序列化以及反列化,配合SOAP就能在網路或者遠程終端傳輸對象了。


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

-Advertisement-
Play Games
更多相關文章
  • 情形: 1.主機(host):ubuntu 2.虛擬機里安裝的操作系統版本(guest):windows 7專業版 3.simplify3d破解版版本:3.0.2(破解需要的工具均在下文的百度雲地址里) 所需文件下載地址:http://pan.baidu.com/s/1slUoEZz,密碼:57cs ...
  • 在測試前,理應瞭解本機所具備的特點,比如CPU頻率、記憶體頻率、記憶體大小,等等信息。 查看CPU用如下命令(多少個核,頻率,特性等): cat /proc/cpuinfo 查看記憶體用如下命令:(只有當前記憶體大小,已用空間等等,不能看到記憶體頻率) cat /proc/meminfo 要查看記憶體型號和頻率 ...
  • 寫在前面 最近在重溫asp.net,找了一本相關的書籍。本書在第一章就講了,在不使用瀏覽器的情況下生成一個web請求,獲取伺服器返回的內容。於是在網上搜索關於Http請求相關的資料,發現了很多資料都是講述基於HttpGet和HttpPost請求伺服器的資源,然根據Get和Post的單詞意思就大概知道 ...
  • ...
  • 一、Association關聯關係 說明:Assocition(關聯):描述了兩個或多個類之間的結構性關係。 (1)普通關聯: 1)Association name名稱:用以描述該關係的性質。 2)Role角色:當一個類處於關聯的某一端時,該類就在這個關係中扮演了一個特定的角色;角色是關聯中靠近它的 ...
  • 今天要實現的是給PDF文件添加圖片背景這個功能。PDF是近年來最流行的文件之一,無論是辦公還是日常生活中都經常會用到,很多時候,PDF文件的背景色都是白色,看多了難免覺得累,更換PDF的背景不僅可以讓眼睛看起來更舒服,還可以讓PDF文件看上去更美觀。如何實現?作為一名程式猿,當然要親自“操刀上陣”, ...
  • 先在資料庫中建表: 再從後臺將表取出來,然後轉化為json格式,再將其執行ToString()操作後,賦值給前臺的隱藏域。 註意引用using Newtonsoft.Json; 前臺利用js將隱藏域中的值取出,由於這個值是字元串格式,需要將它轉為json格式。 利用eval來實現。 註意引用jQue ...
  • 新框架正在逐步完善,可喜可賀的是基礎服務部分初具模樣了,給大家分享一下 由於基礎服務涉及面太廣,也沒開發完,這篇只介紹其中的類型轉化部分,命名為類型轉化基礎服務,其實就是基礎服務模塊的類型轉化子模塊 說到類型轉化必須要弄清楚.net的類型,類型都不清楚何來類型轉化 1、Primitive類型 1.1 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...