本文目录一览:

windows azure可以提供什么服务

Windows Azure是微软基于云计算的操作系统,现在更名为Microsoft Azure。Windows Azure服务平台现在已经包含如下功能:网站、虚拟机、云服务、移动应用服务、大数据支持以及媒体功能的支持。

扩展资料:

Windows Azure的服务平台主要有:

1、网站:允许使用 ASP.NET、PHP 或 Node.js 构建,并使用 FTP、Git 或 TFS进行快速部署。支持 SQL Database、Caching、CDN及Storage。

2、Virtual Machines:在Windows Azure上您可以轻松部署并运行 Windows Server 和 Linux 虚拟机。迁移应用程序和基础结构,而无需更改现有代码。

支持 Windows Virtual Machines、Linux Virtual Machines、Storage、Virtual Network、 Identity等功能。

3、Cloud Services:是Windows Azure 中的企业级云平台,使用平台即服务 (PaaS) 环境创建高度可用的且可无限缩放的应用程序和服务。

支持多层方案、自动化部署和灵活缩放。支持Cloud Services、SQL Database、Caching、Business Analytics、Service Bus、Identity。

4、Mobile 服务:是Windows Azure提供的移动应用程序的完整后端解决方案,加速连接的客户端应用程序开发。在几分钟内并入结构化存储、用户身份验证和推送通知。

支持SQL Database、Mobile 服务。并可以快速生成Windows Phone、Android或者iOS应用程序项目。

5、大型数据处理:Windows Azure 提供的海量数据处理能力,可以从数据中获取可执行洞察力,利用完全兼容的企业准备就绪 Hadoop 服务。

6、Media 媒体支持:支持插入、编码、保护、流式处理,可以在云中创建、管理和分发媒体。此 PaaS 产品/服务提供从编码到内容保护再到流式处理和分析支持的所有内容。

支持CDN及Storage存储。

参考资料来源:百度百科-Windows Azure

azure是什么意思?

azure指Windows Azure。

Microsoft Azure是微软基于云计算的操作系统,原名“Windows Azure”,和Azure Services Platform一样,是微软“软件和服务”技术的名称。Microsoft Azure的主要目标是为开发者提供一个平台,帮助开发可运行在云服务器、数据中心、Web和PC上的应用程序。

特点:

Azure是一种灵活和支持互操作的平台,它可以被用来创建云中运行的应用或者通过基于云的特性来加强现有应用。它开放式的架构给开发者提供了Web应用、互联设备的应用、个人电脑、服务器、或者提供最优在线复杂解决方案的选择。

Microsoft Azure以云技术为核心,提供了软件+服务的计算方法。 它是Azure服务平台的基础。Azure能够将处于云端的开发者个人能力,同微软全球数据中心网络托管的服务,比如存储、计算和网络基础设施服务,紧密结合起来。

azure是什么?什么公司会用到?

Azure一般指Windows Azure

Windows Azure是微软基于云计算的操作系统,现在更名为“Microsoft Azure”,和Azure Services Platform一样,是微软“软件和服务”技术的名称。Windows Azure的主要目标是为开发者提供一个平台,帮助开发可运行在云服务器、数据中心、Web和PC上的应用程序。云计算的开发者能使用微软全球数据中心的储存、计算能力和网络基础服务。Azure服务平台包括了以下主要组件:Windows Azure;Microsoft SQL数据库服务,Microsoft .Net服务;用于分享、储存和同步文件的Live服务;针对商业的Microsoft SharePoint和Microsoft Dynamics CRM服务。

Azure是一种灵活和支持互操作的平台,它可以被用来创建云中运行的应用或者通过基于云的特性来加强现有应用。它开放式的架构给开发者提供了Web应用、互联设备的应用、个人电脑、服务器、或者提供最优在线复杂解决方案的选择。Windows Azure以云技术为核心,提供了软件+服务的计算方法。 它是Azure服务平台的基础。Azure能够将处于云端的开发者个人能力,同微软全球数据中心网络托管的服务,比如存储、计算和网络基础设施服务,紧密结合起来。

微软会保证Azure服务平台自始至终的开放性和互操作性。我们确信企业的经营模式和用户从Web获取信息的体验将会因此改变。最重要的是,这些技术将使我们的用户有能力决定,是将应用程序部署在以云计算为基础的互联网服务上,还是将其部署在客户端,或者根据实际需要将二者结合起来。

时至今日,IT服务已经成为任何商业运作的必备设施。云计算就是要将 IT 服务变得像用电一样简单。企业不需要担心电力来自哪家发电站、电线如何布设。同理,在云计算的帮助下,企业不再费心管理每台服务器用什么处理器、装什么操作系统或者数据库。

