本示例通过一个简单的加法服务,来演示WCF最基本的调用。
1. 新建一个空的Solution,命名为WCFSample,后面会把下面的工程添加进这个解决方案
2.新建WCF Service Libaray,命名JackWangWcfService
3. 右键JackWangWcfService项目,新建命名为Calc的WCF Service
4. 系统会生成一个叫ICalc.cs的接口文件和实现这个接口的Calc.cs的类文件。
5. 修改ICalc.cs,这里我们提供一个加法行为,ServiceContract 属性指把实现这个接口的类暴露为服务,OperationContract 指实现这个方法的类暴露为服务的方法。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace JackWangWCFService
{
[ServiceContract]
public interface ICalc
{
[OperationContract]
long Add(int a, int b);
}
}
6. 上面的接口只是告诉客户端(使用方)能够使用那些服务,下面修改Calc.cs类来实现这个服务
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace JackWangWCFService
{
public class Calc : ICalc
{
#region ICalc Members
public long Add(int a, int b)
{
return a + b;
}
#endregion
}
}
7. 实现了服务,但是在哪里提供服务呢?这就需要一个宿主来存放并管理服务,添加一个控制台程序,命名JackWangServiceHost, 添加JackWangWCFService和System.ServiceModel的引用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using JackWangWCFService;
using System.ServiceModel;
namespace JackWangServiceHost
{
class Program
{
static void Main(string[] args)
{
using (ServiceHost host=new ServiceHost(typeof(JackWangWCFService.Calc)))
{
host.AddServiceEndpoint(typeof(JackWangWCFService.ICalc), new NetTcpBinding(), "net.tcp://localhost:9000/Add");
host.Open();
Console.Out.WriteLine("calc web service started at:"+DateTime.Now.ToString());
Console.ReadLine();
}
}
}
}
8.下面演示客户端的调用,添加一个控制台程序,命名JackWangServiceClient,添加System.ServiceModel的引用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using JackWangWCFService;
using System.ServiceModel;
namespace JackWangServiceHost
{
class Program
{
static void Main(string[] args)
{
using (ServiceHost host=new ServiceHost(typeof(JackWangWCFService.Calc)))
{
host.AddServiceEndpoint(typeof(JackWangWCFService.ICalc),
new NetTcpBinding(), "net.tcp://localhost:9000/Add");
host.Open();
Console.Out.WriteLine("calc web service started at:"+DateTime.Now.ToString());
Console.ReadLine();
}
}
}
}
9. 启动JackWangServiceHost。
10. 启动JackWangServiceClient