实战第一个云程序

一. 摘要

  首先圣殿骑士很高兴云计算系列能获得你们的关注和支持,这个系列准备了几个月,终于在今天发布第一篇了(因为文章太长,拆成了两篇,这是其中一篇)。在这几个月中经过不断的使用和实践,对云计算总算有了一个较粗浅的认识,因此也但愿可以和你们一块儿分享。在发布这篇文章以前也考虑了好久,由于一开始就讲概念的话,势必会得不到很好的效果,毕竟你们都不太熟悉这个新事物。与其“人云亦云”还不如先来一个简单的实例,因此我就先选择一个实践应用来看到底云计算能给咱们带来什么好处,从开发者角度,随着这个概念的引入,究竟它须要作哪些改变才是咱们最关心的问题。html

  本篇文章在安排上大体以下:首先回顾前面的基础知识,这样你们就能够有一个大概的认识;接着介绍开发工具,正所谓“工欲善其事,必先利其器”;再接着就是开发第一个简单程序,经过这个简单程序来看一下其开发过程;开发完毕以后就须要部署,在讲部署以前咱们必需要有帐户来完成此操做,因此紧接着就依次讲解帐户申请和部署流程;你们一直在用程序+数据库模式来开发咱们的应用,因此接下来咱们就讲SQL AZURE和经典的程序+数据库模式,这样你们就能够避免生疏感,从而使理解也变得更加容易一些。经过这篇文章,咱们对云计算有了一个较清晰的认识,了解了它到底是什么、究竟能作什么以及如何作。若是你们清楚了这些问题,也就达到了本篇预期的效果,同时也为系列后面的文章打下了基石,因此但愿对你们能有所帮助。sql

二. 本文提纲

· 1.摘要数据库

· 2.本文提纲windows

· 3.云计算基础回顾设计模式

· 4.开发工具浏览器

· 5.第一个简单程序缓存

· 6.帐户申请安全

· 7.部署服务器

· 8.SQL AZURE网络

· 9.经典的程序+数据库模式

· 10.本文总结

· 11.系列进度

三. 云计算基础回顾

在前面几篇文章中,咱们讲了不少概念,那么这里就简单回顾一下(更多细节看前面几篇文章):

一,行业发展趋势

纵观软件行业的发展过程与趋势能够看出一共经历了如下几个阶段:

◆ 面向机器语言(Monolithic)的开发模式:根据不一样平台的机器语言来定制化开发代码,因此开发出来的代码通用性和可重用性比较差,但这也是当时和硬件和软件环境决定的。

◆ 面向过程(Procedure)的开发模式:独立于机器的程序语言(如C、Pascal等)使得开发过程逐渐变得简单了,用过程来描述咱们的需求、用函数来封装咱们的代码。面向过程的开发模式是对可重用代码的封装,这样相对于前面的面向机器语言开发模式又进了一步;

