WCF服务已在Windows Azure中得以实现和调试

Windows Communication Foundation (WCF)是一种被广泛使用的客户端/服务端通信技术,由微软提供,现在已经十分纯熟了。它打破了原先一个对话框只能和一个进行交互,WCF服务可以和一个WCF客户端进行通信,同时也可以和采用了同样的标准的其他框架的客户端进行通信。这是十分难得的。为了把在Windows Azure中运行的,使用强大的WCF框架的服务暴露出来,Windows Azure也不甘示弱,为平台提供了一个WCF角色。不管在哪个框架和平台上构建复杂的,具有高度可扩展性的系统,只要通过Windows Azure的功能进行逻辑分组,并且针对那些分组来抽象代码来分别执行它们,就能把事情变得更加简单和高效。

本文主要为您讲述在Windows Azure中创建和使用WCF角色的基础知识,以及如何诊断发生在WCF服务内部的错误。除此之外,本文还会为您讲述在把Windows Azure的WCF跟踪信息记录到日志中的过程中,会遇到哪些已知的问题,以及这些问题的基本解决方法。另外,我们会提供相关的源代码。

首先,我们必须创建一个全新的,使用Windows Azure SDK v1.3的Windows Azure项目,然后给它添加一个新的WCF角色。这个角色是由Visual Studio来创建的,它带有很多有用的基础设置和服务。值得注意的是,创建一个WCF服务并不是唯一的方法,你也可以使用Web角色或者Worker角色(甚至是一个VM角色!)。但是,如果我们创建了一个使用WCF角色模板的服务,事情会变得更加容易一些。另外,这一点也应该引起我们的注意:使用WCF角色和使用Web角色没有什么本质区别,如果你使用的是Worker角色,那么情况就有所不同了。区别在于WCF角色和Web角色都是在IIS中托管WCF服务的,而使用Worker角色的时候,你只能在Windows应用程序中自托管。这方面的具体信息,可以参考:http://msdn.microsoft.com/en-us/library/ms730158.aspx。

让我们回到我们手头的任务上来,为我们的项目创建一个“WCF Service Web Role”:

这会创建一个Web应用程序(类似于Web角色),而且还会添加一些基础的代码文件。

这些是一个非常基础的WCF服务的基本组成部分,现在我来详细说明一下它们都是做什么的。如果你已经是一个WCF方面的老手了,可以跳过这个小节!

AzureLocalStorageTraceListener.cs:

这是“XmlWriterTraceListener”的一个派生类,“XmlWriterTraceListener”类的主要功能是收集“System.Diagnostics.Trace”类写入的日志信息,然后通过Xml的形式来输出它们。这是一个具有特定用途的“XmlWriterTraceListener”——它总是把基于XML的Trace信息写入到LocalStorage的一个区域中。Windows Azure允许一个角色对磁盘的可写区域进行写入操作。用这种特定的方式可以写入文件路径,以便于让Windows Azure Diagnostics框架知道从什么地方选择文件。Windows Azure Diagnostics框架必须要把它们移动到一个角色实例的本地实例中,以便于它们可以跨实例来使用。

IService1.cs:

这个文件包含一个接口和一个类。它们都很有意思,因为它们的定义都是用特性(attribute)来修饰的。“IService1.cs”中的接口是用特性[ServiceContract]来修饰的——这意味着在这个应用程序中,这个接口定义了一个服务契约。它可以用于WCF,表示客户端和服务端都同意可以在这个服务上使用某些方法,在内部,这些方法是用OperationContract]来修饰的。IService1.cs中的类是用特性[DataContract]来修饰的,它的成员是用特性[DataMember]来修饰的——这为指定客户端和服务端都同意的,可以在客户端和服务端之间进行传递的消息的细节提供了一种方法。

Service1.svc(和展开它后看到的Service1.svc.cs):

这个类实现了上面那个用“IService1”来声明的接口,这意味着,当你连接到一个WCF服务(这个服务使用由“Service1.svc”实现的IService1)的时候,这些才是真正的要执行的逻辑。请注意,在这个例子中,针对“Service1.svc”的路径总是提供这样的功能,但是在高级的WCF配置中,你可以把.svc替换掉,使用一个可以获得更大灵活性的配置。

Web.config:

这是Web应用程序的配置文件。值得注意的是,默认情况下,“AzureLocalStorageTraceListener”是被禁用的,“system.serviceModel”节点定义了我们可以使用“httpGet”(一个比较基础的Web请求)来获取服务的元数据。后面这种设置很有用,因为在开发过程中,我们可以使用一个浏览器来浏览这个服务。

WebRole.cs:

这是“RoleEntryPoint”的一个派生类,它控制着WCF角色在Windows Azure中的启动方式。“OnStart”方法用于配置Windows Azure诊断信息是如何迁移到blob storage中的——它每分钟都会按照在“AzureLocalStorageTraceListener”中配置的路径做一次这样的工作。注意,本地存储器应该这样来定义:

<LocalStorage name=”WcfRole.svclog” sizeInMB=”1000″ cleanOnRoleRecycle=”false” />

原文名:Implementing and Debugging a WCF Service in Windows Azure 作者:Andy

本文接《在Windows Azure中实现和调试一个WCF服务(中)》和《在Windows Azure中实现和调试一个WCF服务(下)》

