WCF從理論到實踐(4):路在何方


本文的出發點

通過閱讀本文,您能了解以下知識:

  1. Address是什么?
  2. Address的組成?
  3. 如何在配置文件中指定Address?
  4. 如何通過編程方式設置Address?
  5. Address有什么特殊應用?

?

本文適合的讀者

適合WCF初學者,可以沒有任何SOA和其他分布式開發經驗

?

Address是什么?

一個要和服務端通訊的客戶端要做的第一件事情,就是搞清數據要發給誰?目的地在哪?而Address正是通過一個Uri來唯一標示一個WCF的終節點(EndPoint)的,它標示了消息發送的目的地。在WCF 數據通訊中,它解決了服務在哪里的問題。

?

Address的組成?

Address在WCF中的用System.ServiceModel.EndpointAddress對象來表示的,它的結構如下:

?




組成部分

作用

Uri

指示EndPoint的地址,是必須的

Identity

能保證地址的唯一性,當Uri一致的時候,可以用Identity來區分EndPoint,可有可無

Headers

為地址提供了一些附加信息,用于Soap Message Filter,最后會添加到Soap消息的Header中

此外,Address還包括IsAnonymous屬性,用于指示終節點是否能匿名訪問。

?

如何在配置文件中指定Address?

在配置文件中,有兩種方式可以指定Address,一種是絕對地址方式,另外是相對地址方式,分別如下:

絕對地址

?<host>
??????????
<baseAddresses>
????????????
<add?baseAddress?=?"http://localhost:8731/"?/>
??????????
</baseAddresses>
???
</host>
???
<endpoint?address?="http://localhost:8731/Service"?binding="basicHttpBinding"?contract="Wcf_Address_Config.IService1">?</endpoint>


相對地址

?<host>
??????????
<baseAddresses>
????????????
<add?baseAddress?=?"http://localhost:8731/"?/>
??????????
</baseAddresses>
??
</host>
??
<endpoint?address?="Service1"?binding="basicHttpBinding"?contract="Wcf_Address_Config.IService1"></endpoint>

在網上有人說絕對地址是通過將httpGetEnabled設置為true,并且設置httpGetUrl為絕對地址是在設置endPoint的說法有些不準確,因為在WCF中有兩種地址,一種是訪問endPoint時候用到地址,另外一種是服務描述的地址,服務描述在wcf中被稱作serviceMetadata,通過它能夠產生代理類,比如,我們做如下的設置:

?<serviceMetadata?httpGetEnabled="True"?httpGetUrl="http://localhost:8731/Service"/>

只代表在http://localhost:8731/Service/?wsdl上能找到服務描述,可以通過http://localhost:8731/Service/?wsdl生成代理類,而不是將endPoint的地址設置為了http://localhost:8731/Service,這點一定要注意,不要受有些說法的誤導。

?

如何通過編程方式設置Address?

除了能在配置中設置Address外 ,還可以通過編程的方式來設置Address,具體方法請參參見下面的代碼示例:

?static?void?Main(string[]?args)
????????
{
????????????EndpointAddress?address?
=?new?EndpointAddress("http://127.0.0.1:2136/Service1");???????????
????????????Binding?binding?
=?new?BasicHttpBinding();
????????????wcf.IService1?service?
=?new?wcf.Service1Client(binding,?address);
????????????Console.WriteLine(service.GetData(
2));
????????????Console.Read();
????????}

上面的代碼就是將endPoint的地址設置為了http://127.0.0.1:2136/Service1

?

Address有什么特殊應用?

在wcf中,能夠將服務同時發布到幾個地址上面,只要這些地址采用的都是一種訪問方式。這種一份程序,多個發布地址的做法,在以往的技術中是沒有的。

?

示例項目:

通過配置文件設置Address:/Files/jillzhang/Wcf_Address_Config.rar
通過代碼方式設置Address:/Files/jillzhang/Wcf_Address.rar




本文參考資料

http://www.cnblogs.com/artech/archive/2007/02/28/659331.html

http://www.cnblogs.com/anders-x-hu/archive/2007/05/29/763971.html

http://www.cnblogs.com/huangjizhou/archive/2007/12/03/981592.html

http://www.cnblogs.com/wayfarer/archive/2007/09/26/906075.html

