云计算之旅5—实战第一个云程序
[2] 云计算之旅5—实战第一个云程序
[3] 云计算之旅5—实战第一个云程序
[4] 云计算之旅5—实战第一个云程序
八. SQL AZURE
在浏览器输入https://windows.azure.com/Cloud/Provisioning/Default.aspx,打开页面然后输入了Live ID和密码登陆到了Windows Azure管理站点(如图32所示),前面我们创建了一个服务来Host我们的程序,这里我们要介绍另外一个功能——SQL AZURE,点击页面的SQL AZURE链接
图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按钮删除当前选择的数据库。
图33
点击图33标签7中的Create Database按钮打开图34所示的界面,我们输入要创建的数据库名FirstCloudDB,选择版本类型,然后选择容量大小之后点击Create按钮即可完成创建工作。
图34
点击图33标签5中的Connection Strings按钮打开如图35所示界面,因为我们要在程序或者SQL Server Management Studio R2中使用到链接字符串,所以在使用的时候需要从这里查看或者拷贝。
图35
点击图33标签6中的Test Connectivity按钮,这个功能可以测试刚才我们创建的数据库是否连接正常,输入Username和Password,然后点击Connect按钮,就可以测试连接是否成功。
点击图33标签4中的Firewall Settings,打开如图图37所示的界面,我们知道这是一个比较重要的功能,可以通过设置具体可由哪些IP访问,即相当于简单防火墙的功能。我们先把本机加入到Firewall Settings里面,这样就可以通过本机的程序或者SQL Server Management Studio R2操作数据了。
图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所示
图38
登陆成功以后进入如图39所示的SQL Server Management Studio R2主界面,这个版本和其他版本基本一致,我也不做过多介绍,后面讲SQL AZURE会专门进行探讨。
图39
九. 经典的程序+数据库模式
前面用了较大篇幅介绍了Windows Azure和SQL AZURE的基本使用,那么这里就用一个简单的实例来看一下经典的程序+数据库模式在azure中有哪些改变,首先打开SQL Server Management Studio,登陆到SQL AZURE数据库,通过如下语句建立所需的表和插入所需的数据(如图40所示)。
图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);
}
}
}
}
}
}
编码完了以后就可以在本地测试了,测试通过以后发布我们的程序(这个和前面操作类似,所以简单略过)。由于之前我们已经部署了开发的程序,这个时候只需要更新以前的服务就行。
点击图41中所示的Upgrade按钮,弹出如下页面:
图42
在图42标签1中选择更新类型;在图42标签2中选择程序包;在图42标签3中选择配置文件包;在图42标签4中设置操作系统,一般我们采用默认配置;在图42标签5中填入此次发布的Label,表明发布编号;在图42标签6中可以设置是全部更新还是特定更新;最后点击图42标签7的Deploy按钮。
图43
然后点击图43中的Web Site URL的链接http://firstcloudapplication.cloudapp.net/,发现刚才开发的程序已经成功的部署在云上了。
现在任何能够访问Internet的机器都可以通过http://firstcloudapplication.cloudapp.net/进行访问,至此我们就讲完了最基本的开发模式,也为下面深入的探讨打下了基础。
十. 本文总结
这篇文章讲的概念也不是很多,但是作为基础篇,也希望大家能引起注意,因为没有它,我们后面的文章也无从谈起。通过这篇文章,我们必须要对云有一个感性和理性的认识。最重要的是要认清它究竟给我们带来了哪些改变,当然今天的例子也只是云计算的冰山一角,但是我们要养成思考的习惯,比如在此前的传统做法中,对于一个中小型网站,如果部署的话,我们会租用服务器来托管我们的应用。对于较大型且企业想自己主导的网站,我们可以自己购置服务器,然后对服务器集群,做好分布式和负载均衡。现在引入云计算之后,我们开发完一个网站之后就可以直接把它部署到云上,这样就可以不用考虑负载均衡等问题,当然为了实现这个还要做很多配置,我们后面会详细介绍,这样做了以后大大提高了此应用的灵活性和扩展性,同时也减少了基础架构的成本和负担,更为重要的是它能按需使用,这给一些时令和节假日企业也带来了福音。对于安全性以及大型应用没有在此篇讨论的范畴,后面会逐渐涉及。
今天的例子过于浅显,但是千万不要把云计算等同于虚拟机或空间租用商,这样就太暴殄天物了,除了具有Host网站的功能外,还有一些常见的功能,如:
1. 可以把应用程序放上去执行,这样就相当于运行在操作系统中,并且结合SQL AZURE速度是非常快的,对于某些大数据量的处理是相当有利的。
2. 把云存储作为缓存来使用,这样就可以使速度加快,这样用户也更容易接受。
3. 默认提供了标准的Event Streams来记录日志和发出警告等
4. 你可以根据程序的健康报告来查看运行状况,原来我们会实现一套机制
5. 安全虽然现在做得还是不太健全,但是可以通过数字证书来防止篡改,同时也可以利用加密解密技术。你要相信厂商也在逐渐完善。
6. 对大型的分布式项目,可以通过设置AppFabric来实现负载均衡,这在原来使要做很多工作的。
7. 之前的SSB和MSMQ等消息队列可以很简单的用Quee来实现,这样可以简化很多操作,也避免了常见错误的出现。
8. 对于一个很有想法但没有强大基础设施的公司,如果选择云计算可以很容易实现他们的应用。
当然还有很多,我就不一一列举了,我也不是想夸云计算有多好,后面的文章也会详细介绍,其实云计算确实给我们提供了很多便捷,在后面的文章中我们通过具体应用来看一下到底它是不是适合于我们的项目,所以也请大家拭目以待,诚然,由于自己知识浅薄,如果不正确的地方,也请大家海涵,最重要的还是相互交流、共同提高!
代码下载:FirstCloudApp 配套视频敬请关注MSDN Webcast官方网站,到时会逐渐更新上去,可能讲得不好,也敬请见谅!
另外新建了一个云计算专区(地址:http://home.cnblogs.com/group/CloudComputing/),大家有什么相关的疑问或话题也可以在里面进行探讨,同时也希望各位推选一位组长来带领大家共同学习,本人自认才疏学浅,无力胜任,所以欢迎广大爱好者踊跃加入,我们也有理由相信云计算一定会带来一场软件行业的变革!