云开发.docx

上传人:b****3 文档编号:5453112 上传时间:2022-12-16 格式:DOCX 页数:18 大小:479.77KB
下载 相关 举报
云开发.docx_第1页
第1页 / 共18页
云开发.docx_第2页
第2页 / 共18页
云开发.docx_第3页
第3页 / 共18页
云开发.docx_第4页
第4页 / 共18页
云开发.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

云开发.docx

《云开发.docx》由会员分享,可在线阅读,更多相关《云开发.docx(18页珍藏版)》请在冰豆网上搜索。

云开发.docx

云开发

在VS2010中开发部署WindowsAzure应用程序

(AzureTools团队:

JimNakashima,HaniAtassiandDannyThorpe)

将应用程序或服务部署到Microsoft云服务平台WindowsAzure的原因有很多。

例如,只为使用的内容付费从而可降低操作和硬件成本、构建几乎能无限缩放的应用程序、巨大的存储容量、地理位置等等,不胜枚举。

只有当开发人员实际使用平台时,平台才会引起业界的广泛关注。

开发人员是任何平台版本的核心和灵魂–一版平台真正的成功就是有大量开发人员在该平台上部署应用程序和服务。

Microsoft始终致力于通过VisualStudio为各种各样的平台(无论是旧有的还是新兴的)提供最佳的开发体验,而对于云计算,也会一如既往。

Microsoft在VisualStudio2010和VisualWebDeveloper2010Express中新增了直接生成WindowsAzure应用程序的支持。

本文将引导您在整个WindowsAzure应用程序开发生命周期中使用VisualStudio2010。

请注意,即使您目前不是VisualStudio用户,也能够通过VisualWebDeveloper2010Express中的WindowsAzure支持免费评估WindowsAzure开发情况。

创建云服务

启动VisualStudio2010,单击“文件”菜单,选择“新建”|“项目”,打开“新建项目”对话框。

在“已安装的模板”|“VisualC#”(或“VisualBasic”)下,选择“云”节点。

这将显示“启用WindowsAzureTools”项目模板,单击该模板后,将显示一个页面,其中包含用于安装WindowsAzureToolsforVisualStudio的按钮。

安装WindowsAzureTools之前,确保在您的计算机上安装IIS。

云的本地开发模拟使用IIS。

安装IIS的最简单方式是使用上提供的Web平台安装程序。

选择“平台”选项卡,并单击以在Web服务器中包括推荐的产品。

下载并安装WindowsAzureTools,并重新启动VisualStudio。

您将看到,“启用WindowsAzureTools”项目模板会替换为“WindowsAzure云服务”项目模板。

选择此模板,打开图1中显示的“新建云服务项目”对话框。

利用此对话框可以向云服务中添加角色。

图1向新建云服务项目中添加角色

WindowsAzure角色是指在云中运行的可单独缩放的组件,云中的每个角色实例都分别对应于一个虚拟机(VM)实例。

有两种类型的角色:

Web角色是运行于IIS上的Web应用程序。

该角色可通过HTTP或HTTPS终结点访问。

工作线程角色是一个可运行任意.NET代码的后台处理应用程序。

它也能够公开面向Internet的终结点和内部终结点。