云计算提供商集中管理软件和硬件。使用者能够在任何地方随时调用资源,用完以后及时释放以供再分配,从而避免资源浪费,降低了 IT 运作成本。企业得以将有限的资源和人力用于拓展业务、提升核心竞争力。

根据部署模型的不同,云计算大体可以分为以下三类:

公有云

公有云平台提供商通过互联网将存储、计算、应用等资源作为服务提供给大众市场。企业不需要自己构建数据中心,只需要根据使用量支付开支。

如果说传统 IT 设施是企业自己给每个部门准备一台发电机、铺电线。公有云就是企业从专业电力公司买电,基础设施的建设和管理完全交给电力公司,企业用多少电付多少钱。能够最高效、最经济地利用资源。

私有云

私有云是每个企业或者组织独立运作的云基础设施。私有云建立初期需要企业投入更多资源,但更适于保存敏感数据。微软提供了完善的私有云解决方案,具体请看这里。

混合云

顾名思义,混合云就是私有云和公有云的组合,同时结合不同解决方案的优势。混合云既能提供公有云的低成本,也能通过私有云满足企业对核心业务极致安全性的需求。

Windows Azure 能够与基于 Windows Server 和 System Center 的私有云解决搭配使用,兼顾企业的具体需求。

架构编辑

Windows Azure是专为在微软建设的数据中心管理所有服务器,网络以及存储资源所开发的一种特殊版本Windows Server操作系统,它具有针对数据中心架构的自我管理(autonomous)机能,可以自动监控划分在数据中心数个不同的分区(微软将这些分区称为Fault Domain)的所有服务器与存储资源,自动更新补丁,自动运行虚拟机部署与镜像备份(Snapshot Backup)等能力,Windows Azure被安装在数据中心的所有服务器中,并且定时和中控软件:Windows Azure Fabric Controller进行沟通,接收指令以及回传运行状态数据等等,系统管理人员只要通过Windows Azure Fabric Controller就能够掌握所有服务器的运行状态,Fabric Controller本身是融合了很多微软系统管理技术的总成,包含对虚拟机的管理(System Center Virtual Machine Manager),对作业环境的管理(System Center Operation Manager),以及对软件部署的管理(System Center Configuration Manager)等,在Fabric Controller中被发挥得淋漓尽致,如此才能够达成通过Fabric Controller来管理在数据中心中所有服务器的能力。

Windows Azure环境除了各式不同的虚拟机外,它也为应用程序打造了分散式的巨量存储环境(Distributed Mass Storage),也就是Windows Azure Storage Services,应用程序可以根据不同的存储需求来选择要使用哪一种或哪几种存储的方式,以保存应用程序的数据,而微软也尽可能的提供应用程序的兼容性工具或接口,以降低应用程序移转到Windows Azure上的负担。

Windows Azure不但是开发给外部的云应用程序使用的,它也作为微软许多云服务的基础平台,像Windows Azure SQL Database或是Dynamic CRM Online这类的在线服务。

综述

Windows Azure服务平台现在已经包含如下功能:网站、虚拟机、云服务、移动应用服务、大数据支持以及媒体功能的支持。

网站

允许使用 ASP.NET、PHP 或 Node.js 构建,并使用 FTP、Git 或 TFS进行快速部署。支持 SQL Database、Caching、CDN及Storage。

Virtual Machines

在Windows Azure上您可以轻松部署并运行 Windows Server 和 Linux 虚拟机。迁移应用程序和基础结构,而无需更改现有代码。支持 Windows Virtual Machines、Linux Virtual Machines、Storage、Virtual Network、 Identity等功能。

Cloud Services

是Windows Azure 中的企业级云平台,使用平台即服务 (PaaS) 环境创建高度可用的且可无限缩放的应用程序和服务。支持多层方案、自动化部署和灵活缩放。支持Cloud Services、SQL Database、Caching、Business Analytics、Service Bus、Identity。

Mobile 服务

是Windows Azure提供的移动应用程序的完整后端解决方案,加速连接的客户端应用程序开发。在几分钟内并入结构化存储、用户身份验证和推送通知。支持SQL Database、Mobile 服务。并可以快速生成Windows Phone、Android或者iOS应用程序项目。

大型数据处理

Windows Azure 提供的海量数据处理能力,可以从数据中获取可执行洞察力,利用完全兼容的企业准备就绪 Hadoop 服务。PaaS 产品/服务提供了简单的管理,并与 Active Directory 和 System Center 集成。支持Hadoop、Business Analytics、Storage、SQL Database、及在线商店 Marketplace。

