在Windows Azure中实现和调试一个WCF服务(上)
原创2011-03-15 15:43:39为了把在Windows Azure中运行的,使用强大的WCF框架的服务暴露出来,Windows Azure提供了一个WCF角色。无论在哪个框架和平台上构建复杂的,具有高度可扩展性的系统,通过它们的功能进行逻辑分组,针对那些分组来抽象代码,并且分别执行它们,都是一种简单而高效的扩展性策略。
为了把在Windows Azure中运行的,使用强大的WCF框架的服务暴露出来,Windows Azure提供了一个WCF角色。无论在哪个框架和平台上构建复杂的,具有高度可扩展性的系统,通过它们的功能进行逻辑分组,针对那些分组来抽象代码,并且分别执行它们,都是一种简单而高效的扩展性策略。你应该把用来“绘制图形”的可执行代码分成一组,然后找出图形绘制服务的瓶颈,通过增加负责这个任务的Windows Azure实例的数量,你可以集中更多的计算能力来完成这个任务。
Windows Communication Foundation (WCF)是一种被广泛使用的客户端/服务端通信技术,它是由微软提供的,而且已经很成熟了。一个WCF服务可以和一个WCF客户端进行通信,也可以和采用了同样的标准的其他框架的客户端进行通信。本文主要为您讲述在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应用程序中自托管。这方面的具体信息,可以参考:。
让我们回到我们手头的任务上来,为我们的项目创建一个“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”中配置的路径做一次这样的工作。注意,本地存储器应该这样来定义:
原文名:Implementing and Debugging a WCF Service in Windows Azure作者:Andy
本文接《 在Windows Azure中实现和调试一个WCF服务(中) 》和《在Windows Azure中实现和调试一个WCF服务(下)》
【编辑推荐】
如何在xp系统中配置iis?
一、首先需要判断自己的操作系统是否安装IIS。 二、右击“我的电脑”后单击“管理”。 三、单击“服务和应用程序”。 四、检查是否安装“Internet信息服务”。 五、插入Windows xp光盘,单击“安装可选的windows组件”。 (选中“Internet信息服务(IIS)”后单击“下一步”完成安装)六、调试好IIS运行环境。
打开网站出现Service Unavailable是什么意思?怎么解决?
1. 先简单说一下:网站访问出现 Service Unavailable大多出现在windows IIS服务器中,很多时候是由于网站空间服务器的配置,或者资源限制导致的不足以承受运行的情况,有些是买的时候,不知道有所限制 而不能满足程序的运营需求,最好是联系服务商查阅相关日志,对症下药,如果撑不住最好更换服务器。 2. 出现这种情况是由于您的网站超过了系统资源限制(CPU或者IIS)造成的,这个现象在WINDOWS2003+IIS6的环境下都会出现,主要是程序占用资源太多。 不同的程序占用的资源都不一样,这个跟程序设计的合理性和优化程度有关;3. 另外,一些死循环程序,或者不优化的程序都会占用太多的系统资源,而系统资源明显是有限的。 如果一个网站的程序占资源太多或者发生太多的错误,系统日志就会提示:“应用程序池 User_pooll 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误, 或者提示:应用程序池 User_pooll 超过了其作业限制设置。 更多信息,请参阅微软官方的帮助和支持中心。 4. 一般的小问题访问网站提示:Service Unavailable,一般系统会在30秒左右恢复正常,多刷新几次就能正常访问了。 但是这个时间恢复后因为访问量太大在极短的时间网站又不能上了。 另外,如果网站当前访问人数过多,超过了系统的iis连接数(或CPU峰值)限制,也会出现Service Unavailable的提示(win2k主机下出现连接过多就会提示:连接过多,请稍后再试;而win2003的主机刚直接提示:Service Unavailable)如果经常出现类似的错误,请及时优化网站程序,或者升级你的主机至更高的款型,以获得更多的系统资源。 5. 网站超CPU的四种可能原因:一.网站攻击二.程序设计不合理,资源占用高,或本身在做占资源的操作,如采集三.访问量过大四.有搜索蜘蛛收录6. 程序占用资源太多的原因: 有一个或多个ACCESS数据库在多次读写过程中损坏,微软的MDAC系统在写入这个损坏的ACCESS文件时,ASP线程处于BLOCK状态,结果其他线程只能等待,IIS被死锁了,全部的CPU时间都消耗在DLLHOST(ASP进程)中。 参考解决办法: 压缩和修复我的数据库 下载数据库文件--[如果是的扩展名,请改为的扩展名]--用ACCESS打开--选择工具--数据库实用工具--压缩和修复数据库--[改回的扩展名]--上传覆盖原来数据库文件。 7. 注册了不良的Com组件,特别是用VB开发的ACTIVE X控件,可能导致占用内存使用量不断增长 参考解决办法:尽量减少或避免非官方或是客户要求的不必要的组件8. 多媒体等文件下载占用服务器带宽 参考解决办法:停止下载9. 程序问题,需要及时的关闭不再使用的数据库,以避免一直占用服务器资源 在 连接数据库字符串语句中加入如下 sub endConnection() set conn=nothing end sub 其它程序问题:把IE选项里 显示友好HTTP错误信息 的勾取消掉,再访问网站看出现什么错误信息,然后再调试。 10. 上传重要的数据库等文件更新,由于正处于受访问状态,可能导致瞬间占用率上升 一般此情况较少,若有出现此情况时,可能有必要先暂停站点,再作更新ACCESS论坛(如动W)大了以后就很容易出现数据库方面的问题,当你的论坛数据库在30M以上,帖子5万左右,可能就会出现数据库吃不消的情况,建议取消程序中使用的on error resume next这个容错语句,对错误进行调试。 临时解决办法:定期删除多余的数据、压缩数据库,限制论坛灌水,甚至限制论坛注册。 如果是ASP论坛,可以使用分表储存功能,会有较好的效果 比较长远办法:更换论坛和数据库,一般都采用商业版本+MSSQL 的方案来解决。
怎么在windows 2008远程服务器上搭建网站
1.通过微软提供的IIS 目前很大一部分的WWW服务器都架设在微软公司的IIS之上。 它使用的环境为WinNT/2000/XP+Internet Information Service(IIS),相信很多用户现在使用的都是Win2000或WinXP系统,在Win2000 Professional和WinXP系统中,默认的情况下,它们在系统初始安装时都不会安装IIS(目前版本为IIS5.0),因此得将这些组件添加到系统中去。 第一步:IIS的安装 A.在控制面板中选择“添加/删除程序”,在出现的对话框中选择“添加/删除Windows组件”(如图1)。 B.在出现的复选框中选择安装Internet信息服务(IIS)(如图2),这一组件约需19MB的空间。 C.点击“下一步”,并将Win2000安装光盘放入光驱,安装程序即可将程序文件复制到硬盘中,点击“结束”即可完成。 第二步:IIS中Web服务器的基本配置 IIS中Web服务器的基本配置主要包括如下几部分: A.打开IIS服务器的配置窗口,选择“开始”→“程序”→“管理工具”→“Internet服务管理器”,或者“选择”→“控制面板”→“管理工具”→“Internet服务管理器”也可,打开的窗口如图3。 B.在打开的窗口中鼠标右击“默认Web站点”,选择“属性”菜单。 C.在出现的“默认Web站点属性”窗口中,选择“主目录”标签,用以设置Web内容在硬盘中的位置,默认目录为“C:InetpubWwwroot”,你可根据需要自己设置(如图4)。 D.在属性窗口处选择“文档”标签,设置自己默认的首页网页名称,例如“”,将其添加并移动到列表的最顶端(如图5)。 E.确认默认的Web站点是否已经启动,如果没有可以鼠标右键点击“默认Web站点”,选择“启动”,在打开的IE地址栏中键入本机的[wiki]IP[/wiki]地址,即可看到自己指定的主页已经开始在Internet上发布了。 这里只是介绍IIS最基本的设置选项,大家还可以按照需要去具体设置上面提到的“默认Web站点属性”,通过它来配置IIS的安全和其他一些参数。 IIS虽然好用,但默认安装的情况下,它也有很多的安全漏洞,包括著名的Unicode漏洞和CGI漏洞,因此在IIS安装完成之后,建议继续在微软公司主页上下载安装它们提供的安全漏洞补丁SP1和SP2。 此外,建议将磁盘的文件系统转换成NTFS格式,安装系统的分区可在系统安装候转换,也可在安装完系统以后用PQMagic等工具进行转换。 2、利用微软的PWS PWS的全称是“Personal Web Server”,字面意思就是个人网页服务器,由微软公司提供,它主要适合于创建小型个人站点,它的配置和使用比较简单,但功能却很强大。 跟IIS的区别是,PWS可以安装在Win9X/Me/NT/2000/XP系统中,因此对Win9X/Me系统来说尤其可贵。 第一步:PWS的安装 对Win9X/Me系统来说,在光驱里放入Win98安装光盘,进入光盘的Add-onsPws目录,双击命令即可开始安装PWS,安装界面如图6所示。 我们如果需要一些例如ASP等高级功能,还可选择自定义的安装模式,否则直接选择典型安装。 组件安装完成之后,会出现如图7所示的选项来设置WWW服务目录,我们可以视实际情况来设定,建议以缺省目录来安装。 最后选择“完成”并根据提示重新启动计算机后,就可在右下角任务栏看见PWS的图标(如图8)。 这时打开一个IE窗口,在地址栏中输入“”、“”或者“ http:// 你的IP地址”,就可看到PWS的默认页面,表明PWS已经成功运行了。 对于Win2000/XP来说,PWS是作为IIS的一个组件安装的。 如果你是Win9X/Me系统,没有安装PWS的光盘也不要紧,可以去下载PWS的安装软件,安装步骤跟上面差不多。 第二步:PWS的配置 双击屏幕右下角的PWS图标,或在菜单中选择相应的程序组来启动“个人Web管理器”(如图9)。 由管理器界面(图9是Win2000中IIS的PWS,因此只有3个选项)可以看出它包括5个部分,可分别管理不同的功能,利用PWS架设自己的WWW服务器一般主要有如下几个步骤。 A.启动PWS。 在PWS的主屏选项处,它又细分为“发布”和“监视”两部分。 首先必须通过点击“启动”按钮来打开PWS的服务。 在这里,你还可以通过“监视”中的内容查看Web站点的一些访问统计信息。 B.设定虚拟目录。 假定你的网页存放在“E:WwHomepagesHomepage”下,首页文件名为“”。 先在图10中选定虚拟目录,单击“添加”按钮,在出现的“添加目录”对话框中(如图11),指定网页所在的驱动器号和目录,这里是“E:WwHomepagesHomepage”,并且为自己的这个虚拟目录设置一个别名,别名可以随便设置,是朋友访问你网站时的目录名称。 安全建议:设置目录的访问权限为“读取”和“脚本”,为安全起见,不要选取“执行”权限。 默认情况下,PWS服务器的根目录是“C:InetpubWwwroot”。 我们如果不想具体来设置虚拟目录,也可将你存放的网页的所有文件拷贝到该目录中,例如:将“E:WwHomepagesHomepage”中所有的文件拷贝到“C:InetpubWwwroot”中即可。 C.设置默认文档。 接下来,为你的虚拟目录设置一个能在默认情况下自动识别的网页文档。 该文档的作用是,当进入本站点时,如没有指定要访问的文档,则服务器自动提供一个默认文档让其访问。 在图10中,选中“启用默认文档”复选框,并在“默认文档”框中,输入自己的首页文档名“”。 安全建议:和上面一样,出于安全的原因,不要选中“允许浏览目录”复选框,以免别人看到整个目录里的所有文件。 D.创建访问记录。 如果我们要监控访问我们页面的游客,还可以在高级中(图11)选择“保存Web站点活动日志”,系统就会自动帮我们记录访问该Web站点的数据,这些数据将记录访问者的IP地址、访问时间和访问内容。 服务器将在“C:WindowsSystemLogfiles”中的文件夹中建立一个名为“”的文件(yy为年份,mm为月份)。 该文件可用文本编辑器查看,也可在DOS窗口中用“Type”命令查看。 经过这样简单的设置,打开IE并输入你自己的IP地址即可看到你发布的主页,无论是否上网都可调试自己的站点。 当然也可以使用一个特殊的IP来检验安装的正确性和回送地址,即或者。 此外,PWS还有其他几个选项用来增强它的功能,主要包括如下两个标签。 A.发布。 这部分主要是提供定制个人主页的发布及编辑文件发布列表的功能, 可以将文件发布出去以供别人浏览和下载。 这个过程实际上也是结合了PWS的ASP功能。 此外,这里还可以在定制个人发布主页时创建来宾簿和留言簿,例如,你想将“”发布出去,首先选择“发布”,点击下一步按钮,进入“发布向导”,在“发布向导”中填入相应的项目即可(如图12)。 单击“添加”按钮,并点击“下一步”,PWS即提示你“已添加下列文件”。 继续点击“下一步”,默认是选中“将文件加入到发布的列表”,单击“下一步”,即可将要发布的“”文件发布出去了。 打开IE窗口并访问自己的Web站点,就可看到网页上多了个发布文档的链接,其中就含有刚才配置好的发布出去的文件。 站点。 点击“Web站点”即可出现“主页向导”界面,PWS提供了主页、来宾薄和留言本3种页面的模板。 按向导的提示选择好选项,就可出现动态ASP设置页面,可在这里编辑主页、查看来宾簿、打开留言簿,以得到一些反馈信息。
发表评论