码迷,mamicode.com
首页 > 其他好文 > 详细

学习WCF笔记

时间:2015-03-13 15:48:45      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:

一、参考http://www.cnblogs.com/artech/archive/2007/02/26/656901.html

二、步骤

    1、新建空白解决方案:文件--新建项目--其他项目类型--Visual Studio解决方案--空白解决方案

    2、新建契约类库项目 Contract,引用System.ServiceModel; 新建接口ICalculator,代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
namespace Contract
{
    [ServiceContract(Name="CalculatorService",Namespace="http://www.artech.com/")]
    public interface ICalculator
    {
        [OperationContract]
        double Add(double x,double y);
    }
}

3、新建服务类库项目Service,引用Contract,新建类CalculatorService,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Contract;
namespace Service
{
    public class CalculatorService : ICalculator
    {
        public double Add(double x, double y)
        {
            return x + y;
        }
    }
}

  4、新建寄宿服务的控制台项目Hosting,引用System.ServiceModel、Service、Contract,代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using Service;

namespace Hosting
{
    class Program
    {
        static void Main(string[] args)
        {
            ServiceHost host = new ServiceHost(typeof(Service.CalculatorService));
            host.Opened += delegate
            {
                Console.WriteLine("服务已经启动,按任意键结束!");
            };
            host.Open();
            Console.ReadLine();
        }
    }
}

  配置服务文件,添加配置文件(添加-新建项-常规-应用程序配置文件),配置服务终结点,配置如下:

     终结点(EndPoint)三要素:地址Address(决定服务位置),绑定Binding(实现通信的细节),契约Contract(对服务操作的抽象)      

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="metadataBehavior">
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://127.0.0.1:9999/CalculatorService/metadata" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="metadataBehavior" name="Service.CalculatorService">  <!--注意此处必须与第三步服务的命名空间一致-->
        <endpoint address="http://127.0.0.1:9999/CalculatorService" binding="wsHttpBinding"  contract="Contract.ICalculator" />
      </service>
    </services>
  </system.serviceModel>
</configuration>

4、客户端调用,新建控制台项目Client

          4.1 运行Hosting.exe,

          4.2 引用--添加服务引用,地址中输入http://127.0.0.1:9999/CalculatorService/metadata--前往,命名空间:ServiceReference,

                http://127.0.0.1:9999/CalculatorService/metadata   为WSDL形式体现的服务元数据,可以在IE中打开查看

          4.3 添加代码如下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using Client.ServiceReference;

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Threading.Thread.Sleep(5*1000);  //等待服务启动后再调用
            ServiceCalculatorClient client = new ServiceCalculatorClient();
            Console.WriteLine("x+y={0},when x={1} and y={2}",client.Add(1,2),1,2);
            Console.ReadLine();
        }
    }
}

5、设置client、hosting为启动项(解决方案--右键--属性-多启动项-client启动、hosting启动),F5运行 查看结果。

6、源代码下载

 

学习WCF笔记

标签:

原文地址:http://www.cnblogs.com/xiaochun126/p/4334967.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!