原創地址:http://www.cnblogs.com/jfzhu/p/4025448.html
轉載請注明出處
(一)創建WCF Service
(1)創建WCF Service類庫
創建一個Class Library的項目:
刪除掉默認的Class1.cs文件,然后添加一個WCF Service項目:
Visual Studio會自動幫助你生成兩個文件:HelloService.cs 和 IHelloService.cs,另外還自動添加了System.ServiceModel引用,它是WCF的核心。
修改IHelloService.cs和HelloService.cs文件。
IHelloService.cs:
namespace HelloService { // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IHelloService" in both code and config file together. [ServiceContract] public interface IHelloService { [OperationContract] string GetMessage(string name); } }
HelloService.cs:
namespace HelloService { // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "HelloService" in both code and config file together. public class HelloService : IHelloService { public string GetMessage(string name) { return "Hello " + name; } } }
(2)創建WCF的Host
添加一個新的ASP.NET Empty Web Application:
添加一個新Item WCF Service
刪除HelloService.svc.cs和IHelloService.cs文件。
添加HelloService Class Library的項目引用:
修改HelloService.svc為:
<%@ ServiceHost Language="C#" Debug="true" Service="HelloService.HelloService" %>
Web.config:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name="HelloService.HelloService" behaviorConfiguration="metaBehavior"> <endpoint address="HelloService" binding="basicHttpBinding" contract="HelloService.IHelloService"></endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint> <host> <baseAddresses> <add baseAddress="http://localhost:8080"/> </baseAddresses> </host> </service> </services> <behaviors> <serviceBehaviors> <behavior name="metaBehavior"> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
其中,service name=”命名空間.類名”,behaviorConfiguration是用來關聯下面behavior的定義的。
endpoint address中定義的是相對地址,與baseAddress結合起來為完整地址
endpoint contract=”命名空間.接口名”
兩個endpoint,第一個binding是basicHttpBinding,用於HTTP協議;第二個endpoint用於交換metadata,binding為mexHttpBinding。
其中behavior的定義是用來允許交換metadata的。
Build解決方案,如果沒有錯誤就進行到下一步,部署WCF Service到IIS
(二)部署WCF Service到IIS
(1)Publish HelloServiceIISHost項目
(2)部署到IIS
瀏覽HelloService.svc
(三)創建一個Windows Form來調用WCF Service
添加一個服務引用:
private void button1_Click(object sender, EventArgs e) { HelloService.HelloServiceClient client = new HelloService.HelloServiceClient(); label1.Text = client.GetMessage(textBox1.Text); }
運行代碼,效果如下:
(四)總結
svc文件中,包含着服務指令,Service屬性指明文件指向的是哪個服務
<%@ ServiceHost Language="C#" Debug="true" Service="HelloService.HelloService" %>
service的代碼可以在
(1) XXX.svc.cs的文件中
(2) 一個獨立的Assembly(如同本文)
(3) App_Code文件夾下