Media 媒体支持

支持插入、编码、保护、流式处理,可以在云中创建、管理和分发媒体。此 PaaS 产品/服务提供从编码到内容保护再到流式处理和分析支持的所有内容。支持CDN及Storage存储。

开发步骤编辑

微软公司的旗舰开发工具Visual Studio中有一套针对Windows Azure开发工作的工具,这一点并不让人感到惊奇。你可以通过Visual Studio安装Windows Azure工具;具体的安装步骤可能因版本而有所不同。当你创建一个新项目时,你将能够选择一个Windows Azure项目并为你的项目添加web和worker角色。Web角色是专为运行微软IIS实例而设计的;而worker角色则是针对禁用微软IIS的Windows虚拟机的。一旦你已创建了你的角色,那么你就可以添加特定应用程序的代码了。

azure对象存储免流量(azure document)

Visual Studio可允许你设置服务配置参数,例如实例数、虚拟机容量、是使用HTTP还是HTTPS以及诊断报告水平等。通常情况下,在启动阶段,它可以帮助用户在本地进行应用程序代码调试。与在Windows Azure中运行应用程序相比,在本地运行你的应用程序可能需要不同的配置设置,但Visual Studio可允许用户使用多个配置文件。而你所需要做的,只是为每一个环境选择一个合适的配置文件。

这个工具包还包括了Windows Azure Compute Emulator,这个工具可支持查看诊断日志和进行存储仿真。

如果Windows Azure工具中缺乏一个针对发布你的应用程序至云计算的过程简化功能,那么这样的一个工具将是不完整的。这个发布应用程序至云计算的功能可允许你指定一个配置与环境(如生产)以及一些先进的功能,例如启用剖析和IntelliTrace,后者是一个收集与程序运行相关详细事件信息的调试工具,它可允许开发人员查看程序在执行过程中发生的状态变化。

当开发和部署代码时,Visual Studio的Windows Azure工具是比较有用的。除此之外,用户应当注意这些代码是专为云计算环境而设计的,尤其是为一个分布式环境设计的。以下的小贴士可有助于防止出现将导致糟糕性能、漫长调试以及运行时分析的潜在问题。

专为云计算而设计的分布式应用程序(或者其它的网络应用程序)的一个基本原则就是,不要在网络服务器上存储应用程序的状态信息。确保在网络服务器层不保存状态信息可实现更具灵活性的应用程序。你可以在一定数量的服务器前部署一个负载平衡器而无需中断应用程序的运行。如果你计划充分利用Windows Azure能够改变所部属服务器数量的功能,那么这一点是特别重要的。这一配置对于打补丁升级也是有所帮助的。我们可以在其它服务器继续运行时为一台服务器打补丁升级,这样一来就能够确保你的应用程序的可用性。

即便是在分布式应用程序的应用中,也有可能存在严重影响性能的瓶颈问题。例如,你的应用程序的多个实例有可能会同时向数据库发出查询请求。如果所有的调用请求是同步进行的,那么就有可能消耗完一台服务器中的所有可用线程。C#和VB两种编程语言都支持异步调用,这一功能可以有助于减少出现阻塞资源风险的可能性。

为最佳性能进行规划

在云计算中维持足够性能表现的关键就是,一方面扩大你运行的服务器数量,一方面分割你的数据和工作负载。诸如无状态会话的设计功能就能够帮助实现数据与工作负载的分割和运行服务器数量的扩容。完全杜绝(或者至少最大限度地减少)跨多个工作负载地使用全局数据结构将有助于降低在你的工作流程中出现瓶颈问题的风险。

如果你将把一个SQL服务器应用程序迁往Windows Azure,那么你就应当评估如何最好地利用不同云计算存储类型的优势。例如,在你的SQL服务器数据库中存储二进制大对象(BLOB)数据结构可能是有意义的,而在Windows Azure云计算中,BLOB存储可以降低存储成本且无需对代码进行显著修改。如果你使用的是高度非归一化的数据模型,且未利用SQL服务器的关系型运行的优势(例如连接和过滤),那么表存储有可能是你为你的应用程序选择的一个更经济的方法。

选择理由

Windows Azure 是微软研发的公有云计算平台。该平台可供企业在互联网上运行应用,并可进行扩展。通过Windows Azure,企业能够在多个数据中心快速开发、部署、管理应用程序 。

Windows Azure 提供了企业级服务等级协议(SLA)保证,并且可以轻松在位于不同城市的数据中心实现万无一失的异地多点备份,为企业应用提供了可靠的保障。

