日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WCF从理论到实践(4):路在何方

發布時間:2023/12/9 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WCF从理论到实践(4):路在何方 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


本文的出發點

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

  • Address是什么?
  • Address的組成?
  • 如何在配置文件中指定Address?
  • 如何通過編程方式設置Address?
  • 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

    總結

    以上是生活随笔為你收集整理的WCF从理论到实践(4):路在何方的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。