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/archive/2008/07/02/1234166.html如需转载请自行联系原作者


王德水

相关文章
|
5月前
|
设计模式 存储 Java
掌握Java设计模式的23种武器(全):深入解析与实战示例
掌握Java设计模式的23种武器(全):深入解析与实战示例
|
数据采集 算法 C++
库调多了,都忘了最基础的概念-《单例模式VS状态码》
库调多了,都忘了最基础的概念-《单例模式VS状态码》
86 0
库调多了,都忘了最基础的概念-《单例模式VS状态码》
|
测试技术 Python
FastAPI 学习之路(三十九)对开发接口进行测试
FastAPI 学习之路(三十九)对开发接口进行测试
FastAPI 学习之路(三十九)对开发接口进行测试
|
Java C++
保守VS开放?看清封装对象属性 | 带你学《Java面向对象编程》之四
高楼万丈,起于平地。本节通过对比正反几个实例剖析了封装对象属性的必要性,介绍了进行封装的基本原则。
保守VS开放?看清封装对象属性   |  带你学《Java面向对象编程》之四
|
缓存 安全 iOS开发
iOS网络编程之四——请求类NSURLRequest使用详解
iOS网络编程之四——请求类NSURLRequest使用详解
558 0
|
设计模式 Java
掌握接口,从这三则案例开始! | 带你学《Java面向对象编程》之六十二
本节手把手带着读者借助接口和工厂设计模式完成获取类信息、处理绘图、设计图形类三则案例。
掌握接口,从这三则案例开始!  | 带你学《Java面向对象编程》之六十二
艾伟:WCF从理论到实践(14):WCF解决方案模板
本系列文章导航 WCF从理论到实践(1):揭开神秘面纱 WCF从理论到实践(2):决战紫禁之巅 WCF从理论到实践(3):八号当铺之黑色契约 WCF从理论到实践(4):路在何方 WCF从理论到实践(5):Binding细解 WCF从理论到实践(6):WCF架构 WCF从理论到实践(7):消息交换模式...
984 0