首页 > 代码库 > 第一节 构建一个简单的WCF应用

第一节 构建一个简单的WCF应用

  先吐个槽,到目前为止接触的东西也就是些ado.net、select、delete、update、create、临时表的批量操作、及稍微复杂点的几个表之间查询再带几个excel导入导出 然后会点前端的js、jquery等,所以在公司目前薪水并不高(能在广州生活下去吧,什么买车买房的想都别想),拿自己身边的同志一比较感觉心里不怎么平衡,凡事还是得靠自己 自强才是硬道理,就吐到这里吧!开始我的wcf之旅吧 本人理工科类型的文笔很烂 希望各位大神不要喷小弟哦(参照的书本:WCF全面解析)

  咱们还是从小学开始吧,四则运算,用wcf实现一个加减乘除的小功能

1、新建一个空解决方案

2、添加类库项目(Service.Interface)并添加System.ServiceModel程序集,新建一个接口(ICalculator)

using System.ServiceModel;

namespace Service.Interface
{
    [ServiceContract(Name="CalculatorService")]
    public interface ICalculator
    {
        [OperationContract]
        double Add(double x, double y);

        [OperationContract]
        double SubStract(double x, double y);

        [OperationContract]
        double Mutiply(double x, double y);

        [OperationContract]
        double Divide(double x, double y);
    }
}
ICalculator

3、添加类库项目(Services)实现该接口并为该项目添加项目引用Service.Interface,然后添加一个类CalculatorService并实现接口ICalculator

using Service.Interface;

namespace Services
{
    public class CalculatorService:ICalculator
    {
        public double Add(double x, double y)
        {
            return x + y;
        }

        public double SubStract(double x, double y)
        {
            return x - y;
        }

        public double Mutiply(double x, double y)
        {
            return x * y;
        }

        public double Divide(double x, double y)
        {
            return x / y;
        }
    }
}
CalculatorService

4、添加控制台应用程序Hosting(并将服务寄宿与控制台程序中)并启动该控制台程序

  a、通过程序来配置终结点

  b、先配置终结点(以配置文件的形式写,实际项目开发中一般使用这种方式)

  
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="metadataBehavior">
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:50002/calculatorservice/metadata" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service name="Services.CalculatorService" behaviorConfiguration="metadataBehavior">
        <endpoint address="http://localhost:50002/calculatorservice" binding="wsHttpBinding" contract="Service.Interface.ICalculator"></endpoint>
      </service>
    </services>
  </system.serviceModel>
</configuration>
终结点配置文件

  然后再将服务寄宿在控制台程序中将wcf服务寄宿在控制台程序中

5、现在就可以调用上面建好的wcf服务啦(两种方式调用)

  a、在非当前解决方案下新建一个控制台应用程序,并添加服务引用 输入配置文件中配置的服务元数据的地址:http://localhost:50002/calculatorservice/metadata 输入命名:WCFService ,系统会自动生成与接口相同的方法成员定义(先不管这个,b方法里面介绍) 现在可以使用了

using System;

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            using (WCFService.CalculatorServiceClient proxy = new WCFService.CalculatorServiceClient())
            {
                Console.WriteLine(proxy.Add(3, 34));
                Console.Read();
            }
        }
    }
}
通过代理对象WCFService.CalculatorServiceClient调用WCF

  b、在当前解决方案下新建一个控制台应用程序Client并添加System.ServiceModel程序集,同时添加Service.Interface和

  修改配置文件,添加system.serviceModel节点View Code

  
using Service.Interface;
using System;
using System.ServiceModel;

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ChannelFactory<ICalculator> cf = new ChannelFactory<ICalculator>("Calc"))
            {
                ICalculator calc = cf.CreateChannel();
               Console.Write(calc.Add(33, 33));
               Console.ReadLine();
            }
        }
    }
}
使用工厂根据配置文件的配置创建代理

先运行Hosting,在运行Client 就可以看到结果

至此,本篇gameover!

小弟第一次写blogs,望大神不要喷我,如有写错的地方 望各位大神一定拍醒我