我的第一个WCF程序

1、WCF(Windows Communication )

      WCF是微软为构建面向服务的应用程序而提供的统一编程模型。在WCF中,各个应用程序通过Endpoint(终结点)来实现通讯

2、Endpoint

     终结点有三个组成部分:地址(Address)、绑定(Binding)和契约(Contract)。

    地址(Address)标识了WCF服务所在的位置;绑定(Binding)实现了安全传输和事务等功能;契约(Contract)是对服务操作      的抽象描述,大致分为两类:对操作的契约和对数据的契约。

3、创建WCF服务(在VS2017环境下实现)

 <1>定义服务协定

        首先新建项目,在新项目中添加WCF服务库,项目名称为WcfStartLib。项目中包含三个文件:IService.cs、Service.cs以及app.config。

        

        

然后分别修改前两个文件名称为:ICalculator.cs、CalculatorService.cs。在ICalculator.cs文件中对服务进行定义:

using System;
using System.ServiceModel;

namespace WcfStartLib
{
        [ServiceContract]
        public interface ICalculator
        {
            [OperationContract]
            int Add(int i, int j);
        }
}

在CalculatorService.cs中对服务进行实现:

namespace WcfStartLib
{
    public class CalculatorService : ICalculator
    {
        public int Add(int i, int j)
        {
            int result = i + j;
            Console.WriteLine("相加数:({0},{1})", i, j);
            Console.WriteLine("结果: {0}", result);
            return result;
        }
    }
}

<2>创建WCF宿主程序(WCF服务只有添加到进程中才可以使用)

新建一个控制台应用程序,取名为WcfStartHost。打开Program.cs文件,进行如下修改:

class Program
    {
        static void Main(string[] args)
        {
            // Step 1 创建一个基地址
            Uri baseAddress = new Uri("http://localhost:8100/WcfStart");

            // Step 2 创建 ServiceHost 实例
            ServiceHost selfHost = new ServiceHost(typeof(CalculatorService),baseAddress);

            try
            {
                // Step 3 增加服务终结点类型
                selfHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService");

                // Step 4 允许媒体类型转换.
                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                smb.HttpGetEnabled = true;
                selfHost.Description.Behaviors.Add(smb);

                // Step 5 启动服务.
                selfHost.Open();
                Console.WriteLine("服务已经启动.");
                Console.WriteLine("按Enter键终止服务.");
                Console.WriteLine();
                Console.ReadLine();

                // 关闭服务.
                selfHost.Close();
            }
            catch (CommunicationException ce)
            {
                Console.WriteLine("异常出现: {0}", ce.Message);
                selfHost.Abort();
            }
        }

    }

<3>创建WCF客户端程序,修改程序代码如下:

class Program
    {
        static void Main(string[] args)
        {
            //Step 1: 创建一个Wcf代理实例.
            CalculatorClient client = new CalculatorClient();

            // Step 2: 请求服务操作.
            // 请求加法操作.
            int value1 = 100;
            int value2 = 15;
            int result = client.Add(value1, value2);
            Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);

            //Step 3:关闭服务
            client.Close();
        }
    }

至此,我们就完成了我们的第一个WCF程序。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值