◆面向对象(Object)的开发模式:用更接近现实的对象来描述和绘制一个相对完整的事物。面向对象的语言(C++、C#、Java等),提供了更抽象的封装和重用模式。面向对象的开发强调从现实世界问题直接映射成咱们的程序,因此就更接近人类的天然思惟方式。面向对象的开发模式是对可重用对象的封装,因此比前面的面向过程开发模式又进了一步;

◆ 面向组件(Component)的开发模式:面向对象在不少方面都改善了开发模式,可是随着软件开发规模的逐渐扩大,在涉及分布式、异步架构等复杂环境中,代码级别的重用性差,可维护性差,效率低的弱点就变得尤其突出,所以人们以架构运行环境 (如.Net,J2ee等)来提供完善的支撑平台,从而把开发者解放出来,更专一于业务核心的开发。而这些业务功能以组件的形式(如DCOM, EJB等)发布运行在架构运行环境中。软件开发的重用模式也上升到业务组件的级别。面向组件的开发模式在异步架构、分布式等的系统中应用尤其突出,这种模式对面向对象开发模式进行了很好的补充;

◆ 面向服务(SOA)的开发模式:当软件的使用范围扩展到更广阔的范围,每每会面对更加复杂的IT环境和更加灵活多变的需求。服务(Service)的概念出现了,人们将应用 (Application)以业务服务(Business Service)的形式公布出来供别人使用,而彻底不须要去考虑这些业务服务运行在哪个架构体系上,由于全部的服务都讲着一样的语言。SOA考虑了业务发展的长期性,体现了"变化就是永恒"的思想。SOA的核心体如今企业应用或者业务功能上的"重用"和"互操做",而再也不把IT与业务对立起来,这能够被视为在IT驱动业务的方向上迈出的重要一步。面向服务的开发模式是为了支持更加灵活的异构、分布式系统;

◆ 面向云(Cloud)的开发模式:其实利用前面的几种开发模式就能够解决当前各类应用了,但人们老是考虑对资源进行重组已达到对资源的最佳使用。这个时候云计算就诞生了。云计算(Cloud Computing)是网格计算、分布式计算、并行计算、网络存储、虚拟化、负载均衡等传统计算机技术和网络技术发展融合的产物。提供资源的网络被称为“云”。“云”中的资源在使用者看来是能够无限扩展的,而且能够随时获取,按需使用,随时扩展,按使用付费。简单的说云计算简化了咱们的基础架构且给企业提供了更大的可配置性和灵活性。在原有模式下若是构建一个小型的应用,你须要租用服务器、你须要考虑租用服务器的安全和稳定因素等。若是构建一个中大型的应用,咱们须要花巨资购买硬件来集群,而后是巨额资金购买所需的系统软件并且这些也须要一些人员来维护。如今云能提供咱们程序所需的硬件设备和软件设备,你所作的只是按照你的须要租用这些已有的资源,上传你的程序和修改配置文件,就能够灵活扩展或收缩你占用资源,这样就能够达到合理利用资源的目的,同时也减轻了维护这些软硬件的成本。

那么上面的几个阶段也能够简单的总结为三个发展趋势,这也是如今云计算体现的三大特色:

◆ 软件即服务(SaaS——Software as a Service)一种软件分配模式,使应用程序由供应商或服务供应商托管起来,并经过网络提供给用户。

◆ 平台即服务(PaaS——Platform as a Service)一种平台分配模式,经过网络提供操做系统和相关服务,这样客户就无需下载或安装。

◆ 基础设施即服务(IaaS——Infrastructure as a Service)一种基础设施分配模式,把这些基础设施经过外包的形式提供出来,其中包括存储、硬件设备、服务器和网络组件等。

二,云计算的优点和劣势

  任何一件事物都有利弊之分,云计算更不例外了,因此咱们不能对它一律而论,只有充分的认识到这些优点和劣势以后才能更好的作出决断。也许你能够称它是一场比WEB 2.0还要巨大的革命;也许你也能够称它和当初AJAX同样,属概念炒做、新瓶装旧酒;无论如何,没有深刻虎穴焉得虎子,那么下面咱们就具体分析一下它到底有哪些优点和劣势。

优点或值得应用的方面:

1.能快速搭建咱们的应用

  云计算最大的好处就是可以快速搭建咱们的企业应用,好比咱们如今要开发一个网站,咱们就没必要担忧是否须要花巨资购买硬件来集群,而后是巨额资金购买所需的系统软件并且这些也须要一些人员来组建和维护的,若是恰巧这是一个比较新且可能会带来盈利的商业点子,那搭建在云上就是一个很是不错的选择,这起码能比其余企业先行一步。

2.提供了更大的灵活性和扩展性

  因为“云”的规模能够动态伸缩,这样就能够不用加大投资硬件设备的力度来知足应用和用户规模增加的须要,同时也无形起到了下降成本的做用。若是项目忽然废弃,也没有什么大的损失,因此在这方面,云计算是至关灵活和易于扩展的。

3.能够解决一些特殊的场景

  不少公司都是在特定的时期盈利较大,好比一些情人节和圣诞节的帮办公司,它们就是在这段时间的营业额比较大,在一年中的其余时候,几乎不能盈利,在这种状况下,若是按照传统的软件部署习惯,势必会形成必定的浪费。正如一个有大量波峰和波谷的企业同样,你可能就被迫要将更多的IT资源分配给峰值时期使用。这种状况下将峰值需求外包可能会节约更多成本。

4.缩短了产品的开发周期

  无论你是使用哪一个厂商的云计算产品.都有一个显著的特色,那就是能缩短产品的开发周期,一个想法到一个产品的开发周期由于云计算的到来而逐渐缩短,由此你能够看出里面蕴藏的巨大价值。云计算确实已经开始影响到咱们作业务的方式。咱们开始减小研究的循环周期,这对于咱们来讲很是重要并且必要。

5.节约了创建基础设施的成本

  其实对于每一个企业来讲基础设施都是一笔开支比较大的费用,并且除了费用以外还须要专门的人力和物力的投入,在这个过程当中又要保持快速的软硬件更新速度来适应市场的不断变化,因此云计算的出现无疑是值得考虑的一种解决方案。不少时候,咱们也会时常注意到数据中心使用面积不够、应用软件超出基础架构的承受能力、软硬件更新太快等问题,云计算服务能帮助企业将资本转移到运营费用上,尤为是在生死攸关的关键时刻,因此在这方面来讲,是值得考虑的。

劣势或须要改进的方面:

1.数据安全性

  对数据安全性方面看,目前比较热的云计算厂商亚马逊、谷歌、IBM、微软、甲骨文、思科、惠普、Salesforce、VMware等都没有彻底解决这个问题,因此不少企业了解到所用数据的类型和分类后,他们仍是会决定经过内部监管来控制这些数据。而毫不会将具有竞争优点或包含用户敏感信息的应用软件放在公共云上,这个也是众多企业保持观望的一个缘由。

2.厂商按流量收费有时会超出预算

  虽然云厂商推出云产品时大力宣传随时获取,按需使用,随时扩展,按使用付费,可是在很大程度上价格都比较高,至少在目前尚未下降的趋势,这样对某些企业就会起到相反的效果,好比说像索尼娱乐这样的公司,他们就不考虑采用外部云服务来应对存储扩展能力的挑战。位于加利福尼亚的Culver City的高级系统工程师Nick Bali表示。天天索尼动画访问和产生的数据量都在4千兆到12千兆之间。Bali解释说"若是放在云上进行数据读取的话,咱们须要的网络带宽是很是庞大的,这样所需的成本过于巨大,甚至超过了购买存储自己的费用。目前索尼公司正在使用ParaScale的云存储软件评估私人存储云。因此从这点看出并非云平台就必定便宜。

3.企业的自主权下降

  其实关于企业自主权这个问题是一个比较争议的话题,也许这也是出于慎重的考虑,毕竟对本身公司的应用,你们都但愿能彻底管理和控制,原来的模式中,能够搭建本身的基础架构,每层应用均可以自定义的设置和管理;而换到云平台之后,企业不须要担忧基础架构,也不须要担忧诸如安全、容错等方面,好处是一个方面,但同时也让企业感到了担心,毕竟如今熟悉的东西忽然变成了一个黑盒。固然在这个时候众厂商也推出了内部云或者云套件来补救,可是这个问题也没获得根本解决。

4.规模大且成型的企业难以扩展

  不少大型企业已经花了巨资来购买硬件并逐渐构建了本身的服务器集群(有的企业还大量购置了最新的刀片服务器),而后也购买了所需的系统软件和应用软件,并且也在此基础上搭建了基础平台架构。那么针对这样的企业来讲,他们没有必要把本身的应用舍本求末的放在云上,因此这个也是不少企业不肯意移植的缘由之一。

5.云计算自己还不太成熟

  尽管众云计算厂商把云计算炒得大红大紫,每一个厂商推出的云产品和云套件也是琳琅满目、层出不穷,可是他们都各自为战,没有有统一的平台和标准来规范。因此冷静下来想想,到底它能不能为咱们企业所用,在安全性、稳定性和企业自己因素方面必须尽管慎重的考虑才行,不要被眼前的广告所忽悠。你要知道每一个企业要宣传本身的产品都会采起各类手段的,好比说到公共云不安全,厂商就开始推私有云;说到企业原有应用难以整合到云上,厂商立刻就推出了混合云;可是在根本上云计算还有很长的路要走,不少地方都得优化。固然咱们也愿意在这个过程当中充当试金石,由于体验它以后,咱们相信它一定会成为将来的趋势。

三,目前的现状

  了解了云计算的基本概念之后,接下来要作的就是如何选择合适的云供应商,毕竟咱们不是亚马逊、Google、微软、阿里巴巴、浪潮等专一于云计算研发的企业,因此若是咱们使用云计算,必须得选择一个合适的云厂商来为咱们服务。

cloudcompany

                                         图1

  上面的图中包含了前期的几家云计算厂家,其实整体来讲如今云计算厂商可谓星罗棋布,不光是国外的亚马逊、谷歌、IBM、微软、甲骨文、思科、惠普、Salesforce、VMware等大型企业,还包括国内的阿里巴巴、中移动、浪潮等也加入到了这个竞技场。

四,微软的云平台

  虽然咱们不能亲自开发一个云平台,可是咱们可使用并体验云平台给咱们带来的好处,在这个过程当中咱们也能够经过具体使用、深刻分析、再次使用、回归总结的方式来逐步深化咱们的认知程度,这样循环往复之后就从中得到预期的收益。咱们这个系列目前主要研究微软的云平台——Windows Azure Platform,它是微软完整的云计算平台,目前包含了以下三大部分(详细介绍见云计算之旅4—Windows Azure总览 ):

WindowsAzure

                                        图2

  
◆Windows Azure:运行在云中的操做系统,对于用户来讲是虚拟且透明的,其中提供了Compute(计算),Storage(存储),以及Manage(管理)这三个主要功能及其底层服务,使用起来至关的便捷。 
◆SQL Azure:运行于云中的一个关系数据库,和SQL Server 2008相似,可是在功能上尚未那么强大。 
◆AppFabric:全名是Windows Azure platform AppFabric,提供了访问控制、服务总线等服务,主要用于把基础应用链接到云中。

四. 开发工具

  俗话说“工欲善其事,必先利其器”。咱们在开发一个任何一个程序以前都须要了解开发它的工具,使用了开发工具以后总能起到事半功倍的效果,这一点是无需置疑的,毕竟命令行、汇编、记事本的方式是须要大量的时间和精力,并且调试和异常跟踪等也极为困难。针对微软的windows azure的开发工具很简单,咱们在安装了VS2008或VS20十、SQL Server 2005/2008/2008 R2后,再安装一个扩展的工具包就能够进行云应用的开发了,这个扩展工具包是:Windows Azure Tools for Microsoft Visual Studio 1.2 (里面包含Windows Azure SDK和Visual Studio集成),其下载的地址是: 
http://www.microsoft.com/downloads/details.aspx?FamilyID=2274a0a8-5d37-4eac-b50a-e197dc340f6f&displaylang=en

这个版本是2010年6月发布,其中包括Windows Azure Tools + SDK,因此安装了它之后就不须要再安装其余的软件了,其中功能包括:

◆新特性支持:对Visual Studio 2010 RTM的彻底支持,这样咱们就可使用最新的模板和强大的新特性。 
◆多版本支持:.NET 4 的支持使得开发者构建服务时具备选择.NET 2.0、.NET 3.0、.NET 3.5 或者 .NET 4 框架的灵活性。 
◆应用可视化:经过在Visual Studio Server Explorer中显示Windows Azure table 和blob容器的只读视图,咱们能够用视图的方式预览咱们所建立的应用。 Cloud storage explorer也使得开发者能更轻松的构建出更优秀的服务。 
◆整合部署:开发者只需在Visual Studio Solution Explorer中选择"Publish"便能直接部署服务,这个在1.1版本也提供了。 
◆服务监控:帮助开发者经过在Server Explorer中的'compute'节点来追踪和管理其服务状态。 
◆调试简便:IntelliTrace 支持运行于云端的服务,简化了对于云端服务的调试。

  其实使用VS 2008 和VS2010开发云程序的过程没有本质上的区别,主要是VS 2010提供了云应用的开发、调试、部署、管理的整套工具,如开发云计算程序模式、开发云计算的项目模板、离线测试云计算项目、云计算部署等等功能的支持,这些功能都缩短了云应用的开发周期,在很大程度上提升了开发效率,所以咱们在不少时候会使用VS 2010来开发云应用,固然为了照顾部分使用VS 2008的朋友,咱们也会尽可能提供两个版本。

五. 第一个简单程序

步骤一:建立云项目

   正所谓“千里之行始于足下”。安装了开发工具以后,咱们就来建立第一个应用程序,因为我安装的是windows 7操做系统,因此用管理员权限打开Visual Studio 2008,若是是XP等操做系统,直接运行Visual Studio 2008便可,由于以前咱们已经安装了Windows Azure Tools for Microsoft Visual Studio 1.2,因此你就会看到下图模板中多了一个Cloud的选项(图中标记1),点击Cloud选项,选择Windows Azure Cloud Service模板(图中标记2),命名项目为FirstCloudApp,点击OK按钮建立咱们的项目:

1

                                        图3

  在弹出窗口出现后,按照下图所示,分别点击标签1的ASP.NET Web Role和标签2的“>”按钮。该步骤会在右边窗口中生成一个新的WebRole项,此时你能够点击标签4的笔形图标,而后改变该Web Role名字,同时你也能够点击标签5的小叉删除新建的项,操做完以后点击OK按钮便可。

2

                                        图4

步骤二:观察生成的云项目

 项目结构以下图所示:

Untitled5

                                        图5

  由项目结构图咱们能够看到云项目和普通的ASP.Net项目的差异,ASP.Net Web Role云项目会产生一个云应用的项目和一个ASP.Net的项目,云应用项目对ASP.Net项目进行引用,同时云应用项目中还包含服务程序文件和服务配置文件,这两个文件在配置、运行和部署云应用时将要用到,没有这两个文件,也就没有咱们的云程序。你们也能够经过这些配置文件来具体定制化咱们的应用,在下一次课程中,咱们也会详细讲解这个程序文件的内部原理以及注意事项。

编辑Default.aspx页面,添加一些简单的测试信息,代码如:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebRole1._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div>
            <img alt="" src="2010-8-22%2011-55-50.png" style="width: 314px; height: 155px" /><br />
        </div>
        <div style="font-size: x-large; color: #FF0000">
            圣殿骑士已经在云上了!!!</div>
    </div>
    </form>
</body>
</html>

步骤三:解决运行错误问题

按F5键开始调试程序。因为没有安装SQL Server Express,因此会看到下图所示的错误信息

err1

                                        图6

  那么咱们可使用VS 2010的安装文件添加安装来解决这个问题,同时你也能够经过命令行的方式来解决,在开始菜单中点击Windows Azure SDK Command Prompt进入命令行窗口,以下图:

Untitled1 

                                        图7

在以下的命令行窗口输入DSInti /sqlInstance:.(意思是:“DSInit /sqlinstance:你的sql instance名字”,咱们这里本机,因此是.)

err3 (2)

                                        图8

而后点击下面的OK按钮,从新运行程序便可。

err3 (1)

                                        图9

步骤四:再次运行程序,获得正确结果

  再次运行程序,你将会看到下面的页面,这表示你建立的windows azure的程序能够正常运行并获得了你想要的结果,若是你比较细心,你会发现它是借用本地的IIS来Host的,地址是:http://127.0.01:81/Default.aspx

4

                                        图10

通过上面的步骤,咱们已经建立了第一个云程序,接下来要作的就是部署到所谓的云上面去了。

步骤五:观察本地云模拟器

若是你足够细心的话,会发现任务栏里多了一个程序的图标,见下图1标记:

Untitled2

                                        图11

  这个就是dev Fabric和dev Storage的管理器。也就是传说中的云端模拟器,这个模拟器可让咱们在本地测试本身的程序是否可以在Windows Azure Platform上正常运行。通常状况下若是在本地测试经过的程序,上传到Windows Azure Platform上就能够正常运行,可是也有一些特殊的状况,咱们在后面会讲到。点击上图的2标记,就进入下图的dev Fabric管理器:

Untitled3

                                        图12

从上图的dev Fabric管理器能够看到咱们当前运行的程序以及执行的状态,这个能够帮助咱们进行跟踪和调试。

  点击图11的3标记,就进入下图的dev Storage管理器,Windows Azure为应用程序提供了Blobs,Tables和Queues三种存储机制,你能够在这个界面来开启或者关闭某种存储机制。

Untitled4

                                        图13

对于上面这些功能,咱们在这篇不会作过多的探讨,之后会在专门的文章中作详细介绍。

六. 帐户申请

在部署以前,咱们先要有一个帐户,若是没有帐户须要从http://www.microsoft.com/windowsazure/offers/这里进行注册购买,具体以下页面

2010-9-2 17-48-09

                                        图14

购买了并激活之后就能够经过https://windows.azure.com/Cloud/Provisioning/Default.aspx登录

2010-9-2 17-58-06

                                        图15

登录成功之后,你会看到以下的主界面,在这个界面里面,你能够建立、管理你的Windows Azure、SQL Azure和AppFabric。

8 

                                        图16

七. 部署

步骤一:发布项目

  开发完一个应用程序并在本地完成测试以后,就能够部署到云上去了,咱们在Visual Studio的Solution Explorer窗口中,右击FirstCloudApp项目,点击Publish选项,以下图:

5 

                                        图17

  这里有两个选择方案发布你的项目,第一就是建立云程序包,手动上传;第二就是设置信息自动上传。因为下篇咱们会分析其内部的原理,因此咱们这里就选择第一种方式,以下图:

6

                                        图18

点击OK按钮,等待Visual Studio建立压缩包并自动弹出压缩包的窗口。压缩包和配置文件以下图:

7

                                        图19

步骤二:Windows Azure管理站点

  前面咱们输入了Live ID和密码登录到了Windows Azure管理站点,你们看到该网页列出了咱们可以使用的Windows Azure服务,固然因为购买的服务不一样,您的项目数量也会有所不一样,这里咱们须要建立一个服务来Host咱们的程序。你能够点击下图标记1或者标记2来建立咱们的服务:

8

                                        图20

步骤三:建立Hosted Services

因为是第一次部署,咱们须要先建立一个新的Hosted Services来Host咱们的程序。点击New Service连接:

9 

                                        图21

弹出以下页面,填入Hosted Services的标签名并输入该Hosted Services的描述,而后点击Next按钮:

10

                                        图22

  输入你想要的域名,而后点击Check Availability按钮检查该域名是否可用,接下来就是设置服务器的地理位置,因为我如今处在新加坡,因此选择东南亚,若是在中国大陆,则能够选择东亚。最后点击Create按钮完成建立:

11

                                        图23

步骤四:上传并部署程序

  如今Hosted Services已经建立完成。咱们可以在网页上看到咱们刚刚建立的Hosted Service,以下图,标记1能够修改程序的描述。标记2能够删除咱们刚才建立的服务。标记3和4则是咱们刚建立服务的两个环境,windows azure在这方面作得很人性化,提供了Staging和Production两个环境来部署咱们的应用,这个就和咱们实际的项目流程比较相似了,也给咱们提供了更大的灵活性。标记5则给咱们提供了一个很重要的功能,你能够经过证书来保护你的应用程序。

12

                                        图24

  点击上图Staging的Deploy按钮弹出以下页面。选择在步骤一中生成的两个文件而后上传。在Application Package一栏中输入.cspkg文件路径。在Configuration Settings一栏中输入.cscfg文件路径。点击Deploy:

13

                                        图25

步骤五:启动并测试程序

点击Deploy按钮以后,看到以下页面,而后等待一段比较长的时间(时间根据你项目大小而定):

14

                                        图26

直到出现下面的界面,你会看到当前的状态为Stopped,这个时候点击Run按钮

15

                                        图27

你会看到状态由Stopped逐渐变为Initializing、Busy和Ready,当状态变为Ready后,点击下面的Web Site URL连接就能够看到咱们刚才修改的网页了。

16

                                        图28

  通过刚才Staging环境测试以后,咱们就能够点击上图中间的转换按钮,这个时候Staging环境中的应用程序就会上传到Production环境,而后通过前面Staging相同操做,就能够见到以下图所示界面

17

                                        图29

当发现WebRole1的状态为Ready时,咱们的Web Role项目就已经成功运行了。见下图:

19

                                        图30

而后点击Web Site URL连接,这个时候就能够看到咱们期待的页面了。

18

                                        图31

到此为止咱们已经成功地把第一个云程序发布到云端了!如今任何可以访问Internet的机器均可以经过http://firstcloudapplication.cloudapp.net/进行访问。

八. SQL AZURE

  在浏览器输入https://windows.azure.com/Cloud/Provisioning/Default.aspx,打开页面而后输入了Live ID和密码登录到了Windows Azure管理站点(如图32所示),前面咱们建立了一个服务来Host咱们的程序,这里咱们要介绍另一个功能——SQL AZURE,点击页面的SQL AZURE连接

8

                                        图32

进入如图33所示的页面,能够看到当前的全部数据库和全部操做按钮,那么咱们就简单对它们进行一些介绍:

标签1中的Reset Password按钮能够修改登录密码;

标签2中的Drop Server按钮是删除当前SQL AZURE服务;

标签3中的Databases则是显示全部的数据库信息,其中包括数据库名、当前大小、最大容量、版本(Web版本有1G和5G两个容量可供选择,Business版本支持10G、20G、30G、40G乃至50G的大容量存储);

标签4中的Firewall Settings是一个比较重要的功能,能够经过设置具体可由哪些IP访问,即至关于简单防火墙的功能。

标签5中的Connection Strings按钮是程序连接字符串的信息,经过它能够获取程序使用什么样的字符串来访问数据库,一共有ADO.NET和ODBC两种方式。

标签6中的Test Connectivity按钮这个功能能够测试刚才咱们建立的数据库是否链接正常。

标签7中的Create Database按钮则是咱们最经常使用的功能,使用它来建立咱们的数据库。

标签8中的Drop Database按钮删除当前选择的数据库。

20

                                        图33

  点击图33标签7中的Create Database按钮打开图34所示的界面,咱们输入要建立的数据库名FirstCloudDB,选择版本类型,而后选择容量大小以后点击Create按钮便可完成建立工做。

21

                                        图34

  点击图33标签5中的Connection Strings按钮打开如图35所示界面,由于咱们要在程序或者SQL Server Management Studio R2中使用到连接字符串,因此在使用的时候须要从这里查看或者拷贝。

22

                                        图35

  点击图33标签6中的Test Connectivity按钮,这个功能能够测试刚才咱们建立的数据库是否链接正常,输入Username和Password,而后点击Connect按钮,就能够测试链接是否成功。

23

                                        图36

  点击图33标签4中的Firewall Settings,打开如图图37所示的界面,咱们知道这是一个比较重要的功能,能够经过设置具体可由哪些IP访问,即至关于简单防火墙的功能。咱们先把本机加入到Firewall Settings里面,这样就能够经过本机的程序或者SQL Server Management Studio R2操做数据了。

24

                                        图37

当设置了Firewall Settings之后就能够经过管理工具或者程序进行链接了。

  在讲下面的内容以前,你首先得安装SQL Server R2版本的数据库,具体下载地址:http://msdn.microsoft.com/en-us/subscriptions/default.aspx

安装完成以后,咱们就可使用SQL Server Management Studio R2登录SQL AZURE了,打开SQL Server Management Studio R2,如图38所示

25

                                        图38

  登录成功之后进入如图39所示的SQL Server Management Studio R2主界面,这个版本和其余版本基本一致,我也不作过多介绍,后面讲SQL AZURE会专门进行探讨。

2010-9-6 15-28-28

                                        图39

九. 经典的程序+数据库模式

  前面用了较大篇幅介绍了Windows Azure和SQL AZURE的基本使用,那么这里就用一个简单的实例来看一下经典的程序+数据库模式在azure中有哪些改变,首先打开SQL Server Management Studio,登录到SQL AZURE数据库,经过以下语句创建所需的表和插入所需的数据(如图40所示)。

26

                                        图40

建立了数据库之后,而后咱们打开前面建立的FirstCloudApp程序,在Default.aspx页面放置一个Label 控件,这个控件用来呈现从数据库返回的数据

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebRole1._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div>
            <img alt="" src="2010-8-22%2011-55-50.png" style="width: 314px; height: 155px" /><br />
        </div>
        <div style="font-size: x-large; color: #FF0000">
            圣殿骑士已经在云上了!!!</div>
        <div style="font-size: x-large; color: #FF0000">
            从SQL AZURE读取的数据:<asp:Label ID="lblSqlAzure" runat="server" Text="Label"></asp:Label>
        </div>
    </div>
    </form>
</body>
</html>

  在Default.aspx.cs页面写一段简单读取数据库数据的代码,为了可以简单的展现,我没有对其进行分装,也没有引入任何修饰代码,这样你们能够更好的理解一些,若是你们看不惯这些代码,也敬请见谅,后面文章会讲解咱们本身开发的ORM框架,AOP对日志、异常、特定植入代码的处理,IOC对框架和组件解耦的支持以及经常使用设计模式和SOA service bus等的引入。

namespace WebRole1
{
    public partial class _Default : System.Web.UI.Page
    {
        private const string DBNAME_STRING = "FirstCloudDB";
        private const string CONNECTION_STRING = "Server=tcp:kd9vhdfdfw.database.windows.net;Database=" + DBNAME_STRING + ";User ID=KnightsWarrior@kd9vhjwe8w;Password=Ncs@135456;Trusted_Connection=False;Encrypt=False";  //  On Azure.
        private const string SELECT_STRING = "SELECT [message] FROM [FirstCloudDB].[dbo].[tTest]";

        protected void Page_Load(object sender, EventArgs e)
        {
            this.lblSqlAzure.Text = GetResult(SELECT_STRING).ToString();
        }

        public static object GetResult(string SQLString)
        {
            using (SqlConnection connection = new SqlConnection(CONNECTION_STRING))
            {
                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                {
                    try
                    {
                        connection.Open();
                        object obj = cmd.ExecuteScalar();
                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                        {
                            return null;
                        }
                        else
                        {
                            return obj;
                        }
                    }
                    catch (System.Data.SqlClient.SqlException e)
                    {
                        connection.Close();
                        throw new Exception(e.Message);
                    }
                }
            }
        }
    }
}

 

  编码完了之后就能够在本地测试了,测试经过之后发布咱们的程序(这个和前面操做相似,因此简单略过)。因为以前咱们已经部署了开发的程序,这个时候只须要更新之前的服务就行。

27

                                        图41

点击图41中所示的Upgrade按钮,弹出以下页面:

28

                                        图42

  在图42标签1中选择更新类型;在图42标签2中选择程序包;在图42标签3中选择配置文件包;在图42标签4中设置操做系统,通常咱们采用默认配置;在图42标签5中填入这次发布的Label,代表发布编号;在图42标签6中能够设置是所有更新仍是特定更新;最后点击图42标签7的Deploy按钮。

19

                                        图43

而后点击图43中的Web Site URL的连接http://firstcloudapplication.cloudapp.net/,发现刚才开发的程序已经成功的部署在云上了。

29 

                                        图44

  如今任何可以访问Internet的机器均可以经过http://firstcloudapplication.cloudapp.net/进行访问,至此咱们就讲完了最基本的开发模式,也为下面深刻的探讨打下了基础。

十. 本文总结

  这篇文章讲的概念也不是不少,可是做为基础篇,也但愿你们能引发注意,由于没有它,咱们后面的文章也无从谈起。经过这篇文章,咱们必需要对云有一个感性和理性的认识。最重要的是要认清它究竟给咱们带来了哪些改变,固然今天的例子也只是云计算的冰山一角,可是咱们要养成思考的习惯,好比在此前的传统作法中,对于一个中小型网站,若是部署的话,咱们会租用服务器来托管咱们的应用。对于较大型且企业想本身主导的网站,咱们能够本身购置服务器,而后对服务器集群,作好分布式和负载均衡。如今引入云计算以后,咱们开发完一个网站以后就能够直接把它部署到云上,这样就能够不用考虑负载均衡等问题,固然为了实现这个还要作不少配置,咱们后面会详细介绍,这样作了之后大大提升了此应用的灵活性和扩展性,同时也减小了基础架构的成本和负担,更为重要的是它能按需使用,这给一些时令和节假日企业也带来了福音。对于安全性以及大型应用没有在此篇讨论的范畴,后面会逐渐涉及。

今天的例子过于浅显,可是千万不要把云计算等同于虚拟机或空间租用商,这样就太暴殄天物了,除了具备Host网站的功能外,还有一些常见的功能,如:
1. 能够把应用程序放上去执行,这样就至关于运行在操做系统中,而且结合SQL AZURE速度是很是快的,对于某些大数据量的处理是至关有利的。
2. 把云存储做为缓存来使用,这样就可使速度加快,这样用户也更容易接受。
3. 默认提供了标准的Event Streams来记录日志和发出警告等
4. 你能够根据程序的健康报告来查看运行情况,原来咱们会实现一套机制
5. 安全虽然如今作得仍是不太健全,可是能够经过数字证书来防止篡改,同时也能够利用加密解密技术。你要相信厂商也在逐渐完善。
6. 对大型的分布式项目,能够经过设置AppFabric来实现负载均衡,这在原来使要作不少工做的。
7. 以前的SSB和MSMQ等消息队列能够很简单的用Quee来实现,这样能够简化不少操做,也避免了常见错误的出现。
8. 对于一个颇有想法但没有强大基础设施的公司,若是选择云计算能够很容易实现他们的应用。
固然还有不少,我就不一一列举了,我也不是想夸云计算有多好,后面的文章也会详细介绍,其实云计算确实给咱们提供了不少便捷,在后面的文章中咱们经过具体应用来看一下到底它是否是适合于咱们的项目,因此也请你们拭目以待,诚然,因为本身知识浅薄,若是不正确的地方,也请你们海涵,最重要的仍是相互交流、共同提升!

十一.系列进度

云计算之旅1—开篇有益

云计算之旅2—云计算总览

云计算之旅3—云计算提供商综合对比

云计算之旅4—Windows Azure总览

云计算之旅5—实战第一个云程序

云计算之旅6—剖析Windows Azure程序内部原理

云计算之旅7—ASP.NET Web Role  

云计算之旅8—ASP.NET MVC Web Role  

云计算之旅9—WCF Service Web Role  

云计算之旅10—Work Role   

云计算之旅11—CGI Web Role 

云计算之旅12—云存储之Blob基础及实例

云计算之旅13—云存储之Table基础及实例

云计算之旅14—云存储之Quee基础及实例

云计算之旅15—云存储之Dive基础及实例

云计算之旅16—SQL Azure 之一(基础介绍)

云计算之旅17—SQL Azure之一(应用及RDBMS支持)

云计算之旅18—SQL Azure之三(安全、工具及应用)

云计算之旅19—AppFabric之一(基础介绍)

云计算之旅20—AppFabric之二(Service Bus及应用)

云计算之旅21—AppFabric之三(Access Control Service及应用)

云计算之旅22—云平台安全问题

云计算之旅23—老技术兼容问题

云计算之旅24—ASP.NET+SQL项目移植到云平台

云计算之旅25—WinForm/WPF项目移植到云平台(云/端模式)

云计算之旅26—ASP.NET+Silverlight项目移植到云平台

云计算之旅27—Amazon云计算

云计算之旅28—Google云计算

云计算之旅29—SalesForce云计算

云计算之旅30—云计算开发总结

代码下载:FirstCloudApp     配套视频敬请关注MSDN Webcast官方网站,到时会逐渐更新上去,可能讲得很差,也敬请见谅!

另外新建了一个云计算专区(地址:http://home.cnblogs.com/group/CloudComputing/),你们有什么相关的疑问或话题也能够在里面进行探讨,同时也但愿各位推选一位组长来带领你们共同窗习,本人自认才疏学浅,无力胜任,因此欢迎广大爱好者踊跃加入,咱们也有理由相信云计算必定会带来一场软件行业的变革!

原文出自:http://blog.csdn.net/knightswarrior/article/details/9430507

相关文章
相关标签/搜索