独到之处

可靠

Windows Azure 的平台设计完全消除单点故障可能,并提供企业级的服务等级协议(SLA)。它可以轻松实现异地多点备份,带来万无一失的防灾备份能力,让用户专心开发和运行应用,而不是担心基础设施。2010 年 2 月正式商用以来,WindowsAzure 已经成为波音、宝马等大量跨国公司的选择。

灵活

Windows Azure 同时提供 Windows 和 Linux 虚拟机,支持 PHP、Node.js、Python 等大量开源工具。它提供了极大的弹性,能够根据实际需求瞬间部署任意数量虚拟机、调用无限存储空间。Windows Azure 订价灵活,并支持按使用量支付,帮助用户以最低成本将新服务上线而后再按需扩张。

价值

WindowsAzure 提供了业界顶尖的云计算技术,它的云存储技术性能、扩展性和稳定性这三项关键指标均在 Nasuni 的权威测试中拔得头筹。Windows Azure 能够与企业现有本地 IT 设施混合使用,为存储、管理、虚拟化、身份识别、开发提供了从本地到云端的整合式体验。

+功能

基础设施服务

根据公司具体需求构建基础设施几分钟内完成 Windows Server 或 Linux 虚拟机部署。无需更改代码即可将公司应用程序和基础设施迁移至云端。

功能:Windows 虚拟机、Linux 虚拟机、存储、虚拟网络、身份标识

云服务

打造企业级云平台在平台即服务(PaaS) 环境下开发可无限扩容的应用程序和服务。支持多层方案、自动化部署和弹性扩容。

功能:云服务、SQL 数据库、缓存、服务总线、身份标识

存储

满足数据需求的最优解决方案从 SQL 数据库到 BLOB 存储再到表格(Table),满足存储相关的任何需求。

功能:存储、SQL数据库

SQL 数据库

全能的关系型数据库服务使用熟悉的工具和功能强大的 SQL Server 技术快速创建、扩展应用程序并将其延伸至云中。

功能:SQL数据库

益处编辑

Azure服务平台的设计目标是用来帮开发者更容易地创建web和互联设备的应用程序。它提供了最大限度的灵活性、选择和使用现有技术连接用户和客户的控制。

利于开发者过渡到云计算

世界上数以百万计的开发者使用.NET Framework和Visual Studio开发环境。利用Visual Studio相同的环境创建可以编写、测试和部署的云计算应用。

快速获得结果

应用程序可以通过点击一个按钮就部署到Azure服务平台,变更相当简单,不需要停工修正,是个试验新想法的理想平台。

想象并创建新的用户体验

Azure服务平台可以让你创建Web、手机、使用云计算的复杂应用。与 Live Services连接可以访问4亿Live用户,新的使用新方式与用户交流的机会。

基于标准的兼容性

为了可以和第三方服务交互,服务平台支持工业标准协议,包括HTTP、REST、SOAP、 RSS和 AtomPub.你可以方便地集成基于多种技术或者多平台的应用。

优势编辑

数据和服务的安全性

保护客户数据,服务隐私和信息安全是我们的头等大事。我们将使用在服务企业客户,提供在线服务方面的数十年的经验应用于 Windows Azure 平台。数据完全由客户自主控制。中国地区 WindowsAzure 服务存储的所有数据都将被加密,并且只有客户才有密钥。

开源软件支持

Windows Azure 支持大量开源应用程序、框架和语言,并且数量仍在不断增加,这要归功于微软与开源社区的协作。我们清楚开发人员希望使用最适合自身经验、技能和应用程序需求的工具,而我们的目标就是让开发人员能够随意选择自己需要的工具。

融合本地 IT 设施和公有云

Windows Azure 是最适合混合 IT 环境的公有云平台。它为企业提供了从本地到云端的整合式体验,覆盖包括存储、管理、虚拟化、身份识别、开发在内的方方面面,帮助您轻松将公有云融入自己的 IT 资产组合。

网络访问性能保证

Windows Azure 在中国运行于北部和东部两个主要城市的数据中心,将帮助客户解决异地灾备问题。数据中心将有多家主流运营商接入,以此提高网络服务性能。

SDK开发工具编辑

Azure服务平台使开发者能够在原有的技能、工具和技术(如微软的.NET Framework,Visual Studio等)的基础上,进一步提高应用程序开发的灵活性和有效性。开发者也可以选

Windows Azure

Windows Azure

择其他的商业或者开源的开发工具或技术,然后通过Azure服务平台提供的通用Internet标准,比如HTTP、REST、WS-*和AtomPub来进行操作。 微软为我们提供了云计算服务Azure相关的开发工具包,包括以下三个组成部分:

