一,使用手写代码方式创建
首先建立如下类:

然后在引用中添加如下引用:

接着创建我们要开放的服务接口:

并且为此接口添加实现类:

定义好了服务和服务的实现之后,我们就可以开启服务了:
namespace 第一个WCF应用程序
{
class Program
{
static void Main(string[] args)
{
using (MyHelloHost host = new MyHelloHost()) //创建一个服务对象
{
host.open(); //开启服务
Console.Read();
}
}
}
public class MyHelloHost : IDisposable //获取定义一种释放资源的方法
{
private ServiceHost mylittleHello; //定义一个服务对象
//定义基地址
public const string BaseAddress = "net.pipe://localhost";
//定义一个可选地址,可以选中性定义
public const string HelloServiceAddress = "Hello";
//定义服务契约实现类型
public static readonly Type ServiceType = typeof(HelloService);
//服务契约接口
public static readonly Type ContractType = typeof(IHelloService);
//创建一个绑定:定义一个服务绑定
public static readonly Binding helloBinding = new NetNamedPipeBinding();
//创造一个服务对象
protected void CreateHelloServiceHost()
{
//创建一个服务的对象
mylittleHello =new ServiceHost (ServiceType ,new Uri[]{new Uri(BaseAddress)});
//给当前服务对象添加终结点
mylittleHello.AddServiceEndpoint(ContractType, helloBinding, HelloServiceAddress);
}
public ServiceHost MylittleHello //封装字段
{
get { return mylittleHello; }
}
//定义打开服务的方法
public void open()
{
Console.WriteLine("开始启动服务-----");
mylittleHello.Open();//打开
Console.WriteLine("服务已经启动-----");
}
/// <summary>
///
///构造方法
/// </summary>
public MyHelloHost()
{
CreateHelloServiceHost();
}
/// <summary>
/// 销毁对象
/// </summary>
public void Dispose()
{
if (mylittleHello!=null)
{
(mylittleHello as IDisposable).Dispose();//销毁对象
}
}
}
}
开启结果如下:
之后,我们可以测试调用此服务:
namespace 第一个MVC应用程序的客户端调用服务示例
{
class Program
{
static void Main(string[] args)
{
using (HelloProxy proxy=new HelloProxy ())
{
//利用代理调用服务
Console.WriteLine(proxy.Say("lhc"));
}
}
}
//硬编码定义服务契约
[ServiceContract]
interface IService
{
//服务操作
[OperationContract]
string Say(string name);
}
/// <summary>
/// 客户端代理典型
/// </summary>
class HelloProxy : ClientBase<IHelloService>, IService
{
//硬编码定义绑定
public static readonly Binding HelloBinding = new NetNamedPipeBinding();
//硬编码定义地址
public static readonly EndpointAddress HelloAddress = new EndpointAddress(new Uri("net.pipe://localhost/Hello"));//必须与服务端地址匹配(协议+地址)
/// <summary>
/// 构造方法
/// </summary>
public HelloProxy() : base(HelloBinding, HelloAddress) { }
public string Say(string name)
{
//使用channel属性对服务进行调用
return Channel.SayHello(name);
}
}
}
结果如图:
wow,感觉是不是有点儿乱呢?简单开启服务就要那么多代码,下面,我们将使用配置文件来简化开启服务的过程。
二,使用配置文件部署WCF应用程序
我们在应用程序中添加配置文件如下:

之后的启动服务:

可以看出,使用配置文件,我们可以将服务三要素写入配置文件,并且可以充分发挥配置文件易修改的优势,做到灵活配置。
小结:
感觉使用了WCF,我们只需开放出接口给其他系统调用即可,更重要的是,这些相互调用的系统可以在不同的物理空间,但是使用了WCF之后,我们可以将不同地域的服务整合到一个页面上,that's cool~