看《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程序”这个标题表明了本文将深入浅出地指导初学者如何创建并运行他们的第一个Windows Communication Foundation(WCF)服务。WCF是微软.NET框架中的一个核心组件,用于构建...
【标题】"我的第一个WCF程序:HelloInDigo"是一个初学者的实践项目,它展示了如何使用Windows Communication Foundation(WCF)技术创建一个简单的服务。WCF是.NET框架的一部分,用于构建分布式、面向服务的应用程序...
总的来说,"新手第一个WCF服务程序"是一个很好的起点,通过实践这个简单的"Hello World"例子,可以快速理解WCF的基本架构和工作原理,为进一步深入学习和应用WCF奠定基础。在这个过程中,不断实践、调试和学习,是...
创建第一个WCF程序通常包括以下步骤: 3.1 **定义服务契约**:使用`IService`接口定义服务的操作,如`HelloWorld`方法。 3.2 **数据契约**:定义数据传输对象(DTO),如`HelloMessage`类,用于封装服务返回的数据...
**创建第一个WCF程序的步骤** 1. **创建解决方案**:首先,我们需要创建一个新的空解决方案,例如“HelloWCF”。 2. **添加服务器端项目**:在解决方案中添加一个控制台应用程序项目,命名为“Host”,这将作为...
- "WindowsFormsApplication1":如果存在两个Winform项目,这可能是第二个,或者可能是早期版本或者另一个相关项目。 总结知识点: 1. WCF服务:理解WCF的基本概念,包括服务接口、服务实现、绑定、行为和服务宿主...
### WCF教程系列知识点概述 #### 一、WCF简介 - **定义**:Windows Communication Foundation(WCF)是微软...此外,通过实际创建第一个WCF程序,读者可以亲身体验到WCF的使用流程,为进一步深入学习打下坚实的基础。
**Windows Communication Foundation (WCF) 入门教程:我的第一个WCF** Windows Communication Foundation(WCF)是微软.NET Framework中的一个关键组件,用于构建高度可配置、安全、可靠的分布式应用程序。它提供...
【标题】"我的第一个完整的WCF实例"是一个展示如何在Visual Studio 2010环境下创建和运行一个功能完备的Windows Communication Foundation (WCF)服务的教程。这个实例不同于网络上常见的简略示例,它提供了更为详尽...
在“第一个WCF学习实例_VS2010版”中,我们可以预期学习以下关键知识点: 1. **创建WCF服务项目**:首先,你需要在VS2010中创建一个新的WCF服务应用项目。这可以通过选择“文件”>“新建”>“项目”,然后在模板...
在本压缩包中,"WCF第一步 源码 WCF第一步" 提供了初学者入门WCF的源代码示例,便于理解WCF的基本概念和工作原理。** **WCF的核心概念:** 1. **服务契约(Service Contract)**:定义服务提供的操作和服务接口。...
WCF 入门教程一(动手新建第一个WCF程序并部署) http://blog.csdn.net/jiankunking/article/details/44118625
在这个“我的第一个WCF简单示例”中,我们将深入探讨如何创建和运行一个基本的WCF服务。 ### 1. 创建WCF服务 首先,我们需要启动Visual Studio并创建一个新的WCF服务项目。在“新建项目”对话框中,选择“WCF库”...
在“20070924--构建WCF面向服务的应用程序系列课程(1):WCF概要.pdf”这份资料中,你将获得WCF的基础知识,包括其核心概念、创建服务的基本步骤以及如何开始你的第一个WCF项目。通过学习这个系列课程,你将能够熟练...
创建第一个WCF程序通常涉及以下步骤: 1. 在Visual Studio中创建一个新的WCF服务应用程序项目。 2. 删除默认生成的IService1.cs和服务1.svc文件。 3. 创建自定义的服务文件,例如User.svc,并生成对应的接口文件...
在本系列课程的第一部分,我们将深入探讨WCF的基本概念和核心组件。 1. **服务契约和服务接口** WCF中的服务契约定义了服务提供的操作,也就是服务能做什么。这些契约通常通过接口来实现,接口定义了一组方法,...
WCF(Windows Communication Foundation)是由微软推出的一项技术,旨在提供一个统一的框架来构建分布式系统和服务。WCF融合了多种不同的分布式应用编程模型,如ASMX Web Services、WSE Web Services、MSMQ、DCOM等...
#### 三、第一个WCF程序 **3.1 HelloWorld服务契约的定义** HelloWorld服务契约定义了服务暴露给客户端的接口。通常,服务契约会使用`[ServiceContract]`属性标记,并定义一系列使用`OperationContract`属性标记的...
WCF是在微软Windows下开发面向服务应用程序(SOA)的统一平台,而《WCF编程(第2版)》则是介绍该项技术的权威指南和畅销书籍。《WCF编程(第2版)》被誉为WCF的最佳开发指南,提供了深入的技术剖析,而非死板的文档化描述...