WCF的基礎範例
本篇是跟據 MSDN 上的使用者入門教學課程整理而成的
在這邊就不做太多的綴訴
有需要的朋友可以自己連上網址看
http://msdn.microsoft.com/zh-tw/library/ms734712.aspx
在這邊只根據幾的比較容易混淆的地方交代一下
以下為Server端的程式
使用時記得參考 System.ServiceModel.dll
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using System.ServiceModel.Description; using System.IO; namespace Microsoft.ServiceModel.Samples { class Program { static void Main(string[] args) { using (ServiceHost mServiceHost = new ServiceHost(typeof(CalculatorService))) { try { // Open the ServiceHost to start listening for messages. mServiceHost.Open(); // The service can now be accessed. Console.WriteLine("The service is ready."); Console.WriteLine("Press <ENTER> to terminate service."); Console.ReadLine(); // Close the ServiceHost. mServiceHost.Close(); } catch (TimeoutException timeProblem) { Console.WriteLine(timeProblem.Message); Console.ReadLine(); } catch (CommunicationException commProblem) { Console.WriteLine(commProblem.Message); Console.ReadLine(); } }// using ServiceHost Console.ReadLine(); } } [ServiceContract] public interface ICalculator { [OperationContract] string Test(string szParam); } public class CalculatorService : ICalculator { public string Test(string szParam) { return "Call test" + szParam; } } }
在此最容易混淆的部分為 App.config 設定檔
尤其是跟筆者一樣不太習慣使用App.config的
首先在專案上選擇 加入>新增項目
然後選擇應用程式組態檔
接下來使用Visual Studio提供的 WCF Service Configuration Editor 來開啟此App.config
建立一個新的Service
填入服務的名稱 Microsoft.ServiceModel.Samples.CalculatorService
服務名稱請對照上面的程式碼
填入合約的名稱 Microsoft.ServiceModel.Samples.ICalculator
合約名稱請對照上面的程式碼
在MSND中提供的範例
是使用HTTP協定
選擇 Advanced Web Services interoperability
然後再選擇 Simplex communication
在這邊使用本機的位址
Port則是18000
在Advanced > Service Behaviors中新增一個Behaviors Configuration
在新的Behavior中新增一個Behavior element extension position
選擇serviceMetadata
然後將新增出來的serviceNetadata中的HttpGetEnalbed設定為 ture
回到最上方的Services
選擇我們剛剛新增的 Microsoft.ServiceModel.Samples.CalculatorService
將右方的項目中的BehaviorConfiguration選擇為我們剛剛新增的Behavior
然後再Microsoft.ServiceModel.Samples.CalculatorService下面的Host選項
新增一個BaseAddress
內容為要使用的位址
在這邊以 http://127.0.0.1:18000/service/ 為例
當以上設定完成之後
只要將檔案儲存
接下來將Server端起動就可以正常運作
如果是使用 Windows 7 或是 Vista 的朋友
記得使用Administrator的權限來執行程式
否則會產生錯誤
HTTP could not register URL http://+:18000/service/.
Your process does not have access rights to this namespace
(see http://go.microsoft.com/fwlink/?LinkId=70353 for details).
當程式執行起來之後
我們可以使用瀏覽器檢查執行是否正常
只要將剛剛設定的網址貼在瀏覽器上即可