一個通信會話過程有兩個部分組成,用戶端和服務端,他們要進行會話就必然有共同的語言約定,在WCF中這稱為契約(contract),定義好通信的約定後,服務端需要确定服務的具體内容,即為配置、運作服務、開放終結點。用戶端描述如何從 WCF 服務檢索用于建立 WCF 用戶端的中繼資料。
代碼
using System;
using System.ServiceModel;
namespace Microsoft.ServiceModel.Samples
{
ServiceContract(Namespace = “http://wengyuli”)]
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
}
}
第二、實作契約
public class CalculatorService : ICalculator
public double Add(double n1, double n2)
{
double result = n1 + n2;
return result;
}
第三、釋出服務
static void Main(string[] args)
{
Uri baseAddress = new Uri("http://localhost:8000/wengyuli/Service");
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);
try
{
serviceHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService");
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
serviceHost.Description.Behaviors.Add(smb);
serviceHost.Open();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
serviceHost.Close();
}
catch (CommunicationException ce)
Console.WriteLine("An exception occured: {0}", ce.Message);
serviceHost.Abort();
}
//Create an instance of the WCF Client.
System.ServiceModel.EndpointAddress epAddress = new EndpointAddress("http://localhost:8000/wengyuli/Service/CalculatorService");
CalculatorClient client = new CalculatorClient(new WSHttpBinding(), epAddress);
int value1 = 2;
int value2 = 5;
int result = client.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);
client.Close();
Console.WriteLine();
Console.WriteLine("Press <ENTER> to terminate client.");
Console.ReadLine();
本文轉自wengyuli 51CTO部落格,原文連結:http://blog.51cto.com/wengyuli/588598,如需轉載請自行聯系原作者