<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Spring.Net框架與WCF的集成(上)

      Spring.Net集成了.Net多方面的開發,比如:WebService、.Net Remoing、WCF等。本文

      簡單介紹一下通過Spring.Net的IoC容器開發WCF 服務。

      示例使用的Spring.Net 版本:1.3.2。本節介紹的是基于Spring.Net的IoC容器來開發WCF服

      務。這種方式和之前WCF開發差別不大,只是服務的寄宿、以及客戶端代理的創建都交由

      Spring.Net來完成。以下通過一個簡單示例進行說明。

       

      1、ServiceContract定義以及服務配置:
           [ServiceContract(Namespace = "Spring.WCF")]

           publicinterface IAdd
          {
              [OperationContract]
              int Add(int x, int y);
          }

      配置:
              <objects xmlns="http://www.springframework.net" xmlns:wcf="http://www.springframework.net/wcf">

      <!--提供服務的類-->
                  <object id="addSerivce" type="ServiceHost.AddService,ServiceHost" singleton="false"></object>

                  <object id="serviceFactory" type="Spring.ServiceModel.Activation.ServiceHostFactoryObject,Spring.Services">
                      <property name="TargetName" value="addSerivce"></property>
                  </object>
                  
              </objects>


      <system.serviceModel>
              <behaviors>
                  <serviceBehaviors>
                      <behavior name="DefaultBehavior">
                          <serviceMetadata httpGetEnabled="True"/>
                          <serviceDebug includeExceptionDetailInFaults="True"/>
                      </behavior>
                  </serviceBehaviors>
              </behaviors>
              <services>
                  <service name="addSerivce" behaviorConfiguration="DefaultBehavior">
                      <host>
                          <baseAddresses>
                              <add baseAddress="http://127.0.0.1:6633/"/>
                          </baseAddresses>
                      </host>
                      <endpoint address="AddService" binding="basicHttpBinding" contract="Contracts.IAdd"></endpoint>
                  </service>
              </services>
          </system.serviceModel>

       

      為了寄宿服務,定義了一個繼承自IFactoryObject的Spring.ServiceModel.Activation.

      ServiceHostFactoryObject對象,并將它的TargetName屬性指定為服務實現類(由于服務實現過于簡單,就沒有給出服務的實現。服務的類名為:AddService,處 于ServiceHost程序集下)。

      <system.serviceModel>的配置與往常的區別是:<service name="addSerivce">。

      之前name指定為類的全局限定名,即:程序集+類型名;使用Spring.Net的IoC后只需要將name設置為服務類型的定義的Id或者nane屬性。

      ServiceHostFactoryObject 創建一個與服務類型關聯的Spring.ServiceModel.Activation.

      SpringServiceHost實例來寄宿服務;而SpringServiceHost也通過Spring.Net進行配置。

       

      2、服務寄宿:

      ContextRegistry.GetContext(); 

      Console.WriteLine("Service is running...");
      Console.Read();

       

      3、客戶端配置:

       

      <objects xmlns="http://www.springframework.net"
               xmlns:wcf="http://www.springframework.net/wcf">
          <wcf:channelFactory channelType="Contracts.IAdd,Contracts" 
                              endpointConfigurationName="addService" id="addService">
          </wcf:channelFactory>
      </objects>

      <spring>
              <context>
                  <resource uri="assembly://Client/Client.Config/WCFServiceConfig.xml"></resource>
              </context>

          </spring>

          <system.serviceModel>

              <client>
                  <endpoint address="http://127.0.0.1:6633/AddService" 
                            binding="basicHttpBinding" 
                            contract="Contracts.IAdd" name="addService"></endpoint>
              </client>
      </system.serviceModel>
       

      本例中,將此配置放在單獨的配置文件WCFServiceConfig.xml中,在 App.Config文件中對他的引用進行申明。

       

      提示:

      1、在客戶端配置中,對endpoint 配置的名稱必須和wcf:channelFactory指定的id相同
      2、引用.NET程序集內嵌資源時的URI語法:assembly://<AssemblyName>/<NameSpace>/<ResourceName>
      3、希望配置中能有智能提示,請將Spring下的其他xsd文件拷貝到X:\Program Files\Microsoft Visual Studio 10.0\Xml\Schemas中
       

      獲取服務代理對象并調用服務:

      方式1:
      foreach (IAdd proxy in ctx.GetObjectsOfType(typeof(IAdd)).Values) 

                      {
                          Console.WriteLine(string.Format("invocation result is :{0}", proxy.Add(12)));
                          (proxy as ICommunicationObject).Close();
                      }

      方式2:
      IAdd proxy0 = ctx.GetObject("addService"as IAdd;               

      Console.WriteLine(string.Format("invocation result is :{0}", proxy0.Add(52))); 
      (proxy0 as ICommunicationObject).Close();

      運行結果:

       

      服務端:
       

      客戶端端:

       

       

      代碼下載:https://files.cnblogs.com/tyb1222/SpringServiceHost.rar

      posted @ 2012-06-25 14:47  tyb1222  閱讀(4431)  評論(6)    收藏  舉報
      主站蜘蛛池模板: 国产成人AV在线免播放观看新| 亚洲精品tv久久久久久久| 激情伊人五月天久久综合| 日韩永久永久永久黄色大片| 国产高潮又爽又刺激的视频| 日韩精品一区二区午夜成人版| 欧美日韩国产综合草草| 中文字幕av一区二区| 92国产精品午夜福利免费| 亚洲护士一区二区三区| 少妇xxxxx性开放| 国产性色的免费视频网站| 国产成人高清在线观看视频| 精品国产亚洲区久久露脸| 精品久久久久无码| 亚洲国产精品久久久天堂麻豆宅男| 产综合无码一区| 国内精品久久人妻无码不卡| 国产日韩av免费无码一区二区三区| 三级国产三级在线| 亚洲一区二区三区黄色片| 亚洲真人无码永久在线| 中文字幕国产日韩精品| 人妻聚色窝窝人体WWW一区| 国内精品视频一区二区三区| 在线观看中文字幕码国产| 日本a在线播放| 成人亚洲欧美一区二区三区| 定西市| 麻豆蜜桃伦理一区二区三区| 久久精品噜噜噜成人av| 小嫩模无套内谢第一次| 熟女人妻aⅴ一区二区三区电影| 国产成人免费观看在线视频| 国产成人高清亚洲综合| 极品尤物一区二区三区| 国产粉嫩一区二区三区av| 使劲快高潮了国语对白在线| 久99久热这里只有精品| 成人啪精品视频网站午夜| 日韩一区在线中文字幕|