`
ppenny
  • 浏览: 31523 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

第一个WCF程序

WCF 
阅读更多
看《Programming Indigo》有一段时间了,今天算是第一次动手实现一个小程序。
因为书出的比较早,与目前发布的.NET3.0 SDK有不小的差别(主要是API)。所以这里把程序也贴出来以便有看这本书的朋友对照修改。这个小程序有可有多种实现方式,这里现贴出code-first方式。有空了再帖contract-first方式的。注意,要记着在server和client的project里加入对system.ServiceModel的引用。粗体是代码改动的地方。
首先,server端:
using System;
using System.ServiceModel;

namespace ProgrammingIndigo
{
//Contract definition.

[ServiceContract]
public interface IHello
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}

// Service implementation.

public class HelloService : IHello
{
public double Add(double n1, double n2)
{
Console.WriteLine("Add called");
return n1 + n2;
}

public double Subtract(double n1, double n2)
{
Console.WriteLine("Subtract called");
return n1 - n2;
}

public double Multiply(double n1, double n2)
{
Console.WriteLine("Multiply called");
return n1 * n2;
}

public double Divide(double n1, double n2)
{
Console.WriteLine("Divide called");
return n1 / n2;
}

// Host the service.

public static void Main()
{
// Create a ServiceHost.

using (ServiceHost serviceHost = new ServiceHost(typeof(HelloService)))
{
// Add an endpoint.

WSHttpBinding binding = new WSHttpBinding();
Uri uri = new Uri("http://localhost:8000/hello1/");
serviceHost.AddServiceEndpoint(typeof(IHello),binding,uri);


// Open the service.

serviceHost.Open();

// The service can now be accessed.
// Hold it open until user presses ENTER.

Console.WriteLine("The service is ready");
Console.WriteLine();
Console.WriteLine("Press ENTER to shut down service.");
Console.WriteLine();
Console.ReadLine();

// Close the service.

serviceHost.Close();
}
}
}
}

client端:

using System;
using System.ServiceModel;

namespace ProgrammingIndigo
{
//Contract definition.

[ServiceContract]
public interface IHello
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}

//Client implementation code.

class Client
{
static void Main()
{
// Create a proxy.
WSHttpBinding binding = new WSHttpBinding();
Uri uri = new Uri("http://localhost:8000/hello1/");
ChannelFactory channelFactory = new ChannelFactory(binding,"http://localhost:8000/hello1/");
IHello proxy = channelFactory.CreateChannel();
try
{
// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
Console.WriteLine("Calling Add({0},{1})", value1, value2);
double result = proxy.Add(value1, value2);
Console.WriteLine(" Result: {0}", result);

// Call the Subtract service operation.
value1 = 145.00D;
value2 = 76.54D;
Console.WriteLine("Calling Subtract({0},{1})", value1, value2);
result = proxy.Subtract(value1, value2);
Console.WriteLine(" Result: {0}", result);

// Call the Multiply service operation.
value1 = 9.00D;
value2 = 81.25D;
Console.WriteLine("Calling Multiply({0},{1})", value1, value2);
result = proxy.Multiply(value1, value2);
Console.WriteLine(" Result: {0}", result);

// Call the Divide service operation.
value1 = 22.00D;
value2 = 7.00D;
Console.WriteLine("Calling Divide({0},{1})", value1, value2);
result = proxy.Divide(value1, value2);
Console.WriteLine(" Result: {0}", result);
}
finally
{
((System.ServiceModel.Channels.IChannel)proxy).Close();//
//((System.ServiceModel.Channels.IChannel)proxy).Dispose(); }

Console.WriteLine();
Console.WriteLine("Press ENTER to shut down client");
Console.ReadLine();
}
}
}
结果:
分享到:
评论

相关推荐

    我的第一个WCF程序:HelloInDigo

    这是在学习WebCast上的【构建WCF面向服务的应用程序】时写的DEMO,对应第一节课【WCF概述】

    手把手教写第一个WCF程序

    参照笑看风云淡的文章,实例在VS2008中文版调试通过。含原文及测试通过的代码。

    WCF之旅:一个简单的WCF程序(vs2010源码)

    WCF之旅:一个简单的WCF程序(vs2010源码) 文章 + 源码 入门首选文章,折腾了好久才折腾出第一个wcf程序。 对准备学习wcf的人员绝对有意义

    新手第一个WCF服务程序

    好记性不如烂笔头,好笔头不如真例子 创建一个WCF服务程序 Hello World 是对WCF爱好者新手的一个引导

    WCF第一课,Hello,World!

    WCF第一课,Hello,World!、 第一个WCF程序,WCF之旅第一步!

    WCF程序开发(第一版本)

    第一个版本; 第1章,WCF基础 该章首先阐释了WCF的技术原理,并描述了WCF的基础概念和构建模块,例如地址、契约、绑定、终结点、托管以及客户端。在该章最后还讨论了WCF体系架构,它将是帮助我们理解后面章节的关键...

    WCF样例代码

    WCF 入门教程一(动手新建第一个WCF程序并部署) http://blog.csdn.net/jiankunking/article/details/44118625

    HelloWCF--我的WCF第一个练习

    一个WCF的入门——helloWCF 专给第一次写WCF程序的人

    WCF开发实战教程

    1:创建第一个WCF服务 2:使用IIS发布WCF服务 3:自运行WCF服务 4:使用Windows服务发布WCF服务 5:创建WCF客户端程序

    WCF编程(第二版)

    WCF是在微软Windows下开发面向服务应用程序(SOA)的统一平台,而《WCF编程(第2版)》则是介绍该项技术的权威指南和畅销书籍。《WCF编程(第2版)》被誉为WCF的最佳开发指南,提供了深入的技术剖析,而非死板的文档化描述...

    WCF服务编程中文版

    通过本书,开发者与架构师不仅能够了解如何进行WCF程序设计,还能够掌握相关的设计准则、最佳实践以及WCF存在的缺陷。  本书包括50多个工具和辅助类,以及70多个设计图,它们都设计用来提高我们的生产力,保障WCF...

    WCF 全面解析第三节pdf

    上册的前四章在对WCF进行总体介绍的基础上,对构成终结点的三要素(地址、绑定和契约)进行了系统说明;...在最后一章中采用WCF构建了一个具体的电子商务网站VM,它将指导你如何将理论应用于实践。

    WCF实例教程

    1:创建第一个WCF服务 2: 使用IIS发布WCF服务 3:自运行WCF服务 4:使用Windows服务发布WCF服务 5:创建WCF客户端程序

    wcf入门学习

    一、概述 二、基于Asp.net 的应用程序开发与面向服务...三、第一个WCF程序 四、场景 五、将WCF程序寄宿在B服务器的IIS之上 六、在客户端[A服务器]创建服务的引用 七、使用WCF服务端的方法 八、说明: 九、代码下载:

    C#WCF和HTTP文件传输练习.zip

    在同一个方案中,分别编写服务端程序和客户端程序,利用http和流传输实现文件下载功能。1.服务端选择WCF服务应用程序模板,客户端程序选择WPF应用程序模板。

    WCF开发实战

    WCF开发实战系列一:创建第一个WCF服务 WCF开发实战系列二:使用IIS发布WCF服务 WCF开发实战系列三:自运行WCF服务 WCF开发实战系列四:使用Windows服务发布WCF服务 WCF开发实战系列五:创建WCF客户端程序

    WCF编程(第二版) 英文版 chm格式

    F是在微软Windows下开发面向服务应用程序(SOA)的...本书正是基于这样的目的,它不仅能够帮助你掌握WCF,还能够让你成为一位优秀的软件工程师。 参考链接:http://www.oreilly.com.cn/book.php?bn=978-7-111-27890-0

    无svc文件发布WCF服务到IIS上

    3,在网站上引用你第一步加的类库 4,配置Web.config文件 5,发布网站 6,将其部署到IIS上 7,部署之后,你会发现网站上并没有svc文件,所以你不知道该如何访问。  你可以这样访问:右击网站--管理应用...

    [WCF系列] WCF 经典原版著作 合集

    [奥莱理] WCF 服务编程 第1版 (英文版) [奥莱理] Programming WCF Services 1st Edition ============================================================ [奥莱理] WCF 服务编程 第2版 (英文版) [奥莱理] ...

    C#网络应用编程第三版马骏主编上机练习A4_WCF和HTTP文件传输练习

    在同一个解决方案中,分别编写服务端程序和客户端程序,利用HTTP和流传输实现下载功能,具体要求如下:(1)服务端程序选择【WCF应用程序】模板,客户端程序选择【WPF应用程序】模板(2)客户端运行时,先通过WCF...

Global site tag (gtag.js) - Google Analytics