建置時Services端要先建好,否則client端會呼叫不到,
先建立服務專案,C# -> Windows -> Windows服務
編寫一些程式碼,這邊用一個文字檔紀錄,主要部分
namespace Service_with_WCF { public partial class ServicePart : ServiceBase { protected override void OnStart(string[] args) { StreamWriter sw = new StreamWriter(@"C:\log.txt"); sw.WriteLine("服務啟動 " + DateTime.Now.ToString()); sw.Close(); } } }服務必須被"安裝"之後才能執行,加入一個服務安裝類別
屬性設置,依個人喜好,Visual Studio有說明提示
加入WCF部分,注意:是新增在服務底下的新項目,不是新增專案
WCF加入後會有一個介面(Interface)類別,一個實體類別以及app.config
介面定義了外部要呼叫的方法名稱,以下為主要部份
namespace Service_with_WCF { [ServiceContract] public interface IWCF_Service { [OperationContract] string DoWork(string name); } public class WCF_Service : IWCF_Service { public string DoWork(string name) { return "Hello" + name; } } }app.config最重要的部分在於"呼叫位置",系統會自動產生,其他部分依情況修改
<add baseAddress="http://localhost:8732/Design_Time_Addresses/Service_with_WCF/WCF_Service/" />
加入一個安裝專案佈署此服務
在服務類別宣告ServiceHost物件,其實就是WCF物件
namespace Service_with_WCF { public partial class ServicePart : ServiceBase { protected override void OnStart(string[] args) { ServiceHost host = new ServiceHost(typeof(WCF_Service)); host.Open(); StreamWriter sw = new StreamWriter(@"C:\log.txt"); sw.WriteLine("服務啟動 " + DateTime.Now.ToString()); sw.Close(); } } }
安裝專案的自訂動作 -> 應用程式資料夾 -> 加入輸出,把剛剛做的服務加進來
建置,佈署,第一次要手動啟動服務,
可以看到剛剛建立的ExampleService已經成功佈署完成
加入Client端的新專案,這邊用主控台應用程式,
專案 -> 加入服務參考 -> 輸入服務位置就可以看到剛剛佈署的Host
撰寫Client端程式碼,宣告一個服務的Client
namespace Client { class Program { static void Main(string[] args) { ServiceReference1.WCF_ServiceClient serviceClient = new ServiceReference1.WCF_ServiceClient(); string resultStr = serviceClient.DoWork(" Sean"); Console.WriteLine(resultStr); Console.Read(); } } }
成功的呼叫了服務端的方法
沒有留言:
張貼留言