(1)Complete offline development environment, including computation and storage services

(2)Complete command-line SDK tools and samples

(3)Visual Studio add-in that enables local debugging

Windows Azure SDK应运而生,对微软云计算感兴趣的程序员们可以适当关注. 微软的SDK(软件开发工具包)工具包运用Java和Ruby语言。这个工具包可使Java和Ruby开发者依托Azure平台应用.NET服务。不过,到目前为止,该工具包只允许Java和Ruby开发者在微软数据中心编写服务程序。官方下载地址:Windows Azure Software Development KIT (January 2009 CTP)

获入华牌照编辑

11月1日,微软宣布与国内互联网基础设施服务提供商世纪互联达成合作,实现微软企业级云服务——Office 365和Windows Azure在中国的落地。根据双方签订的协议,微软将向世纪互联授权技术,由后者运营这两项服务。

通过这种模式,微软终于实现旗下公有云计算平台Windows Azure在中国的落地。这将掀开外资企业进军中国云计算市场的序幕,但并不会对国内云计算厂商造成太大冲击。 [5]

2013年6月6日 世纪互联提供的Windows Azure 中国版本正式启动测试。

案例

PPTV亚洲电视网

快速提供覆盖北美、东南亚和欧洲市场的电视云服务,节省上百万美元前期 IT 设施投入。

背景

PPTV是华人市场影响力最大的网络视频媒体之一,在全球范围拥有超过 3 亿观众,拥有丰富的视频直播经验和技术积累。过去几年陆续有海外运营商和电视台联系 PPTV,希望 PPTV 帮助提供网络电视解决方案。PPTV 调研后意识到这是一个用户规模上亿的潜在市场,于两年前开始筹备基于云的亚洲电视网(ATN)。

PPTV 系统希望通过亚洲电视网为世界各地内容提供商提供一套低门槛的付费电视云平台,让他们将内容上传到 ATN平台,并授权给其它国家/地区的服务运营商使用。

但这么做并不容易,由于视频服务对网速的要求很高,该平台必须在不同地区提供网速以保证观众观看体验。传统的做法是在每个海外市场建设数据中心。这么做成本不菲,而且会拖慢业务拓展速度。

解决方案

PPTV 决定与微软公司合作,利用 Windows Azure 公有云平台的海外数据中心网络将亚洲电视网带向全球市场。双方在 2012 年 7 月正式签订合作协议。

亚洲电视网的整个开发过程全部在 Windows Azure 云端完成。其视频点播、分发平台的技术基本沿用 PPTV 自己在国内的私有云平台PPCloud。这个平台拥有一套P2P+CDN的内容分发系统,在视频处理上有自己的编码、转码方式,支持多码率的流媒体。

Windows Azure 平台合作伙伴云角(Yungoal)帮助 PPTV 将PPCloud的核心技术迁移至 Windows Azure 云平台。客户上传的视频内容通过 Blob 存储进行保存,并由 Windows Azure 在全球的 CDN 网络将内容送达离观众最近的节点,确保视频播放速度。

【Azure 存储服务】关于对Azure Storage Account 的 Folder 权限管理和设定

在一个storage account下面有很多folder,需要对不同的folder设置不同的权限给到不同的用户来访问使用,怎么样设定比较合理?

详情可以参考此文档:

1:生成共享访问签名URL(选择相应的权限)

2:通过Azure门户,进入具体的某一个Container 或者是具体的某一个文件,文件夹中,同样通过共享访问签名方式(SAS)生成访问的URL

3:通过生成的URL进行访问即可访问对于的文件夹,可以在 Microsoft Azure Storage Explorer 工具中通过该连接URL查看

存储 Blob 数据所有者 : 对 Blob 存储容器和数据的完全访问权限。 此访问权限允许安全主体设置项的所有者,以及修改所有项的 ACL。

存储 Blob 数据参与者 : 对 Blob 存储容器和 Blob 的读取、写入和删除访问权限。 此访问权限不允许安全主体设置项的所有权,但它可以修改安全主体拥有的项的 ACL。

存储 Blob 数据读者 : 读取和列出存储容器与 Blob。

这种方式主要是基于AAD应用注册授权来进行的访问控制。

使用 Azure 存储资源管理器在 Azure Data Lake Storage Gen2 中管理 ACL:

Azure Data Lake Storage Gen2 中的访问控制列表:

如何在Windows store应用中安全的使用Azure Blob存储

