云计算浅谈之三:微软云计算服务介绍
任何技术的发展都是渐进的,不会凭空产生一个新的巨变,包括云计算。这对于程序员们是一个好消息,因为根据我使用微软云计算的经验,对于一个有经验的.net程序员来讲,感谢微软的开发环境及充分考虑了程序员需求的服务设计,我们所需改变不大。
本讲介绍四点内容
- Windows Azure
- Sql Azure
- AppFabric
- Windows lives
1.Windows Azure
Windows azure是微软的云计算操作系统,属于平台层服务。对于一个操作系统来讲,肯定要包括三个基本服务:计算,存储和管理。
- 计算
Windows azure 提供基于64位windows 2008 server托管服务,平台安装IIS7,用于部署你的web服务。这里你可以简单理解它为一个虚拟主机。Windows azure支持系统虚拟化技术Hyper-v,因此可以根据用户的要求动态扩展或伸缩服务。比如发布系统时,你可以通过webRole的属性窗口来修改配置文件,选择虚拟机的大小。
![](https://images.cnblogs.com/cnblogs_com/xianzhong/scaleservice.png)
- 存储
Windows azure支持三类存储:
- Blob
存放视频,图像,音乐等二进制数据,每一个Blob最大50GB。 - Queue
用来存放消息最大8KB,在不同应用,不同运行实例间异步通信通道 - Table
存放结构性数据,比如你可以创建Table,包含多条记录Entity,每个记录有很多列Property。并通过LinQ查询。
在你的应用中如果需要使用这些存储,需要开发环境中安装Windows azure sdk(如果你使用的是VS2010就不需要了),Project中需要添加对Microsoft.WindowsAzure.ServiceRuntime,Microsoft.WindowsAzure.StorageClient,
Microsoft.WindowsAzure.Diagnostics程序集的引用。SDK可以从微软网站http://www.microsoft.com/windowsazure/下载;初学者最好还是多看例子,你可以下载微软的Windows Azure Platform Training Kit http://www.microsoft.com/downloads/en/details.aspx?FamilyID=413E88F8-5966-4A83-B309-53B7B77EDF78&displaylang=en,这里有很多好的例子,我就不多讲了。我们之前的一个项目mindv在早期没有选择云计算平台,使用的是文件服务系统。不过我们预先考虑到要移植到云计算平台之上,所以将涉及读写文件部分都集中到业务层的FileProcess类中,后期决定移植到云计算平台上,只是将这个类替换掉,所需工作非常小。
- 管理
管理服务为Windows azure云计算服务提供自动化基础架构和服务管理功能:自动启动虚拟机并部署服务到其中;根据用户定义,配置Switch,访问Routers,负载平衡;维护服务的正常运行;无间断,无干扰现有服务的同时升级服务;支持自定义日志和服务使用情况监测。
例如:下图为Windows azure Host server管理界面,在这里你可以发布,升级,暂停,配置,删除你的Web应用。
2.Sql Azure
Windows Sql azure是微软应开发人员的强烈要求增加的服务,属于平台服务层。
- 关系数据存贮
对于我们开发人员来讲,我们可以认为Sql azure就是Sql server的一个子集。比如它支持传统意义上的Table,Index,views,Stored procedure,
triggers。但不支持:分布式查询, 分布式事务处理,不能使用TSQL查询修改物理资源比如:文件组的引用,SQL Server 2008的Resource Governor。
比如我在移植Sql server脚本时,就做了如下处理:
a.创建索引不能引用文件组:
CREATE NONCLUSTERED INDEX [IX_SendLogSubscribe] ON [dbo].[LetterSendLog]
(
[SubscribeGuid] ASC
)
--ON [PRIMARY] ---注视掉
GO
b.存储过程中如果有参数或变量:
--@ErrorMessage nvarchar(max) ---注视掉
@ErrorMessage ntext --替换为
c.存储过程不能在编译时加密
基本上我们的数据库脚本做以上几类修改,就可以在Sql azure上通过编译了。如此简单,这一点怕是让很多开发人员大感意外了,没有想到微软云计算如此之为开发人员着想。太让人感动了!!
最后可能朋友还要问如何连接数据库,这不用担心,在数据库管理界面可以生成数据库连接字符串,你只需修改连接密码,其他同使用任何一个Sql server数据库没有区别,以下是连接字符串样式:
Server=tcp:xxxxxxxxx.database.windows.net;Database=xxxxx;User ID=xxxx@xxxxxx;Password=xxxxx;Trusted_Connection=False;Encrypt=True;
- 数据同步
微软的Microsoft Sync Framework可以将数据在不同的位置间(企业,合作者,消费者设备)同步。开发人员就可以使用Sql server 2008的导入导出功能进行数据备份或发布。
- 管理
作为一个云计算平台层服务,还有计量,计价,负载平衡,故障转移和安全的功能。
- 数据访问
客户端的访问Sql azure支持Ado.net,Entity framework,Ado.net data service,ODBC,JDBC,Linq clients。
- Access control(访问控制)
是一个抽象了的验证授权流程的云计算服务,用户可以定义基本规则,授权角色的访问。从而为多个系统提供统一的访问控制。 - Service Bus(企业服务总线)
AppFabric较企业服务总线范围更广,因为它已经是互联网范围,跨企业,跨云。Service bus为分布系统间提供消息交换,模式有:- 发布/订阅
- 点对点
- 消息队列
- Mesh服务 Mesh服务目前是一个免费的服务,只需你有一个windows live id。Mesh有一个客户端软件,安装后可以添加设备到Mesh,并在Mesh中的设备间同步数据。Mesh有5GB的免费存储空间,用来存放设备要同步的数据。开发人员可利用Live Mesh迅速构建一些应用,以加强设备间的文件共享与同步功能。未来你在办公司修改一个文件,保存到Mesh;回到家中打开家中电脑可以继续修改;如果在旅途,打开手持设备,仍然可以修改同一个文件。这个文件可以是你开发应用的特定文件。我个人觉得利用Mesh服务的功能可以开发出非常多的小应用出来。
- 目录服务 主要是存放Mesh中设备间的关系。
- 存储服务 登陆你的hotmail,就可以使用Sky drive,那里有25GB的免费存储空间,主要用来存放office文档,照片。这些文档可以选择共享或私有。只可惜微软不可能提供Sky Drive的SDK,要不然,很多程序就可以使用这25GB的免费空间了。
- 标示服务 也就是Windows live id 服务,或者再早以前的passport服务。一个网站可以将用户登录验证的工作交给windows live id服务,以便用户可以快速登陆你的网站,而不用重新注册一个新的ID,记忆一个新的password。而这会给用户非常好的体验。如图中,用户注册时,可以不用创建新的login id,而是直接使用现有windows live id,注册,以后登录时,会由hotmail验证,然后网站允许你登录。
当然网站就必须调用windows live id服务,为此需要在https://live.azure.com/Cloud/Provisioning/New.aspx?OfferID=585ba985-1472-4732-a52c-f050e0505b9f这个网站申请application id。并且开发一个页面liveAuthHandler.aspx ,来接收并处理Windows live id服务验证完用户的响应。
Application ID: 00000000xxxxxxxx
Domain(s): xxxxx.com
Return URL: http://xxxx.com/liveAuthHandler.aspx
Secret Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- 通信 也就是Windows Live Messenger了,我相信很多人都在用。
- 搜索 使用Bing搜索服务你可以在你的程序中集成下列功能:
- 从Internet上获取有用的信息
- 在你的应用程序中添加广告内容
- 提高和增强搜索功能
- 查找特定位置信息
- 翻译条款和文本块
如果你的应用中希望使用Bing搜索服务,可以在http://cn.bing.com/developers 申请AppID,并获得一切所需资料。在我们的mindv项目中就使用了bing搜索服务,为用户查找图片并嵌入思维导图中。
- 地理空间 就是Bing Map服务。你可以看看这个网站的演示:http://travel.msra.cn/routereplay.aspx?routeid=217575
Mindv支持发布功能:
- 编辑演示图的网址http://mindv2.cloudapp.net/mindmap/Editmap.aspx?m=0edc6274-349d-42a6-9175-b877dc460010&s=2;
- 查看演示图的网址http://mindv2.cloudapp.net/mindmap/Viewer.aspx?m=0edc6274-349d-42a6-9175-b877dc460010&s=2;
- 查看图的HTML格式的网址:http://mindv2.cloudapp.net/mindmap/Html.aspx?m=0edc6274-349d-42a6-9175-b877dc460010&s=2
- 还可以将思维导图嵌入任何网页:<Iframe src="http://mindv2.cloudapp.net/mindmap/Viewer.aspx?m=0edc6274-349d-42a6-9175-b877dc460010&s=2" width="500" height="500" scrolling="no" frameborder="0"></iframe>