轉載于:https://www.cnblogs.com/jillzhang/archive/2008/01/30/1059169.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276957.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276957.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276957.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

office 2007圖標_微軟Office 365桌面版新圖標開始測試

IT之家3月1日消息 此前&#xff0c;微軟公布了全新的Office圖標&#xff0c;微軟Office 365在線網頁版在2月15日開始已經全面更新新版圖標&#xff0c;而桌面版Office 365現在也陸續開始測試新版圖標。目前微軟Office Dogfood通道上推送的開發者預覽版本已經在2月27日開始測試O…

【動態規劃BFS】相遇

這是我第一次模擬題測試點全部AC。。。 同機房的DALAO都用的BFS 然而我用的DP&#xff08;其實不會BFS&#xff09; 話不多說&#xff0c;上題&#xff01; &#xff08;灰常詳細&#xff09;DP解法&#xff1a; 重點還是狀態轉移方程式的推導 1個點i要么是后面的位置i-1往前走…

Ruby on Rails 通過代理遠程安裝

在網上查了一些資料&#xff0c;都不詳細&#xff0c;現在列出標準命令&#xff1a; 1。如果代理服務器需要認證 gem install rails --include-dependencies --http-proxy http://username:passwordproxy:port 2。如果代理服務器不需要認證 gem install rails --include-depend…

五個思路,教你如何建立金融業的數據分析管理模型

說起銀行、保險、股票投資這樣的金融行業&#xff0c;很多人都認為它們是依靠數據驅動的企業&#xff0c;畢竟大數據的誕生本來就是為了金融信息流通而服務的&#xff0c;但在我身邊很多搞證券、投資的朋友看來&#xff0c;事實卻并非如此。 真正在金融行業做數據分析的人&…

【SSH網上商城項目實戰19】訂單信息的級聯入庫以及頁面的緩存問題

購物車這一塊還剩最后兩個問題&#xff0c;就是訂單信息的級聯入庫和頁面緩存&#xff0c;這里的信息是指購物車和購物項&#xff0c;即我們將購物車的信息存入數據庫的同時&#xff0c;也存入每個購物項的信息&#xff0c;而且外鍵都關聯好&#xff0c;這涉及到了Hibernate中的…

exfat分配單元大小選多少_安防監控攝像機視角大小和鏡頭毫米數的基礎知識!...

關于選擇監控鏡頭毫米數的問題&#xff0c;雖然只有新手才有此困惑&#xff0c;但是我們還是要認真地說一說。監控視角&#xff0c;就是指監控照射的鏡頭所能覆蓋到的范圍&#xff0c;就是監控畫面所能看到的角度統稱叫監控視角。我們正常選購監控的時候&#xff0c;除了可以選…

彩信編輯器之預覽功能

html代碼 <table width"200"height"250"border"0"cellpadding"0"cellspacing"0"bgcolor"#666666"><tr><td align"center"valign"middle"><marquee id"MMScreen&qu…

java 幾個實用的小工具

1、除法運算 編程的人都知道&#xff0c;java中的“/”、“%”運算&#xff0c;其中前者為取整&#xff0c;后者取余數。那么有沒有快捷的運算方法取正常的運算結果呢&#xff1f; 查了資料&#xff0c;發現很簡單。代碼如下&#xff1a; public static String txfloat(int a,i…

處理模板頁菜單高亮

//處理模板頁菜單高亮var urlstatus false;$("#indexMenu a").each(function () {if ((location.href /).indexOf($(this).attr(href)) > -1 && $(this).attr(href) ! ) {$(this).parent().addClass(active);urlstatus true;} else {$(this).parent().…

動畫演示 Delphi 2007 IDE 功能[3] - 修改屬性

動畫劇本:添加控件后用 F11 激活 Object Inspector 窗口;可用 ↑ ↓ 選擇屬性;用 Tab 切換屬性名和屬性值;用 Tab 切換到屬性名后, 鍵入屬性名的部分字母, 可迅速定位;用 Tab 切換到屬性值后, 也可以鍵入字母選擇, 而后回車確認.Ctrl↓ 可以選擇其他控件;整個過程可以做到無鼠標…

kali怎么成為管理員_網站死鏈是什么、是怎么引起的以及死鏈對SEO優化的影響?...

