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如需转载请自行联系原作者


王德水

相关文章
艾伟:WCF从理论到实践(14):WCF解决方案模板
本系列文章导航 WCF从理论到实践(1):揭开神秘面纱 WCF从理论到实践(2):决战紫禁之巅 WCF从理论到实践(3):八号当铺之黑色契约 WCF从理论到实践(4):路在何方 WCF从理论到实践(5):Binding细解 WCF从理论到实践(6):WCF架构 WCF从理论到实践(7):消息交换模式...
979 0
|
XML 数据格式 网络架构
艾伟_转载:WCF基本异常处理模式[中篇]
  通过WCF基本的异常处理模式[上篇], 我们知道了:在默认的情况下,服务端在执行某个服务操作时抛出的异常(在这里指非FaultException异常),其相关的错误信息仅仅限于服务端可见,并不会被WCF传递到客户端;如果将开启了IncludeExceptionDetailInFaults的ServiceDebug服务行为通过声明(通过在服务类型上应用ServiceBehaviorAttrite特性)或者配置的方式应用到相应的服务上,异常相关的所有细节信息将会原封不动地向客户端传送。
716 0
|
XML 数据格式
艾伟_转载:WCF基本异常处理模式[下篇]
  从FaultContractAttribute的定义我们可以看出,该特性可以在同一个目标对象上面多次应用(AllowMultiple = true)。这也很好理解:对于同一个服务操作,可能具有不同的异常场景,在不同的情况下,需要抛出不同的异常。
736 0
|
安全 C#
WCF技术我们应该如何以正确的方式去学习掌握
一、WCF技术我该如何学习?       阿笨的回答是:作为初学者的我们,那么请跟着阿笨一起玩WCF吧,阿笨将带领大家如何以正确的姿势去掌握WCF技术。由于WCF技术知识点太多了,就纯基础概念性知识都可以单独出一本书来讲解,本次分享课程《C#面向服务编程技术WCF从入门到实战演练》开课之前,阿笨还是希望从没了解过WCF技术的童鞋们提前先了解一下WCF技术,至少要明白WCF技术的ABC三要素分别指的是什么。
1195 0
下一篇
无影云桌面