WCF实现的计算器功能实例

2019-12-30 18:02:11丽君

本文实例讲述了WCF实现的计算器功能。,具体如下:

对于WCF,我们有了前面的理论基础,今天通过一个计算器的实例主要给大家讲解怎么一步一步地创建一个完整的WCF应用。

一、创建整个解决方案

Calculator.Service:一个类库项目,定义服务契约(Service Contract),应用System.ServiceModel程序集;提供对WCF服务的实现。
Calculator.Host:一个Windows窗体应用程序,实现对定义在Calculator.Service项目中的服务的寄宿,该项目需要引用Calculator.Service项目和System.ServiceModel程序集。
Calculator.Client:一个Windows窗体应用程序模拟服务的客户端,该项目应用System.ServiceModel程序集。

WCF,计算器

二、创建服务契约

一般,我们通过接口的形式定义服务契约。通过下面的代码,将一个接口ICalculator定义成服务契约。我们通过在接口上应用System.ServiceModel.ServiceContractAttribute特性将一个接口定义成服务契约。

将接口定义成服务契约后,接口的方法成员并不能自动成为服务的操作。我们需要在相应的操作方法上面显式地应用OperationContractAttribute特性。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
namespace Calculator.Service
{
  [ServiceContract]
  public interface ICalculator
  {
    [OperationContract]
    double Add(double x, double y);
    [OperationContract]
    double Subtract(double x, double y);
    [OperationContract]
    double Multiply(double x, double y);
    [OperationContract]
    double Divide(double x, double y);
  }
}

三、创建服务

当服务契约创建成功后,我们需要通过实现服务契约来创建具体的WCF服务,WCF服务CalculatorService实现了服务契约的接口ICalculator,实现了所有的服务操作。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Calculator.Service
{
  public class CalculatorService:ICalculator
  {
    public double Add(double x, double y)
    {
      return x + y;
    }
    public double Subtract(double x, double y)
    {
      return x - y;
    }
    public double Multiply(double x, double y)
    {
      return x * y;
    }
    public double Divide(double x, double y)
    {
      return x / y;
    }
  }
}

四、通过自我寄宿的方式寄宿服务

服务寄宿的目的就是开启一个进程,为WCF服务提供一个运行的环境。通过为服务添加一个或多个中级诶单,使之暴露给潜在的服务消费者。服务消费者最终通过相匹配的终结点对该服务进行调用。我们完全可以通过代码的方式完成所有的服务寄宿工作。