1 WCF 一個基礎理論 以及如何實現一個簡單wcf服務
阿新 • • 發佈:2018-12-03
1 SOA : service oriented architecture 面向服務的架構
2 web service標準
3 概念理解圖
4 WCF類庫 專案的 wcf簡單實現
首先建立一個簡單的wcf類庫 serviceLib:
其次建立一個控制檯 作為宿主 寄宿類庫
最後建立一個控制檯作為客戶端 通過引用服務的方式 引用遠端的宿主
完成
5 詳細程式碼:
lib:刪除了複雜的東西 只留下了一個介面和對應的方法
介面:
using System.ServiceModel; namespaceServiceLib { // 注意: 使用“重構”選單上的“重新命名”命令,可以同時更改程式碼和配置檔案中的介面名“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 至此啟動就可以了