網站死鏈是我們在做SEO時必不可少的一個錯誤&#xff0c;對于從事SEO行業的人員來說&#xff0c;網站死鏈最熟悉不過了&#xff0c;但是對于那些剛入SEO行業的新手來說&#xff0c;還是不太熟悉。今天我們就給大家講一下什么是網站死鏈&#xff1f;網站死鏈是怎么引起的&#x…

Map-Reduce入門

1、Map-Reduce的邏輯過程 假設我們需要處理一批有關天氣的數據&#xff0c;其格式如下&#xff1a; 按照ASCII碼存儲&#xff0c;每行一條記錄每一行字符從0開始計數&#xff0c;第15個到第18個字符為年第25個到第29個字符為溫度&#xff0c;其中第25位是符號/-006701199099999…

Java之泛型T T與T的用法

<T> T表示返回值是一個泛型&#xff0c;傳遞啥&#xff0c;就返回啥類型的數據&#xff0c;而單獨的T就是表示限制你傳遞的參數類型&#xff0c;這個案例中&#xff0c;通過一個泛型的返回方式&#xff0c;獲取每一個集合中的第一個數據&#xff0c; 通過返回值<T>…

UrlReWriter 使用經驗小結

UrlRewriter 是微軟封裝好了的一個URL重寫組件。使用它可以讓我節約很多自已開發的時間。 好了&#xff0c;開始講述我的應用經驗&#xff0c;這只是很菜鳥的經驗&#xff0c;高手就不用看了。 第一步&#xff0c;請從此下載此組件。解壓&#xff0c;把UrlRewriter.dll copy到你…

clickhouse大數據分析技術與實戰_從銷售到經營——大客戶銷售策略與實戰技術...

對于首席客戶代表而言&#xff0c;要走出困局&#xff0c;所需要大客戶銷售策略性的訓練&#xff0c;而不是像基層客戶經理的銷售技巧訓練一樣&#xff1b;新業務的學習固然重要&#xff0c;但更重要的是轉化成實戰績效。從組織變革角度&#xff0c;每次成功的業務轉型背后都意…

Hadoop_NameNode_代碼分析_目錄樹(2)

&#xff08;1&#xff09;NameNode的內存中保存了龐大的目錄樹結構&#xff0c;這個結構用來保存文件目錄結構和文件Block之間的映射&#xff0c;這種結構關系會固化在磁盤上&#xff0c;但是對樹的改動頻繁發生&#xff0c;什么時候將樹寫入磁盤呢&#xff1f;把每次操作應用…

詳解 Visual C# 數據庫編程

詳解 Visual C# 數據庫編程 ******2007-11-05 14:34關于數據庫編程&#xff0c;微軟提供了一個統一的數據對象訪問模型&#xff0c;在Visual Studio6.0中稱為ADO&#xff0c;在.NET中則統一為ADO.NET,掌握ADO.NET就等于掌握了數據庫編程的核心。 針對數據庫編程始終是程序設計語…

swift - 根試圖控制器的手勢返回沖突 - push 新的tabbar控制器手勢沖突

1. 禁用手勢 和開啟手勢extension JYRTSShopListController: UIGestureRecognizerDelegate {/// 禁止使用手勢返回func forbidhenSideBack() {self.isCanSideBack falseif (self.navigationController?.responds(to:#selector(getter: self.navigationController?.interacti…

Acer 4750 安裝黑蘋果_黑蘋果系統安裝通用教程圖文版

在開始之前&#xff0c;不管你要安裝的是臺式組裝機&#xff0c;臺式品牌機&#xff0c;一體機&#xff0c;還是筆記本&#xff0c;都要大概了解一下硬件信息。因為黑蘋果的安裝確實比安裝Windows的系統要復雜的多。不管是前期準備工作&#xff0c;安裝&#xff0c;還是安裝之后…

IIS7中使用集成模式時出現HttpException

癥狀:在iis7在使用集成模式的Pool可能出現HttpException,而程序在經典模式下能正常運行. 解決方法:http://mvolo.com/blogs/serverside/archive/2007/11/10/Integrated-mode-Request-is-not-available-in-this-context-in-Application_5F00_Start.aspx 轉載于:https://www.cnbl…