【本文乃51CTO精选译文,转载请标明出处!】

时间: 2024-08-05 15:24:11

WCF服务已在Windows Azure中得以实现和调试的相关文章

浅谈WCF服务已在Windows Azure中得以实现和调试

本文接WCF服务已在Windows Azure中得以实现和调试(2) 做一些改动 为了方便大家对该项目的了解,现在我们会对这个基础项目做一些改动,让大家更加方便的知道是如何扩展这个解决方案的,又该如何中断它,以及怎样找出它中断的原因. 第一,为了我们可以看到如何开始扩展这个服务,我会添加一个新的方法在这个服务器上.定位到"IService1"接口,然后添加下面这些代码: [OperationContract]        float Divide(float dividend, fl

Windows Azure中WCF服务的实现和调试

开启诊断 通过以上的程序应用,现在对于我们来讲,大多数和诊断有关的工作都已经完成了.但做好之后一定要记住,我们必须要把"sharedListener"添加到"AzureLocalStorage"中.完成这个任务其实十分简单,只需要在"WCF Web Role"的"Web.Config"文件中交换一下被注释掉的"system.diagnostics"节点就可以了. 另外,还必须把下面这行代码添加到"

Windows Azure 中的加密服务和数据安全

Windows Azure 平台的许多早期采用者仍对平台安全及其加密支持存在大量疑问.在此,我将介绍 Windows Azure 平台内加密和相关安全的一些基本概念.详细阐述本主题可能需要很大的篇幅,因此我只打算说明并重温一下 Windows Azure 中的某些加密服务和提供程序.任何向 Windows Azure 的过渡也会存在一些安全隐患. 对于任何新平台或服务交付方法,您都会面临新的挑战.另外还要提醒您,一些典型问题仍然存在,甚至您过去使用的一些相同的解决方案仍将有效.任何应用程序工程师

如何将WCF服务角色发布到托管服务中

Windows Azure是一个基于Silverlight的软件,它的开发门户现在也已经焕然一新了.它的所有信息,所有的操作都可以在一个页面中完成.使用这个全新的门户,从配置guest操作系统到停止或重启一个服务,几乎在一个页面上,就可以把所有的事情完成.在一些文章中我们学习到如何使用WCF Service Web Role. 同时子在一个托管服务中托管一个WCF服务角色差不多是和托管一个ASP.Net Web Role等同的.下面就介绍下如何将WCF服务角色发布到托管服务中的步骤 1,登录到A

怎样在Windows Azure中部署应用程序

这篇文章,我们主要围绕怎样在Windows Azure中部署应用程序这个来开展,想要在Azure中部署应用程序,说简单不简单,说难也不难,不过有两个文件是必需的:一个包文件,另一个则是配置文件.要创建包文件,可以在CloudService项目上"右击",然后点击"Publish".它会询问你是创建一个包文件还是把它发布到Azure中.如果选择第一个选项,它会创建包文件,并打开这个浏览器.而第二个配置文件则在CloudService1中,叫作ServiceConfig

windows azure中在哪里能看到内存使用情况呢?

问题描述 windows azure中在哪里能看到内存使用情况呢? 如题.在windows azure中 在哪儿能看到内存的使用情况呢? 解决方案 您好, 无论是虚拟机,网站服务还是云服务,您都可以在监视(minitor)的面板中查看这些信息. 对于虚拟机和云服务的项目,正如caozhy的第二种方式,您可以远程到虚拟机,在任务管理器中查看计算机的performance.Regards,Will如果您想进一步了解Windows Azure Windows Azure 官网欢迎您的访问 解决方案二:

windows azure中往VM上传输或下载文件算流量不?

问题描述 windows azure中往VM上传输或下载文件算流量不? windows azure中往VM上传输或下载文件算流量不? 解决方案 上传不收费,下载收费,更确切地说,从数据中心流出数据要收费,流入不收费. 解决方案二: Hi, 据我所知,跨数据中心通讯的服务都是要计流量费的,所以一定要记得把网站的数据库和网站放在同一个数据中心,虚拟机上的服务如果被外部访问,出数据中心的流量也是要计费的,关于数据传输的计费,请看:http://www.windowsazure.cn/pricing/d

如何在Windows Azure中使用Java相关技术

我们刚刚发布了一个新教程和示例代码,以阐述如何在Windows Azure中使用 Java 相关技术.在该指南中,我们提供了分步教程,说明如何将 Java Spring Framework 应用程序(PetClinic 示例应用程序)迁移到 Windows Azure 云.此文档附带的代码同样也发布在 GitHub 中.我们鼓励 Java 开发人员下载并探索此新示例和教程. Windows Azure 是一个开放的云平台,它支持各种编程语言和框架,包括 Microsoft .NET.Java.N

预构建Linux映像在Windows Azure中部署多节点Hadoop群集

本文章由 http://www.aliyun.com/zixun/aggregation/13357.html">Azure CAT 团队的 Piyush Ranjan (MSFT) 撰写. 随着基础结构服务(虚拟机和虚拟网络)近期在 Windows Azure 上正式发布,越来越多的企业工作负荷正在向公共云迁移,以利用云经济效益.规模和速度.我最近参与了其中一种企业工作负荷 - 云中的大数据.在此,我将与您分享一些提示和最佳做法. 该项目要求使用预构建 Linux 映像在 Windows