zoukankan      html  css  js  c++  java
  • WCF步步为营(一):简单示例

    本示例通过一个简单的加法服务,来演示WCF最基本的调用。

    1. 新建一个空的Solution,命名为WCFSample,后面会把下面的工程添加进这个解决方案

    image

    2.新建WCF Service Libaray,命名JackWangWcfService

    image

    3. 右键JackWangWcfService项目,新建命名为Calc的WCF Service

    image

    4. 系统会生成一个叫ICalc.cs的接口文件和实现这个接口的Calc.cs的类文件。

    image

    5. 修改ICalc.cs,这里我们提供一个加法行为,ServiceContract 属性指把实现这个接口的类暴露为服务,OperationContract 指实现这个方法的类暴露为服务的方法。

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Runtime.Serialization;

    using System.ServiceModel;

    using System.Text;

     

    namespace JackWangWCFService

    {   

        [ServiceContract]

        public interface ICalc

        {

            [OperationContract]

            long Add(int a, int b);

        }

    }

     

     

    6.  上面的接口只是告诉客户端(使用方)能够使用那些服务,下面修改Calc.cs类来实现这个服务

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Runtime.Serialization;

    using System.ServiceModel;

    using System.Text;

     

    namespace JackWangWCFService

    {   

        public class Calc : ICalc

        {

     

            #region ICalc Members

     

            public long Add(int a, int b)

            {

                return a + b;

            }

     

            #endregion

        }

    }

     

    7.  实现了服务,但是在哪里提供服务呢?这就需要一个宿主来存放并管理服务,添加一个控制台程序,命名JackWangServiceHost, 添加JackWangWCFService和System.ServiceModel的引用。

     

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using JackWangWCFService;

    using System.ServiceModel;

     

    namespace JackWangServiceHost

    {

        class Program

        {

            static void Main(string[] args)

            {

                using (ServiceHost host=new ServiceHost(typeof(JackWangWCFService.Calc)))

                {

                    host.AddServiceEndpoint(typeof(JackWangWCFService.ICalc), new NetTcpBinding(), "net.tcp://localhost:9000/Add");

                    host.Open();

                    Console.Out.WriteLine("calc web service started at:"+DateTime.Now.ToString());

                    Console.ReadLine();

                }

            }

        }

    }

     

     

    8.下面演示客户端的调用,添加一个控制台程序,命名JackWangServiceClient,添加System.ServiceModel的引用。

     

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using JackWangWCFService;

    using System.ServiceModel;

     

    namespace JackWangServiceHost

    {

        class Program

        {

            static void Main(string[] args)

            {

                using (ServiceHost host=new ServiceHost(typeof(JackWangWCFService.Calc)))

                {

                    host.AddServiceEndpoint(typeof(JackWangWCFService.ICalc),

                        new NetTcpBinding(), "net.tcp://localhost:9000/Add");

                    host.Open();

                    Console.Out.WriteLine("calc web service started at:"+DateTime.Now.ToString());

                    Console.ReadLine();

                }

            }

        }

    }

     

    9. 启动JackWangServiceHost。

    image

    10. 启动JackWangServiceClient

    image

     

     

    扫码关注公众号,了解更多管理,见识,育儿等内容

    作者: 王德水
    出处:http://www.cnblogs.com/cnblogsfans
    版权:本文版权归作者所有,转载需经作者同意。

  • 相关阅读:
    ASP.NET中读取Excel内容,并显示在界面上
    SQL SERVER 的 CLR表值函数
    nowrap要与回车换行符结合才有意义
    何时使用 FILESTREAM?
    case 用在 UPDATE
    查看分区在哪个文件组
    C#里面的随机对象Random
    CLR程序里引用System.Web.dll
    不用写成 if @i=1 OR @i=2 OR ... 这么蠢
    SQL SERVER定期转移海量数据方案
  • 原文地址:https://www.cnblogs.com/cnblogsfans/p/1234166.html
Copyright © 2011-2022 走看看