我们演示了在Windows store应用中使用Azure Blob存储的基本步骤,但是,对于一个商业应用来说,保证数据的安全性是很重要的一环。上一篇文章的代码中,对Blob的访问权限是通过PublicAccess来控制的,理论上如果PublicAccess设置为OFF,那么第三方就应该无法访问该Blob。但是这里有一个明显的安全隐患:我们的代码中明文存储了Access Key字符串,而通过一些反编译工具第三方能够很容易的获得这个字符串。如果这个Access Key被暴露的话,那么Blob中的内容就毫无秘密可言了。为此,我们需要找到一个可靠的办法来保证验证信息的安全。

为了解决这个问题,我们需要做到以下两条:

1.保证用户在未经授权的情况下无法获得验证信息。

2.用户通过授权后获得的验证信息不能被重复使用。

对于第一条,我们可以自己建立一个服务器,与该服务器的连接需要先进行身份验证,然后从服务器上获得用于连接Windows Azure 存储服务的验证信息。不过我们既然已经使用了Windows Azure,那么完全可以使用Windows Azure 云服务来为我们做同样的事情。

对于第二条,Windows Azure 存储服务提供了共享访问签名(Shared Access Signature)来保证验证信息的时效性。共享访问签名是一个在特定时间间隔内授予容器、Blob以及其他存储对象受限访问权限的 URI。也就是说,共享访问签名是一个URI, 客户端通过这个URI能够在规定时间内访问容器和Blob, 而超过了时间段的话这个URI就无效了,需要重新获取。

结合这两种方式,那么我们就能够实现对验证信息的保护了。我们将生成共享访问签名的代码放在Windows Azure云服务上,客户端通过访问云服务接口获得共享访问签名来访问Windows Azure存储服务商的Blob。

那么让我们来看看如果要安全的实现与前一篇文章相同的功能所需要完成的步骤。

一. 创建云服务并实现服务接口:

1. 从以下链接下载并安装Azure Cloud Service SDK For .NET:

针对不同的Visual Studio版本,您需要安装相应的SDK,这样在您的Visual Studio的项目模板中会出现Azure Cloud Service的模板。

2. 通过Azure Cloud Service模板创建一个Cloud服务,在项目向导中加入WCF Service Web Role:

完成后项目向导会自动建立两个项目,一个是Cloud Service项目WindowsAzure1,另一个是提供WCF Service的Web Role项目WCFServiceWebRole1。WCFServiceWebRole1中会生成一个名为IService1的接口及实现该接口Service1类。

3. 修改WCFServiceWebRole1项目中的IService1接口添加用于获取共享访问签名的接口函数:

public interface IService1

{

[OperationContract]

string[] GetUploadSAS(string ContainerName, string BlobName);

[OperationContract]

string[] GetDownloadSAS(string ContainerName, string BlobName);

}

这两个接口函数一个用来获得用于上传的共享访问签名,一个用来获得用于下载的共享访问签名,它们都接收两个参数:容器名称和Blob名称,返回一个含有两个字符串的字符串数组,第一个字符串用来存放用于访问Blob的URI,第二个字符串用来存放共享访问签名。

4. 在WCFServiceWebRole1项目的Service1类中实现GetUploadSAS函数用来返回用于上传的共享访问签名,与上一篇演示的图片上传代码类似,我们首先使用账号名与访问密钥建立Blob客户端对象实例,然后根据容器名得到容器的对象实例,如果容器不存在的话则建立容器并且关闭对匿名用户的访问权限。然后,我们通过Blob名获得Blob块对象实例,通过该实例调用GetSharedAccessSignature获得一个具有5分钟读写访问权限的共享访问签名。

public string[] GetUploadSAS(string ContainerName, string BlobName)

{

string[] blobInfo = new string[2];

if (string.IsNullOrEmpty(ContainerName) || string.IsNullOrEmpty(BlobName))

{

throw new ArgumentNullException();

}

var credentials = new StorageCredentials(accountName, accessKey);

var account = new CloudStorageAccount(credentials, true);

var blobClient = account.CreateCloudBlobClient();

var container = blobClient.GetContainerReference(ContainerName);

container.CreateIfNotExists();

BlobContainerPermissions containerPermissions = new BlobContainerPermissions();

containerPermissions.PublicAccess = BlobContainerPublicAccessType.Off;

container.SetPermissions(containerPermissions);

var blob = container.GetBlockBlobReference(BlobName);

blobInfo[0] = blob.Uri.AbsoluteUri;

blobInfo[1] = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()

{

SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(5),

Permissions = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Read

});

return blobInfo;

}

