现在是app为王的时代,app的最重要的特性之一就是互联,无论是IOS,Android还是Windows Phone和最近很火的Windows 8 Metro App,绝大多数都要依赖于在线的资源,而Windows Azure正是提供这类资源的很好的载体。上一篇是应了一些朋友的要求,写了一下Windows Azure的注册与BizSpark会员激活的一些操作,细心的朋友可以看出,无论是3个月免费试用还是BizSpark会员权利,Windows Azure都提供了很多免费的资源,这些资源如果能被充分的利用起来,就能帮助小企业和独立程序员很好的控制运营的成本。从学习成本上来看,Windows Azure的学习非常的简单,目前Windows Azure已经提供了多种服务器端技术的支持:.net,php,java,node.js,python,可以说目前主流的服务器端技术都已经涵盖了进来,为多种程序移植至Windows Azure提供了很多便利。这也是Windows Azure吸引我的重要原因。作为程序员,我准备把在Windows Azure上学习的成果一点点的写出来与朋友们分享,希望能对大家在开发上有所帮助,也希望能与朋友们一起讨论Windows Azure的开发和使用的技巧。
我们先从Windows Azure的介绍开始,在Windows Azure官网上有了一篇很全面的介绍
https://www.windowsazure.com/en-us/develop/net/fundamentals/intro-to-windows-azure
因为其涵盖的内容很多,我希望能以之为参考,分几次写出来,而本文将重点介绍Windows Azure的体系结构,简要说明Windows Azure提供的服务。
Windows Azure 的组成结构:
从图中可以看出,Windows Azure目前包含了11大部分:
1.Excution Models 执行模型
执行模型包含了3种类型:
a) Virtual Machines 虚拟机
虚拟机想必大家都不陌生,Widows Azure提供的虚拟机其实就是一种IaaS(基础设施即服务)。虚拟机的性能、容量、系统可以根据用户需求来定制和收费。
b) Web Sites 网站
我们虽然可以在虚拟机上实现网站托管,但是虚拟机的系统是要自己来维护的,Windows Azure提供的Web Sites正是为了为用户提供免除系统维护的网站托管,换句话说,提供的是纯的IIS环境,用户通过这个环境可以在不用修改网站代码的情况下将网站部署在Web Sites上。在开发上,Web Sites支持.NET、PHP、Node.js,同时,支持SQL Database和MySql。
c) Cloud Services 云服务
包含了2种角色: Web Role 与 Worker Role,Cloud Service提供的服务相当于PaaS, Cloud Service提供了良好的维护性和扩展性,并且支持了 C#、 Java、 PHP、 Python、Node.js等服务器端技术。Cloud Service也是运行在虚拟机上,Windows Server的环境。
以上3种执行模型既可以单独使用,也可以结合起来一起使用。后面文章会详细阐述这3种执行模型,在这里就不多说了
2.Data Management 数据管理
包含3个部分:
a) SQL Database
提供了与SQL Server相似的功能和访问方式
b) Tables
提供了类似NoSql的Key-Value存储和访问方式
c) Blobs
提供了非结构化数据(二进制数据)的存储和访问
3.Networking 网络
包含3个部分:
a) Virtual Network 虚拟网络
虚拟网络使用户能够将云服务作为其自身提供的服务的扩展,按需使用。
b) Connect 连接
如果说Virtual Network提供了强大可控的网络连接解决方案,那么Connect提供的是简单的连接,这种连接不需要特别设置和维护网络设备,仅仅需要在已有的Windows设备上安装连接软件,就能实现Windows设备与Windows Azure应用程序之间的安全通信。
c) Traffic Manager 流量管理
提供了在不同的数据中心之间进行访问流量切换的策略配置。
4.Business Analytics 业务分析
包含2个部分:
a) SQL Reporting
Windows Azure提供了SQL Reporting用来使用SQL Database中的数据进行数据分析,数据报表提供了多种格式,包括HTML、XML、PDF、Excel等,并且支持app和浏览器的多种访问方式。同时,因为SQL Database使用与SQL Server相似的技术,所以原有的SQL
Server的工具也能使用SQL Database的数据
b) Hadoop
在海量数据下,传统的基于关系数据库的数据仓库并不适用,所以,Windows Azure也提供了基与虚拟机的Hadoop和MapReduce的数据挖掘方式
5.Messaging 消息
如果做过进程间通信,那么对于消息的概念一定不陌生,Windows Azure也提供了相应的进行程序间通信的机制:队列和服务总线
a) Queues 队列
队列的概念很简单,一个程序把消息写入队列,另一个程序从队列中读出消息
b) Service Bus 服务总线
与队列的一对一通信不同,服务总线提供的是一对多的通信方式,一个程序在一个话题(topic)中发布消息,其他订阅该话题的程序都能收到这个消息
6.Caching 缓存
缓存是提高程序性能的重要手段之一,将频繁使用的数据缓存起来,能够有效的降低服务器负载,在Windows Azure的 pay-as-you-go的策略下,也就意味着降低成本。
缓存分为了两种:
a) Caching 内存缓存
将频繁访问的数据放入内存缓存能显著提高程序性能
b) CDN
CDN是重要的网络加速技术,其原理是将资源复制到距离用户最近的站点,减少用户网络请求和响应的路由损耗,提高用户响应性能.Windows Azure提供了遍布全球的CDN站点,用来满足用户的需求。
7.Identity 身份识别
身份识别在应用程序中占据重要的低位,根据用户提供相应的服务是当前程序中经常使用的策略。微软提供了 Windows Azure Active Directory来满足这种需求。
8.High-Performance Computing 高性能计算
高性能计算是云计算中最吸引人的用途之一。高性能计算的本质是同时在多台机器上执行代码。在Windows Azure上,是通过同时在多台虚拟机(也就是前面讲到的执行模型中的虚拟机)上进行并行计算来实现的。为了实现并行计算,Windows Azure提供了HPC Scheduler进行程序调度。
9.Media 多媒体服务
当前,视频资源已经占据了互联网流量的重要比重,而在未来,还会更高。但是想要在互联网上提供视频资源却不是简单的事情,涉及到一系列的技术,比如视频编码算法、播放形式以及在热点时段突发流量的响应等等。而为了使用视频技术,很多程序都面临着同样的问题,做了很多重新发明轮子的工作。而Windows Azure Media Services 正是为了解决这些问题,提供了一系列的组件来使应用程序的开发变得简单。其组成如图:
从图中可以看出,Windows Azure Media Services包含了资源上传、存储、编码、版权保护、资源分发等等一系列的组件,应用程序可以根据需要调用其中的任何部分,并且Media Services所提供的资源也能够服务于多种客户端,包括Windows, Macintosh, HTML 5, iOS, Android, Windows Phone, Flash, Silverlight等等
10.Commerce 商业
SaaS(软件即服务)的兴起改变了我们创建应用程序的方式,同时,也改变了我们销售应用程序的方式。Windows Azure Marketplace 提供了查找、购买和出售这种服务的功能。
在Windows Azure Marketplace中,用户能够查找并购买需要的Windows Azure应用和商业数据,包括人口数据、财经数据、地理数据等等。
11.SDKs 开发包
提供了5种服务器端技术的支持:
a) .NET
b) Java
c) PHP
d) Python
e) Node.js
以上简单的介绍了Windows Azure提供的各种功能,希望这篇文章能使读者对Windows Azure有一个大概的了解,Windows Azure的变化很快,总有新的功能推出,还希望大家能够经常关注官网上的更新