三. 云计算基础回顾· 1.摘要· 2.本文提纲· 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)一种基础设施分配模式,把这些基础设施通过外包的形式提供出来,其中包括存储、硬件设备、服务器和网络组件等。
二,云计算的优势和劣势
优势或值得应用的方面:
1.能快速搭建我们的应用
云计算最大的好处就是能够快速搭建我们的企业应用,比如我们现在要开发一个网站,我们就不必担心是否需要花巨资购买硬件来集群,然后是巨额资金 购买所需的系统软件而且这些也需要一些人员来组建和维护的,如果恰巧这是一个比较新且可能会带来盈利的商业点子,那搭建在云上就是一个非常不错的选择,这 起码能比其他企业先行一步。2.提供了更大的灵活性和扩展性
由于“云”的规模可以动态伸缩,这样就可以不用加大投资硬件设备的力度来满足应用和用户规模增长的需要,同时也无形起到了降低成本的作用。如果项目突然废弃,也没有什么大的损失,所以在这方面,云计算是相当灵活和易于扩展的。3.可以解决一些特殊的场景
很多公司都是在特定的时期盈利较大,比如一些情人节和圣诞节的帮办公司,它们就是在这段时间的营业额比较大,在一年中的其他时候,几乎不能盈 利,在这种情况下,如果按照传统的软件部署习惯,势必会造成一定的浪费。正如一个有大量波峰和波谷的企业一样,你可能就被迫要将更多的IT资源分配给峰值 时期使用。这种情况下将峰值需求外包可能会节约更多成本。4.缩短了产品的开发周期
不管你是使用哪个厂商的云计算产品.都有一个显著的特点,那就是能缩短产品的开发周期,一个想法到一个产品的开发周期因为云计算的到来而逐渐缩 短,由此你可以看出里面蕴藏的巨大价值。云计算确实已经开始影响到我们做业务的方式。我们开始减少研究的循环周期,这对于我们来说非常重要而且必要。5.节约了建立基础设施的成本
其实对于每个企业来说基础设施都是一笔开支比较大的费用,而且除了费用之外还需要专门的人力和物力的投入,在这个过程中又要保持快速的软硬件更 新速度来适应市场的不断变化,所以云计算的出现无疑是值得考虑的一种解决方案。很多时候,我们也会时常注意到数据中心使用面积不够、应用软件超出基础架构 的承受能力、软硬件更新太快等问题,云计算服务能帮助企业将资本转移到运营费用上,尤其是在生死攸关的关键时刻,所以在这方面来说,是值得考虑的。
劣势或需要改进的方面:
1.数据安全性
对数据安全性方面看,目前比较热的云计算厂商亚马逊、谷歌、IBM、微软、甲骨文、思科、惠普、Salesforce、VMware等都没有完 全解决这个问题,所以很多企业了解到所用数据的类型和分类后,他们还是会决定通过内部监管来控制这些数据。而绝不会将具备竞争优势或包含用户敏感信息的应 用软件放在公共云上,这个也是众多企业保持观望的一个原因。2.厂商按流量收费有时会超出预算
虽然云厂商推出云产品时大力宣传随时获取,按需使用,随时扩展,按使用付费,但是在很大程度上价格都比较高,至少在目前还没有降低的趋势,这样 对某些企业就会起到相反的效果,比如说像索尼娱乐这样的公司,他们就不考虑采用外部云服务来应对存储扩展能力的挑战。位于加利福尼亚的Culver City的高级系统工程师Nick Bali表示。每天索尼动画访问和产生的数据量都在4千兆到12千兆之间。Bali解释说"如果放在云上进行数据读取的话,我们需要的网络带宽是非常庞大 的,这样所需的成本过于巨大,甚至超过了购买存储本身的费用。目前索尼公司正在使用ParaScale的云存储软件评估私人存储云。所以从这点看出并不是 云平台就一定便宜。3.企业的自主权降低
其实关于企业自主权这个问题是一个比较争议的话题,也许这也是出于慎重的考虑,毕竟对自己公司的应用,大家都希望能完全管理和控制,原来的模式 中,可以搭建自己的基础架构,每层应用都可以自定义的设置和管理;而换到云平台以后,企业不需要担心基础架构,也不需要担心诸如安全、容错等方面,好处是 一个方面,但同时也让企业感到了担忧,毕竟现在熟悉的东西突然变成了一个黑盒。当然在这个时候众厂商也推出了内部云或者云套件来补救,但是这个问题也没得 到根本解决。4.规模大且成型的企业难以扩展
很多大型企业已经花了巨资来购买硬件并逐渐构建了自己的服务器集群(有的企业还大量购置了最新的刀片服务器),然后也购买了所需的系统软件和应 用软件,而且也在此基础上搭建了基础平台架构。那么针对这样的企业来说,他们没有必要把自己的应用舍本求末的放在云上,所以这个也是很多企业不愿意移植的 原因之一。5.云计算本身还不太成熟
尽管众云计算厂商把云计算炒得大红大紫,每个厂商推出的云产品和云套件也是琳琅满目、层出不穷,但是他们都各自为战,没有有统一的平台和标准来 规范。所以冷静下来想一想,到底它能不能为我们企业所用,在安全性、稳定性和企业本身因素方面必须尽管慎重的考虑才行,不要被眼前的广告所忽悠。你要知道 每个企业要宣传自己的产品都会采取各种手段的,比如说到公共云不安全,厂商就开始推私有云;说到企业原有应用难以整合到云上,厂商马上就推出了混合云;但 是在根本上云计算还有很长的路要走,很多地方都得优化。当然我们也愿意在这个过程中充当试金石,因为体验它之后,我们相信它必定会成为未来的趋势。
三,目前的现状
四,微软的云平台
◆Windows Azure:运行在云中的操作系统,对于用户来说是虚拟且透明的,其中提供了Compute(计算),Storage(存储),以及Manage(管理)这三个主要功能及其底层服务,使用起来相当的便捷。
◆SQL Azure:运行于云中的一个关系数据库,和SQL Server 2008类似,但是在功能上还没有那么强大。
◆AppFabric:全名是Windows Azure platform AppFabric,提供了访问控制、服务总线等服务,主要用于把基础应用连接到云中。
http://www.microsoft.com/downloads/details.aspx?FamilyID=2274a0a8-5d37-4eac-b50a-e197dc340f6f&displaylang=en
◆新特性支持:对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 支持运行于云端的服务,简化了对于云端服务的调试。
步骤一:创建云项目
步骤二:观察生成的云项目
<%@ 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>
步骤三:解决运行错误问题
步骤四:再次运行程序,得到正确结果
步骤五:观察本地云模拟器
步骤一:发布项目
步骤二:Windows Azure管理站点
步骤三:创建Hosted Services
步骤四:上传并部署程序
步骤五:启动并测试程序
<%@ 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>
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);
}
}
}
}
}
}
云计算之旅1—开篇有益云计算之旅2—云计算总览云计算之旅3—云计算提供商综合对比云计算之旅4—Windows Azure总览云计算之旅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—云计算开发总结