5. 在WCFServiceWebRole1项目的Service1类中实现GetDownloadSAS函数用来返回用于下载图片的共享访问签名,代码与步骤4类似,首先使用账号名与访问密钥建立Blob客户端对象实例,然后根据容器名得到容器的对象实例,接下来就可以通过Blob名获得Blob块对象实例,调用该实例的GetSharedAccessSignature函数来获得一个具有5分钟只读访问权限的共享访问签名:

public string[] GetDownloadSAS(string ContainerName, string BlobName)

{

string[] blobInfo = new string[2];

if (string.IsNullOrEmpty(ContainerName) || string.IsNullOrEmpty(BlobName))

{

throw new ArgumentNullException();

}

var credentials = new StorageCredentials(accountName, accessKey);

var account = new CloudStorageAccount(credentials, true);

var blobClient = account.CreateCloudBlobClient();

var container = blobClient.GetContainerReference(ContainerName);

var blob = container.GetBlockBlobReference(BlobName);

blobInfo[0] = blob.Uri.AbsoluteUri;

blobInfo[1] = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()

{

SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(5),

Permissions = SharedAccessBlobPermissions.Read

});

return blobInfo;

}

6. 完成上述代码以后,就可以对该Azure应用点击Build-Publish将该服务发布Windows Azure上去了:

a. 发布向导首先会让您提供您的Windows Azure账号,如果您已经登录过,那么可以直接在下拉框中选中,如果您是第一次登录,那么需要按Sign In按钮输入账号信息。然后按Next进入下一页:

b. 如果您的Windows Azure上没有创建过Cloud Service,那么您需要创建一个新的Cloud Service,并且设定服务器位置。或者您也可以选择覆盖一个已有的Cloud Service。这里我们将新建的Cloud Service取名为SASService:

c. 完成设置之后,发布向导会将该Cloud Service及应用部署到您的Windows Azure上去,您可以通过Windows Azure管理门户确认该Cloud Service以及应用是否已经部署成功。当Cloud Service部署完成后,Service Status会显示Created, Production会显示Running:

d. 点击该Cloud service的URL进入提供WCF Service的网站,我们可以看到,该网站提供的WCF Service是Service1.svc。所以访问该WCF Service的URL就是。

e. 打开这个URL,确认该WCF Service可用,并且可以得到在客户端调用该服务的C#示例代码。

二. 在客户端使用共享访问签名来上传和下载图片。

1. 在Windows Store应用项目中点击Project-Add service Reference,将刚才获得的service URL填入Address中,按确定添加该Service Reference:

2. 在Windows Store应用中添加一个用于图片上传的按钮,在Click的处理函数中加入上传代码。我们首先创建WCF Service客户端实例,然后通过调用该实例的GetUploadSASAsync函数获得访问Blob的URI和共享访问签名。根据共享访问签名,我们可以生成存储证明进而通过Blob的URI访问该Blob。得到了该Blob的实例之后,就可以调用UploadFromFileAsync或UploadFromStreamAsync函数来上传文件或流数据到Windows Azure的存储服务了。

// Use the client to call GetUploadSASAsync on the cloud service.

Service1Client client = new Service1Client();

var blobInfo = await client.GetUploadSASAsync("imagecontainer", "imageblob");

StorageCredentials credentials = new StorageCredentials(blobInfo[1]);

//upload from a file

StorageFolder library = Windows.Storage.KnownFolders.PicturesLibrary;

var img = await library.GetFileAsync("image.jpg");

CloudBlockBlob blockBlob = new CloudBlockBlob(new Uri(blobInfo[0]), credentials);

await blockBlob.UploadFromFileAsync(img);

//upload from a stream

var stream = await img.OpenReadAsync();

await blockBlob.UploadFromStreamAsync(stream.GetInputStreamAt(0));

3. 同样,再添加一个用于下载图片的按钮,在Click的处理函数中加入下载代码,过程与步骤二类似,只是这里需要调用GetDownloadSASAsync来获得Blob的URI和共享访问签名。在获得了Blob实例之后需要调用DownloadToFileAsync和DownloadToStreamAsync来下载Blob数据到文件或者数据流中:

// Use the client to call GetDownloadSASAsync on the cloud service.

Service1Client client = new Service1Client();

var blobInfo = await client.GetDownloadSASAsync("imagecontainer", "imageblob");

StorageCredentials credentials = new StorageCredentials(blobInfo[1]);

//download the file to the pictures library

StorageFolder library = Windows.Storage.KnownFolders.PicturesLibrary;

var img = await library.CreateFileAsync("image1.jpg", CreationCollisionOption.ReplaceExisting);

