一步步學習WCF(3):WCF,我在哪兒能找到你?

來源:互聯網
上載者:User

     前面我和WCF(mm)見了個面,基本瞭解了一下WCF的情況,並和她打了個招呼,發現還是很喜歡她的呀,以後怎麼找她呢,哈哈,WCF(mm)給我提供了可以找到它的地址,哈哈,羨慕不? 言歸正傳,開始學習WCF的地址(Address).

     WCF的每一個服務都具有一個唯一的地址(Addresses).地址包括兩個重要的元素:服務的位置和傳輸協議(下次見MM的碰頭地點和碰頭暗號,有點不恰當)或者用於服務通訊的傳輸樣式。服務位置包括目標機器名、網站或網路、通訊連接埠、管道或隊列,以及一個可選的特定路徑或者URI。URI及統一資源表示,他可以是任意的唯一標示的字串,例如服務名稱或GUID。例如上一步我們簡單的WCF執行個體中的用戶端中的:http://localhost:5509/hello.svc

<client>
 <endpoint address="http://localhost:5509/Hello.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IHello" contract="ServiceReference1.IHello" name="BasicHttpBinding_IHello"/>
</client>

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

      

Address的組成部分及其作用: 
1.Uri:指示EndPoint的地址,是必須的
2.Identity:能保證地址的唯一性,當Uri一致的時候,可以用Identity來區分EndPoint,可有可無 
3.Headers:為地址提供了一些附加資訊,用於Soap Message Filter,最後會添加到Soap訊息的Header中
4.此外,Address還包括IsAnonymous屬性,用於指示終節點是否能匿名訪問。

     WCF支援的地址的樣式有如下:

          1.HTTP,

          2.TCP,

          3.Peer network(對等網),

          4.IPC(基於管道的內部進程通訊),

          5.MSMQ(微軟訊息佇列)

     地址通常採用格式如下:

          [基地址]/[可選的URI]

     基地址的通常格式如下:

          [傳輸協議]://[機器名或網域名稱][:可選連接埠]

     HTTP地址:

     HTTP使用HTTP協議進行傳輸,也可以利用https進行安全傳輸,http地址通常會被用作對外的的基於Internet的服務,並為其指定連接埠號碼,例如:http://localhost:8001 ,如果沒有指定連接埠號碼,則預設為80連接埠。兩個相同宿主的http地址可以共用一個連接埠,甚至相同的機器。

     TCP地址:

     TCP地址採用net.tcp協議進行傳輸,通常他還包括連接埠號碼,例如:net.tcp://localhost:8002/myservice ,如果沒有指定連接埠號碼,則預設連接埠號碼為808:

net.tcp://localhost/myservice,兩個TCP地址(來自相同的宿主)可以共用一個連接埠。

     IPC地址:

     IPC地址使用net.pipe進行傳輸,這以為著他將使用Windows的具名管道機制。在WCF中,使用具名管道的服務只能接受來自同一台機器上的調用。因此,在使用時必須指定明確的本地機器名或者直接命名為localhost,為管道名提供唯一的表示字串:net.pipe://localhost/mypipe。每台機子只能開啟一個具名管道,因此,兩個具名管道地址在同一台機器上不能共用一個管道名。    

     MSMQ地址:

     MSMQ 使用 net.msmq 進行傳輸,及使用了微軟訊息佇列(Microsoft Message Queue,MSMQ)機制。使用時必須為MSMQ地址指定隊列名。如果是處理私人隊列,則必須指定隊列類型,但對於公有隊列而言,隊列類型可以省略:net.msmq://localhost/private/myservice  net.msmq://localhost/myservice.

     Peer network地址(對等網地址):

     使用net.p2p 進行傳輸,它使用了Windows的對等網傳輸機制。如果沒有使用解析器,我們就必須為對等網地址指定對等網名,唯一的路徑以及連接埠。(很少用到)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.