1. 程式人生 > >1 WCF 一個基礎理論 以及如何實現一個簡單wcf服務

1 WCF 一個基礎理論 以及如何實現一個簡單wcf服務

1 SOA : service oriented architecture 面向服務的架構

2 web service標準

3 概念理解圖

4 WCF類庫 專案的 wcf簡單實現

 首先建立一個簡單的wcf類庫 serviceLib:

 其次建立一個控制檯 作為宿主 寄宿類庫

 最後建立一個控制檯作為客戶端 通過引用服務的方式 引用遠端的宿主 

 完成

 

5 詳細程式碼:

lib:刪除了複雜的東西 只留下了一個介面和對應的方法

介面:

using System.ServiceModel;

namespace
ServiceLib { // 注意: 使用“重構”選單上的“重新命名”命令,可以同時更改程式碼和配置檔案中的介面名“IService1”。 [ServiceContract] public interface IService1 { [OperationContract] string GetData(string value); } }

實現:

namespace ServiceLib
{
    // 注意: 使用“重構”選單上的“重新命名”命令,可以同時更改程式碼和配置檔案中的類名“Service1”。
public class Service1 : IService1 { public string GetData(string value) { return string.Format("You entered: {0}", value); } } }

控制檯主方法中的程式碼

using ServiceLib;
using System;
using System.ServiceModel;

//本來想給這個專案取名字叫做ServiceHost 結果跟我們的ServiceHost類衝突了 
//所以在這裡給專案取名ServiceConsole //1 引用System.ServiceModel //2 引用ServiceLib //3 將ServiceLib中的App.Config複製貼上到這個專案中 修改其中的部分內容 //4 寫程式碼 //5 以管理員身份啟動 namespace ServiceConsole { class Program { static void Main(string[] args) { //此處的Service1來自ServiceLib ServiceHost host = new ServiceHost(typeof(Service1)); host.Open(); Console.WriteLine("服務已經啟動"); Console.ReadKey(); } } }

App.Config修改一下的內容如下:

 <services>
      <service name="ServiceLib.Service1">
        <host>
          <baseAddresses>
            <!--<add baseAddress = "http://localhost:8733/Design_Time_Addresses/ServiceLib/Service1/" />被註釋的原始碼-->
            <add baseAddress = "http://localhost:8733/Service" /><!--這段程式碼是對上面一行的修改-->
          </baseAddresses>
        </host>
        <!-- Service Endpoints -->
        <!-- 除非完全限定,否則地址相對於上面提供的基址-->
        <endpoint address="" binding="basicHttpBinding" contract="ServiceLib.IService1">
          <!-- 
              部署時,應刪除或替換下列標識元素,以反映
             用來執行所部署服務的標識。刪除之後,WCF 將
              自動推斷相應標識。
          -->
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <!-- Metadata Endpoints -->
        <!-- 元資料交換終結點供相應的服務用於向客戶端做自我介紹。 --> 
        <!-- 此終結點不使用安全繫結,應在部署前確保其安全或將其刪除-->
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>

以上就建立好了服務宿主 用管理員許可權啟動

客戶端控制檯重點:

a 按照服務宿主中的配置檔案中的地址 引用服務:

b 主方法程式碼如下:

using System;

namespace ServiceConsole_Client
{
    class Program
    {
        static void Main(string[] args)
        {
            ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
            var str=client.GetData("露似真珠月似弓");
            Console.WriteLine(str);
            Console.ReadKey();
        }
    }
}

OKAY 至此啟動就可以了