CloudBlockBlob blockBlob = new CloudBlockBlob(new Uri(blobInfo[0]), credentials);

await blockBlob.DownloadToFileAsync(img);

//download to the in-memory stream

InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream();

await blockBlob.DownloadToStreamAsync(stream.GetOutputStreamAt(0));

完成了以上两大步骤以后,我们就可以通过共享签名的方式来安全的存取Windows Azure上的Blob数据了。

如何解决Windows Azure Storage的共享存储问题

我们在传统IDC托管环境运维网站的时候,经常会遇到多台Web服务器实现负载均衡的时候,后面使用同一个网络存储(SAN)。通过这种方式,可以解决文件同步的问题。

在Windows Azure公有云环境,想实现上面的架构会比较困难,主要原因有:

1.Azure公有云不允许用户把网络存储(SAN)放置在Azure数据中心

2.如果使用单独一台Azure Virtual Machine模拟网络存储,则这一台Azure VM会出现单点故障。

需要手动创建一台Active Azure VM和一台StandBy Azure VM。当Active VM宕机的时候,由StandBy VM进行托管。

在Azure File出现之前,对于这种共享存储的方案可以提供的解决方案是,让用户基于Azure Storage进行二次开发,将需要共享的文件保存在Azure Storage中。但是这样的开发代价太大了,非常不方便。

现在可以使用Azure File来实现共享文件夹的功能,让多台Azure Virtual Machine使用同一个Azure File

Azure File特点如下:

1.是一个PaaS服务,提供99.9% SLA,不会出现单点故障

2.可以同时被多台Azure VM共享,解决文件共享的问题

3.基于SMB2.1协议,可以被Windows和Linux同时使用。

4.可以通过REST API访问

接下来,笔者做一个简单的DEMO,给各位简单介绍一下Azure File。工作内容主要分为以下几步:

一.准备工作

二.使用PowerShell创建文件共享

三.在Azure Virtual Machine装载Azure File

一、准备工作:确认Azure Storage是否可以使用Azure File功能

1.Azure File功能目前是Preview阶段,如果我们之前创建的老的Azure Storage Account,是无法查看到Azure File的。比如笔者很久以前在香港数据中心(East Asia)创建的Azure Storage Account为leivms,是没有Azure File功能的

为了演示相关的功能,笔者创建了新的存储账号,命名为leifiledemo,创建在香港数据中心(East Asia)

可以看到,上图中已经出现了Files,我们可以使用这个命名空间,来创建Azure File。

2.接下来,我们需要准备以下环境:

-创建一个新的虚拟网络LeiVNet

-创建2台Windows VM,命名为LeiZhangVMOne和LeiZhangVMTwo

-这2台VM使用通过一个Cloud Service Name:LeiZhangVM

-这2台VM设置高可用集:LeiAvbSet

-这2台VM保存在我们之前创建的存储账号leivms,注意这个存储账号和我们之前创建的leifiledemo不同

-注意:我们Azure VM所在的存储账号,和Azure File所在存储账号,必须在同一个数据中心。这里笔者使用的都是香港数据中心(East Asia)

二、使用PowerShell创建文件共享

1.为存储账户和密钥创建上下文

执行以下命令:

$ctx=New-AzureStorageContext account-name account-key

比如笔者在步骤一中创建的Azure File名称为leifiledemo,则执行以下命令

$ctx=New-AzureStorageContext leifiledemo [存储账号的密钥]

2.创建新的文件共享,这里我们创建名为sampleshare的新共享

执行以下命令:

$s = New-AzureStorageShare sampleshare -Context $ctx

三、在Azure Virtual Machine装载Azure File

1.我们通过Remote Desktop,登陆之前创建的Azure VM LeiZhangVMOne

2.打开Azure VM的PowerShell

3.保存虚拟机的存储账户凭据

为了保证Azure VM在重启时,允许Windows自动连接到文件共享,我们需要执行以下命令:

cmdkey /add:.file.core.windows.net /user: /pass:

笔者的环境中,我们执行以下命令:

cmdkey /add:leifiledemo.file.core.windows.net /user:leifiledemo /pass:[存储账号的密钥]

在LeiZhangVMOne这台VM上执行的截图如下:

4.装载Azure File

我们可以使用net use命令,将Azure File装载为本地共享存储

net use z: \\.file.core.windows.net\

在笔者的环境中,我们执行以下命令

net use z: \\leifiledemo.file.core.windows.net\sampleshare

我们可以查看到挂载成功的共享存储。

重复执行步骤三的命令,我们可以同时在两台Azure VM上挂载共享存储。