举一个实例,我的云服务中可能有一个Web角色,该角色实现我的用户可通过URL(例如http:

//[somename])访问的网站。

我还可能有一个工作线程角色,它处理该Web角色使用的一组数据。

我可以单独设置每个角色的实例数,例如三个Web角色实例和两个工作线程角色实例,相应地,在运行Web角色的云中有三个VM,以及在运行工作线程角色的云中有两个VM。

可以使用“新建云服务项目”对话框来创建具有任意数量Web角色和工作线程角色的云服务,并为每个角色使用不同的模板。

可以选择创建各个角色时要使用的模板。

例如,可以使用“ASP.NETWeb角色”模板、“WCF服务角色”模板或“ASP.NETMVC角色”模板来创建Web角色。

将角色添加到云服务并单击“确定”后,VisualStudio将创建一个解决方案,该解决方案中包括云服务项目以及与所添加的每个角色相对应的项目。

图2显示了一个示例云服务,其中包含两个Web角色和一个工作线程角色。

图2为云服务中的角色创建的项目

Web角色就是ASP.NETWeb应用程序项目,两者只有几点不同。

WebRole1包含对以下程序集的引用,这些程序集不能由标准的ASP.NETWeb应用程序引用:

Microsoft.WindowsAzure.Diagnostics(诊断和日志记录API)

Microsoft.WindowsAzure.ServiceRuntime(环境和运行时API)

Microsoft.WindowsAzure.StorageClient(用于为Blob、表和队列访问WindowsAzure存储服务的.NETAPI)

WebRole.cs文件包含用于设置日志记录和诊断的代码,而且在web.config/app.config中包含一个跟踪侦听器,这样就能支持您使用标准的.NET日志记录API。

云服务项目充当部署项目,列出云服务中包含的角色,以及定义和配置文件。

它会提供WindowsAzure特有的运行、调试和发布功能。

项目创建完成之后,可以轻松地在云服务中添加或删除角色。

若要向此云服务中添加其他角色,请右键单击云服务中的“角色”节点,并选择“添加”|“新建Web角色项目”或“添加”|“新建工作线程角色项目”。

选择其中任一选项将打开“添加新角色”对话框,您可在其中选择添加角色时使用哪个项目模板。

通过右键单击“角色”节点,在解决方案中选择“添加”|“Web角色项目”,并选择要作为Web角色关联的项目,您可以向解决方案中添加任何ASP.NETWeb角色项目。

若要删除,只需选择要删除的角色并按Delete键即可。

随后便会删除项目。

您也可以右键单击“角色”节点下的角色,并选择“属性”打开该角色的“配置”选项卡(请参见图3)。

利用“配置”选项卡可以轻松地在ServiceConfiguration.cscfg和ServiceDefinition.csdef文件中添加或修改值。

图3配置角色

在针对WindowsAzure开发时,解决方案中的云服务项目必须是启动项目才能成功完成调试。

当某个项目在解决方案资源管理器中显示为粗体时,该项目即为启动项目。

若要设置活动项目,请右键单击相应项目,并选择“设为启动项目”。

云中的数据

既然针对WindowsAzure设置了解决方案,您就可以利用ASP.NET技能来开发应用程序。

在进行编码时,您将需要使用能让应用程序实现可缩放的WindowsAzure模型。

若要处理进入应用程序的额外流量,可以增加每个角色的实例数。

这意味着请求将在角色之间实现负载平衡,并且将影响您设计和实现应用程序的方式。

特别是,它控制您访问和存储数据的方式。

许多熟悉的数据存储和检索方法都不可缩放,因此不适合于云。

例如,不应在云中使用将数据存储在本地文件系统上的方法,因为这种方法不能缩放。

若要利用云的缩放特性,您需要了解新的存储服务。

WindowsAzureStorage提供了可缩放的Blob、队列和表存储服务,MicrosoftSQLAzure提供了基于云的关系数据库服务(基于SQLServer技术构建)。

Blob用于命名文件以及元数据的存储。

队列服务提供了可靠的存储和消息传送。

表服务为您提供了结构化存储,该存储中的表是一组实体,其中每个实体均包含一组属性。

为了帮助开发人员使用这些服务,WindowsAzureSDK附带了一个DevelopmentStorage服务,该服务模拟这些存储服务在云中的运行方式。

也就是说,开发人员可使用与针对云存储服务相同的API来编写其针对DevelopmentStorage服务的应用程序。

调试

为了以本地方式在WindowsAzure上演示运行和调试,让我们使用MSDN代码库页包含许多代码示例,可帮助您开始生成运行于WindowsAzure上的可缩放Web应用程序和服务。

下载用于VisualStudio2010的示例,然后将所有文件提取到一个可访问位置,例如您的Documents文件夹。

DevelopmentFabric需要在提权模式下运行,因此请以管理员身份启动VisualStudio2010。

然后,导航到您提取了示例的位置,并打开Thumbnails解决方案,该解决方案是一个示例服务,演示Web角色和工作线程角色的使用,并演示使用StorageClient库与队列和Blob服务交互。

打开该解决方案时,您将看到三个不同的项目。

Thumbnails是关联两个角色(Thumbnails_WebRole和Thumbnails_WorkerRole)的云服务。

Thumbnails_WebRole是Web角色项目,该项目向用户提供用于上载照片和向队列中添加工作项的前端应用程序。

Thumbnails_WorkerRole是工作线程角色项目,该项目从队列中提取工作项,并在指定的目录中创建缩略图。

在Default.aspx.cs文件中,向submitButton_Click方法中添加一个断点。

此断点将在用户选择图像并单击页面上的“提交”时命中。

现在向工作线程文件WorkerRole.cs的Run方法中添加断点,放在紧靠用于从队列中检索消息并检查消息是否实际存在的代码后面的位置。

此断点将在Web角色将消息置于由工作线程检索的队列中时命中。

若要调试应用程序,请转到“调试”菜单并选择“启动调试”。

VisualStudio将生成项目,启动DevelopmentFabric,初始化DevelopmentStorage(如果第一次运行),封装部署,附加到所有角色实例,然后启动指向Web角色的浏览器(请参见图4)。

图4运行Thumbnails示例

此时,您将看到浏览器指向Web角色,并且任务栏的通知区域显示DevelopmentFabric已启动。

DevelopmentFabric是一个模拟环境,它采用与在真实云中的运行方式非常类似的方式在您的计算机上运行角色实例。

右键单击任务栏中的WindowsAzure通知图标,并单击“显示DevelopmentFabricUI”。

这将启动DevelopmentFabric应用程序本身,利用它可针对部署执行各种操作,例如查看日志,以及重新启动和删除部署(请参见图5)。

请注意,DevelopmentFabric包含一个新的部署,它承载一个Web角色实例和一个工作线程角色实例。

图5DevelopmentFabric

请看VisualStudio所附加到的进程(“调试”/“Windows”/“进程”);您将注意到有三个进程:

WaWebHost.exe、WaWorkerHost.exe和iexplore.exe。

WaWebHost(WindowsAzureWeb实例宿主)和WaWorkerHost(WindowsAzureWorker实例宿主)分别承载Web角色和工作线程角色实例。

在云中,每个实例均承载于其自己的VM中,而在本地开发模拟上,每个角色实例均承载于单独的进程中,并且VisualStudio会附加到所有这些实例。

默认情况下,VisualStudio使用托管调试器进行附加。

如果要使用另一个调试器(比如本机调试器),请从对应角色项目的“属性”中选择该调试器。

对于Web角色项目,调试器选项位于项目属性的“Web”选项卡下。

对于工作线程角色项目,该选项位于项目属性的“调试”选项卡下。

默认情况下,VisualStudio使用脚本引擎附加到InternetExplorer。

若要调试Silverlight应用程序,您需要从Web角色项目的“属性”中启用Silverlight调试器。

浏览到希望上载的图像,并单击“提交”。

VisualStudio将在submitButton_Click方法内所设置的断点处停止,同时为您提供期望从VisualStudio中使用的所有调试功能。

按F5继续;submitButton_Click方法将为文件生成唯一名称,将图像流上载到Blob存储,并在队列上添加包含文件名的消息。

现在,您将看到VisualStudio在工作线程角色中设置的断点处暂停,这意味着工作线程从队列中收到了消息,并准备处理图像。

同样,您将拥有期望的所有调试功能。

按F5继续,工作线程将从消息队列中获取文件名,从Blob服务中检索图像流,创建缩略图图像,并将新的缩略图图像上载到Blob服务的缩略图目录,Web角色将显示该目录。

部署

既然已通过本地方式创建、编辑和调试了应用程序,您即已准备好将其部署到云。

将应用程序部署到WindowsAzure时,可遵循下面这个很好的过程:

使用本地存储让应用程序以本地方式在WindowsAzureDevelopmentFabric中运行。

使用WindowsAzureStorage帐户以本地方式在DevelopmentFabric中运行应用程序。

使用WindowsAzureStorage帐户在WindowsAzure上运行应用程序。

在第一个阶段中,您可以使用DevelopmentFabric和DevelopmentStorage作为WindowsAzure云基础结构的替代项在本地计算机上进行所有开发。

您甚至无需网络连接–您可以采用完全脱机的方式开发和调试WindowsAzure应用程序或服务。

您将可能在此第一阶段中进行70%的项目开发。

在第二个阶段中,您将本地存储替代项替换为真正的WindowsAzureStorage,但保留在本地DevelopmentFabric中执行WindowsAzure应用程序代码的调试和诊断优点。

您可以在源代码中设置断点,逐行单步执行源代码,计算表达式,并在WindowsAzure应用程序与云存储交互时检查调用堆栈。

您将可能在此阶段中花费20%到25%的项目周期,同时细化代码并依据真实的异步操作进行测试。

到您进入第三个阶段时,您的WindowsAzure应用程序应差不多已完成。

功能和代码应已完成,但未修复缺陷。

您在此阶段中的主要侧重点是测试和性能优化。

当WindowsAzure应用程序在云中执行时,您将没有足够的时间来进行源代码调试,因此将必须依靠诊断日志记录。

当您将全新的WindowsAzure应用程序上载到WindowsAzure云时,您可能不希望目标URL上的所有人都看到该应用程序。

WindowsAzure托管服务具有在同一托管服务内包含多个部署的概念。

每个WindowsAzure托管服务都有一个专用暂存部署区域,您可以在该区域中不受干扰地在云中测试代码,并且有一个公共生产部署区域,您可在该区域中发布测试过的代码供客户使用。

只能通过前缀为系统所分配GUID的唯一URL来访问暂存部署。

生产部署可以是自定义域名映射的目标,以便于访问。

转移到WindowsAzureStorage

既然Thumbnails服务正在本地计算机上的DeveloperFabric中运行,那么让我们将其升级到依据云中的WindowsAzureStorage帐户工作。

这涉及到获取存储帐户,并更改配置以依据您的存储帐户运行Thumbnails服务。

通过以本地方式执行但为数据使用云存储,可以很好地确保您的代码在承载于WindowsAzure之上时能够运行。

首先,导航到WindowsAzure开发人员门户(),并使用您的LiveID登录。

从该页上选择“新建服务”,并单击“存储帐户”。

在“创建服务”页中(请参见图6),填写存储帐户的友好名称(此名称不是服务/域名;将在下一页上提示您输入服务/域名)。

(可选)输入项目描述。

然后在下一页上填写服务/域名(请参见图7)。

此域名是全局的,因此您可能需要对其稍加改动,以得到尚未被其他服务使用的名称。

确保单击“检查可用性”以测试唯一性。

图6配置存储服务

图7配置存储域

通过创建相关性组来确保您的存储和使用该存储的托管服务尽可能位于同一数据中心中,这是个好主意。

相关性组也可以指定地理区域首选项,以便服务和存储尽可能靠近您的目标访问群体,从而最大程度地缩短网络传输时间。

单击“创建”,您将看到新存储帐户的摘要页。

现在,您需要指示Thumbnails服务使用新存储帐户来存储其缩略图和图像。

在VisualStudio解决方案资源管理器中的“角色”下双击“Thumbnails_WebRole”节点,以打开其属性页。

选择“设置”选项卡,选择“DataConnectionString”,并单击位于网格行最右边的编辑按钮。

这将打开“存储连接字符串”对话框,如图8中所示。

图8存储连接字符串属性

“使用开发存储”是新Azure项目的默认值。

单击“输入存储凭据”,然后输入您的存储服务详细信息。

在“帐户名”字段中,键入您在创建存储服务时输入的服务/域名。

这是您的域的第一部分,示例中为thumbnails1138(全部小写)。

在“帐户密钥”字段中,输入显示在存储服务摘要网页上的主访问密钥。

可以在浏览器中选择并复制密钥文本,并将其粘贴到AccountSharedKey编辑框中。

请注意,次要访问密钥为存储帐户提供了与主访问密钥相同的访问权限,并生成作为主访问密钥万一泄漏时的备份。

重新生成密钥将会使旧密钥失效,同时关闭仍然使用旧密钥的任何人的存储访问权限。

将连接终结点集保留为使用默认HTTPS终结点,并单击“确定”。

为“角色”下的“Thumbnails_WorkerRole”也重复这些步骤,以便Web角色和工作线程角色将与同一存储服务通信。

如果有多个角色要更新,您可以将连接字符串值复制到剪贴板,然后只需将其粘贴到每个其他角色属性页的DataConnectionString值单元格中,从而可节省一点时间。

将Web角色和工作线程角色切换为使用WindowsAzure存储之后,在VisualStudio中按F5调试云服务,并确保所有功能均正常工作。

您将看到所调试的网页URL仍然以本地方式承载,但缩略图的URL(可在其“属性”对话框中看到)现在指向WindowsAzureStorage。

请注意,此开发阶段(带有云存储的本地服务)将最有可能在三个部署阶段中性能最差。

阶段1(本地/本地)将非常迅捷,因为一切都是在同一框架中进行的,并且全部访问群体只有一个(即您自己!

)。

阶段3(云/云)将具有云规模硬件和数据中心相关性的优点。

但是,阶段2(本地/云)将执行的代码会合理假设其存储在附近,但事实上数据可能距本地执行环境很多个网络跃点。

不要在本地/云配置中评估应用程序的性能。

然而,您可以将该网络迟滞转变为您的优势:

使用此阶段作为压力测试来查看您的代码如何处理来自其存储服务的过长响应时间。

如果您使用实际上应为异步的同步调用处理了某些内容,您将可能注意到它非常快。

在本地/云配置中将一切准备就绪后,您即可将代码部署到WindowsAzure托管服务。

创建托管服务

若要创建完全托管的服务,请返回到WindowsAzure开发人员门户并用您的LiveID登录。

单击“新建服务”,然后单击“托管服务”。

这将打开一个页面,您可以在其中指定开发人员门户使用的项目友好名称和描述。

输入服务标签,并选择输入服务描述。

单击“下一步”。

现在,您可以输入托管服务项目的域名(请参见图9)。

设置相关性组以与之前使用存储服务创建的Thumbnails相关性组匹配。

创建了项目之后,您将看到项目的摘要页。

图9配置托管服务

若要从VisualStudio中部署项目,请在解决方案资源管理器中右键单击Thumbnails项目节点,并选择“发布”。

此命令将生成WindowsAzure应用程序二进制文件及相关文件的程序包,打开Windows资源管理器以显示在其中生成该程序包的本地目录,并启动默认Web浏览器以浏览到开发人员门户。

从开发人员门户网页中,导航到Thumbnails托管服务的摘要页,从“暂存”下单击“部署”以打开“暂存部署”页(请参见图10)。

将在此页中指定要上载的程序包和配置文件。

图10选择要部署的程序包

您可以将路径从VisualStudio打开的Windows资源管理器窗口复制到“打开”对话框,从而可轻松地选择服务程序包(.cspkg)和服务配置文件。

门户随后会上载程序包并将您的云服务部署到暂存,从而将您的角色置于“已分配”状态。

这意味着您的WindowsAzure应用程序已配置了数据中心硬件,但尚未安排运行。

若要在暂存区域中测试云服务,您需要运行它。

单击“运行”。

这会将您的Web角色置于“正在初始化”状态。

当该Web角色准备就绪后,状态将变为“已启动”。

请注意,已计划在未来的更新中使从VisualStudio直接部署到云更为轻松,但即使当这些功能准备就绪时,此过程将仍然保持有效。

启动了您的角色后,即可通过导航到暂存URL(以GUID开头的URL)来进行测试。

在数据中心中设置应用程序的过程涉及到在后台进行的许多大幅提升。

请至少为应用程序留出10分钟来从“正在初始化”过渡到“已启动”。

现在,您是否很高兴在本地计算机上有DeveloperFabric?

对暂存上的云服务感到满意后,您可以通过单击图11中所示的按钮将该云服务提升到生产。

图11提升按钮

当您的部署的详细信息显示在页面的“生产”一侧时,服务将在其最终URL处启动并运行。

如果需要测试应用程序的修补程序,或只是需要采用与正在运行的生产部署并行的方式继续进行开发,则可以将新的程序包上载到暂存,并通过暂存URL对其进行测试。

提升到生产的过程实际上是交换:

暂存转移到生产,而生产中的内容则进入到暂存中。

尽管您能够直接上载到生产,但强烈建议始终首先部署到暂存并执行某种程度的验收测试,然后再将其推送到生产。

请注意,多个部署将默认使用同一存储服务–如果在生产和暂存之间需要数据隔离(举例来说,需要数据隔离以便暂存能够擦除其数据库而不影响生产数据),您将需要修改每个部署的存储绑定,然后再部署它们。

这通常是在将暂存提升到生产之前通过使用两组存储并将生产数据迁移到暂存来实现的。

更新服务配置

如果要启动预期会产生额外负载的服务的额外实例,或关闭未使用的实例,您可以通过实时修改部署配置来实现。

您不必重新部署整个程序包,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1