MIX 09- Data Services 1.5, Windows Azure Tools, Silverlight 3, Expression Blend 3,ASP.NET MVC 1.0 and .NET RIA Services

ADO.NET Data Services v1.5 CTP1 http://blogs.msdn.com/astoriateam/archive/2009/03/16/ado-net-data-services-v1-5-ctp1-now-available-for-download.aspx download: http://www.microsoft.com/downloads/details.aspx?FamilyID=3e3d4eaf-227b-4ad3-ad0d-3613db8aa9df March CTP of the Windows Azure Tools and SDK http://blogs.msdn.com/jnak/archive/2009/03/18/now-available-march-ctp-of-the-windows-azure-tools-and-sdk.aspx download: http://download.microsoft.com/download/8/4/2/84291A86-26A4-44AB-8024-5A6700324061/VSCloudService.exe Hotfix for Windows Azure Tools and SDK Hotfix: Native Debugging Improvements http://go.microsoft.com/fwlink/?LinkId=145526 Hotfix: Support for FastCGI on the Development Fabric http://support.microsoft.com/kb/967131 Silverlight 3 Beta Released! http://blogs.msdn.com/silverlight_sdk/archive/2009/03/18/silverlight-3-beta-released.aspx http://silverlight.net/getstarted/silverlight3/default.aspx download: VS Tools : http://go.microsoft.com/fwlink/?LinkID=143571 runtime: http://go.microsoft.com/fwlink/?LinkID=143433 SDK…

1

Azure Services探索—存储之Blobs存储

del.icio.us Tags: Windows Azure,Blob 上一篇是关于Azure Service 的表存储,本篇来主要是针对Azure中另外一类特殊的存储-二进制等非结构化的存储,如果我们的Azure服务中有需要保存非传统或结构化的数据,如图片、声音及视频媒体等信息,那么我们就需要使用到Blob存储了。而Windows Azure平台提供了一个很不错的托管平台和编程模型。 Blob存储和Azure 表存储不同的是在概念上,之前我们看到表存储最重要的概念是实体(Entity)概念,实体里面包含属性。对应到Blob存储,对应实体,比较重要的概念是容器(Container) . 规则1:Blob数据是存储在容器中的,一个容器是一类Blob数据的集合,保存了一组Blob数据,容器本身有共享读取和私有不同的访问的策略;每个容器都关联一个元数据存储对象,用来记录Blob数据相关的属性;每个容器也有一个列表,列表记录了容器中所有的Blob数据。 Blob存储容器的概念如下图: Pictures source: ES04.pptx of PDC 2008-Windows Azure Storage–Essential Cloud Storage Services 帐号Sally下面有两个Blob存储容器,一个容器叫pictures,表示它是用来保存图片的;另外一个容器叫movies,表示它是用来保存视频数据的。Pictures容器中包含了两个Blob数据,分别是IMG001.jpg和IMG002.jpg。 规则2:Azure的Blob存储容器也是跟随和隶属于一个帐号的,一个账号下面可以建立多个Blob存储 容器,和表存储的表名一样容器名跟随在帐号名的范围内,你可以从访问的REST路径看出规律:http://<account>.blob.core.windows.net/<container>/<blobname> 如上图,容器pictures和movies分别隶属于sally这个帐户下。 规则3:Blob数据 是保存在不同的Blob存储容器中,一个Blob数据最大容量是50G,每个Blob数据在容器中有一个唯一的字符标示作为Blob数据名。每个Blob数据都可以有和它关联的属性描述,每一个属性是一个名值对,这些属性保存在容器的元数据中,在一个容器中,Blob数据的关联属性大小不能超过8K 如上图,IMG001.jpg,IMG002.jpg和MOV1.AVI是分别保存在不同容器的Blob数据,IMG001.jpg就是它的Blob数据名。 综合规则1,2,3 ,对于: http://sally.blob.core.windows.net/music/rock/rush/xanadu.mp3 这样一个访问标示,帐户名(Account)是:sally,Blob存储容器名(Container) 是:music,Blob数据名(BlobName )是:rock/rush/xanadu.mp3 规则4:上传一个Blob数据到某个Blob存储容器,如果一次上传的大小超过64M,则要进行分块(Blocks)多次上传,比如一个10G的电影,你可以分成2500个块,每个块4M大小,进行连续上传。分块后,每一个块都有一个唯一的编号或分块名称标示这个块。 有关分块相关的规则和操作场景和设计要点比较繁多,在本篇文章中不做过多的讨论。   接下来,我们来看一下,如何定义Blob数据容器以及Blob数据存取和访问的编程技术。操作的练习,我选用了Jim Nakashima的文章Windows Azure Walkthrough: Simple Blob Storage Sample 作为体验内容。 这个练习主要是熟悉Blob数据的创建和访问编程模型,运行后的界面如下图: 这个应用类似一个下载网站,你可以上传文件到Azure Blob存储中,针对每个上传的文件,上传的同时,你可以添加和文件相关的属性,将其保存到容器的元数据中。上传之后,我们会查询Blob存储容器,也可以进行删除容器中Blob数据的操作处理。基本上,覆盖了规则1,规则2和规则3的所有相关概念和理念。 由于Jim Nakashima的文章有十分详细的操作步骤,我就不一一论述操作步骤了,而是介绍重点的处理过程。 Azure…

1

Azure Services探索—在Azure服务中增加WCF服务

这篇文章要从Azure Service探索–存储之LocalStorage那篇文章激发的需求,因为在文件系统存储中,我们讲述了LocalStorage的不可共享性,当时又为了学习体验Worker Role的用法,就产生了这样的一个想法:首先还是在Web Role中定义一个临时的文件系统,然后再由Web Role提供一个WCF的服务,让Worker Role来调用,从而达到对这个临时文件系统的共享和写入。 其实变换一下,就是要解决如何在Azure 服务中提供一个 WCF服务,然后这个WCF如何被配置,以及被其他角色(Worker Role,其它的Web role)或另外一个Azure服务调用。   基本的界面设计如下,唉没创意,还是用之前的那个例子进行修改 前台的Web Role 界面没有变化,还是向一个LocalStorage中写入消息,但同时也提供一个WCF的服务,也可以向这个LocalStorage写入消息,而后台的Worker Role就定期的调用这个WCF服务,写入Ping信息。 流程确定之后,就可以开始操作了。 首先还是创建一个Web Role + Worker Role的项目 接着在服务定义文件中定义文件存储,然后再Web Role中复制之前的代码。F5 运行,没有问题,然后我们开始增加WCF服务   点击Web Role项目,选择增加一个新的选项(Add New Item),如下图, 之后定义一个WCF的ServiceContract 1: namespace HostingWCFServices_WebRole 2:  3: { 4:  5: [ServiceContract] 6:  7: public interface IMessageLogger 8:  9: { 10:  11: [OperationContract] 12:  13: void…

1

Azure Services探索—存储之表(Table)存储

del.icio.us Tags: Windows Azure,Table 本系列文章是一个有关Azure Services开发基础性的学习记录,由于时间有限,所以希望自己讨论和探索的过程是从零开始,到能够进行Azure Services基本的编程开发。相对于每个议题可能有非常深入的话题,我希望有时间能通过其他的文章来进行。本系列的定位基本上定位于,花20-30分钟时间,先下载代码,跟着阅读文章,运行获得相关的体验。 上一篇是关于Azure的队列存储,本篇是关于表存储的。理论上表存储应该是我们最熟悉的存储方式,它本身也是结构化的存储,类似于我们平时的关系型数据库的存储。不过这里首先要强调的还是编程思想的变化,Windows Azure 平台是云计算的平台,所以从设计开始,它的定位是托管方式的,全开放和分布式的。体现到Azure Service的表存储上也是一样,首先整个的表存储是租户式的设计,说到这里,一定有很多人会想起Saas中的多重租赁(Multi-tenancy)概念,并开始将Azure存储和其联系在一起联想翩翩了。Windows Azure 平台的存储设计是非常精巧的,我们先把焦点转回Azure Service是如何定义和操作表存储的。其中我们需要知道哪些理念。 规则1:Azure的表存储也是跟随和隶属于一个帐号的,一个账号下面可以建立多个表存储 ,和队列一样表名跟随在帐号名的范围内,你可以从访问的REST路径看出规律: http://<Account>.table.core.windows.net/<TableName> 规则2:数据是保存在表存储中的,一个表是一个实体的集合,保存了一组实体的信息,每一个实体记录是一个行记录;一个实体是该实体的关键属性和相关的属性的集合,保存了一组实体属性的信息,实体的每一个属性是一个名/值对,对应一列。Entities <->Rows ,Properties<-> Columns . 基本上Azure 表存储的概念如下图: Pictures source: http://blogs.msdn.com/jnak/archive/2008/10/28/walkthrough-simple-table-storage.aspx 套用上面的规则2,你可以发现一个联系人表是一个联系人实体的集合,保存了一组联系人的信息,每一个联系人记录是一个行记录;一个联系人是该联系人的关键属性和相关的属性的集合,保存了一组联系人属性(Name,Address)的信息,实体的每一个属性是一个名/值对(名字/小王,地址/北京王府井),对应一列。   规则3:一个实体固定有两个关键属性,这两个关键属性联合唯一标示一个实体。第一个关键属性是:PartitionKey,它是实体在数据库信息中的分区标示/区域关键字,第二个属性是RowKey,它是在某个分区内能够唯一标示该实体的关键字。 下图可以清晰地看到规则3的定义 Pictures source: ES07.pptx of PDC 2008-Windows Azure Tables:Programming Cloud Table Storage   文档(Document)是一个Azure的表存储,保存了一组文档实体。每一个文档对应一行记录,每一个文档包含关键属性(Document,Version) 和一些相关属性 (ChangedOn, Description);每一个属性是一个名值对,对应到数据库的一列。 根据规则3,PartitionKey其实对文档的一个细分或说颗粒化,用来作为分类/分区的标示,这个文档是FAQ文档还是样板文档,而RowKey属性在一个分类中,可以唯一标示和定位到这个文档。比如v2.0.1加上分类就可以唯一定位到v2.0.1版本的Examples文档。 其实这如何细分来确定这个颗粒度,是由应用来决定的,从上图可以看到,你可以在一个表里定义多个不同的文档分类关键字,也可以将整个表的PartitionKey都定义成一个,一样的关键字,这样分区就扩大到整个一张表,版本号就成为真正的关键字了。从规则3可以看出Azure的表存储的设计原则,一是侧重于直接贴近业务场景和实体对象,第二是要方便查询。 规则4:Azure运行环境会根据PartitionKey来对实体数据进行聚集和索引,PartitionKey是你进行实体查询的首要关键字,相当于你SQL 查询中最主要的Where条件。从伸缩性上来看,Azure运行环境会将不同分区的实体/数据放到不同的存储节点上,它尽力会将一个分区的数据(PartitionKey关键字相同的数据)放在一个存储节点上,而不是多个存储节点上,同时会对这个存储节点优先作分区的负载均衡(Automatically load balance partitions) Pictures…

1

Azure Service探索—存储之队列(Queues)存储

del.icio.us Tags: Windows Azure,Queues 之前的一篇探索是有关Azure服务的文件系统存储的,我们看到了LocalStorage的不可共享性和临时性,同样也是在那篇文章中我们也涉及到了Azure编程模型中两个比较重要的模型和角色,Web Role和Worker Role,了解Web Role和Worker role之间的关系,是使用和掌握队列存储的关键。 根据MSDN的官方定义: Web role: A web role is a Web application accessible via an HTTP and/or an HTTPS endpoint. A web role is hosted in an environment designed to support a subset of ASP.NET and Windows Communication Foundation (WCF) technologies. Worker role: A worker role is a…

2

Azure Service探索—存储之本地(LocalStorage)存储

del.icio.us Tags: Windows Azure Azure Service将整个服务对存储的需求抽象成四个对象,它们分别是Table存储,Blob存储,队列(Queues)存储和本地临时文件存储(LocalStorage)。其中Table存储和Blob存储基本上应用最常用的存储对象,也是托管环境中的重要能力之一,可以理解为这两类存储Azure平台是要按流量或大小来计费和收费的。LocalStorage存储和队列存储也是能力,它往往是提供给某种应用场景的一种工具和服务,不会用来计费,因为从架构和设计上,它们的使用是受限,用途是特定的。 首先来看一下,Azure Service的本地临时文件存储–就是LocalStorage。 LocalStorage 是Azure Service能够自由使用的一种文件系统的存储,也许在某种场景中,你可以需要文件系统方式的存储,比如Jim Nakashima提到的Sitemap例子的场景,我认为这只是技术上的FAQ,比如,以前你的ASP.NET的编程环境你可以自由访问App_Data目录甚至任何目录,ASP.NET的编程环境在Azure中则对应到Web Role的服务或模型,你可以用一个新的函数….等等。 更深层次的地考虑是,Azure Service是被托管在Azure 运行环境中的,首先它必须遵循Windows Azure trust policy,其次还需要考虑的传统编程风格到云计算的变化,因为在Azure 运行环境中你面对的可能是一堆编号标示的虚拟机的运行实例,其次还有一个Load Balance的限制,你应该建立这样的观念,所有在Azure 运行环境中运行的Azure Service实例都是负载均衡的,如果是文件系统,那么在不同的节点上,这个文件是不能同步。所以LocalStorage的存在注定是受限的功能,受到上面说的信任策略和负载均衡的限制,后面的例子,我们会看到这一点。 首先使用在编写Azure Services时使用LocalStorage是很方便的。步骤如下: 首先在服务定义文件ServiceDefinition.csdef中,定义一个LocalStorage的引用,比如: 1: <LocalStorage name="myFileStorage /> 或 1: <LocalStorage name="myFileStorage" sizeInMB="2"/>   sizeInMB是可选项,表示你要这个文件存储分配多大的空间。服务配置文件ServiceConfiguration.cscfg则不用配置了。 然后你就可以使用RoleManager.GetLocalResource()方法来获得Azure 运行环境分配成功的文件系统路径的引用,然后像操作文件一样(更像我们操作资源文件)操作它了。 1: ILocalResource resource = RoleManager.GetLocalResource("myLocStorage"); 2:  3: string path = Path.Combine(resource.RootPath, "messagesLogs.txt"); 4:  5: using (FileStream…

3

Windows Azure SDK and Tools for Visual Studio (Jan 2009 CTP)

see: January 2009 CTP of the Windows Azure Tools and SDK released   Download: Windows Azure Software Development Kit http://www.microsoft.com/downloads/details.aspx?familyid=80e3eabf-0507-4560-aeb6-d31e9a70a0a6&displaylang=en&tm Windows Azure Tools for Microsoft Visual Studio CTP http://www.microsoft.com/downloads/details.aspx?FamilyID=8e90b639-1ef0-4e21-bb73-fc22662911bc&displaylang=en

0

Hello Windows Azure–云端版本

之前有做过一个最简单的Windows Azure的应用-Hello Windows Azure,之后在2008年的圣诞节又获得了Invitation Code to Windows Azure‏,这样就可以测试一下云端版本的Windows Azure应用了,也就是真正的Windows Azure Service。 因为应用非常的简单,其实主要就是根据Jim Nakashima的文章Deploying a Service on Windows Azure,对整个Windows Azure Service的部署进行一个实践和演练。 你可以将这篇Blog作为Jim Nakashima文章的中文版或图形版,我会贴更多的图。 根据Jim Nakashima文章的规划,整个从开发阶段到部署到云端运行会分为三个阶段: 第一:完成一个开发环境中完整应用,开发,测试和运行完成。 第二:如果应用涉及到云端的Windows Azure存储,那么这个阶段可以将开发环境的应用配置以云端的数据库帐号,进行测试确保数据访问这部分功能完整,另外由于Windows Azure存储是比较分割和独立的,基本以一个唯一的标示代表一种数据存储的能力,所以需要另外一个用户标示或访问的帐号,这个标示需要配置在配置文件中,而配置文件也需要上传到Windows Azure管理门户上,所以这个阶段,可以理解为Windows Azure存储相关的测试、配置和部署准备。因为我的这个应用没有使用任何的Windows Azure存储,所以可以不考虑这一步。 第三:则是将应用部署到云端的Windows Azure运行环境中。所以这篇文章的着重在第三阶段,即如何将一个应用部署到Windows Azure运行环境中,并且将其运行起来。正如下图标明的Jim Nakashima给出的部署步骤图示。 搞清楚了之后,就可以开始进行了各项工作了 首先,需要访问Windows Azure的管理门户,创建项目,在Windows Azure的运行环境中创建你的应用标示,然后进行应用的上传和配置。 访问:http://go.microsoft.com/fwlink/?LinkID=128009 转化后可能是下面的地址,之后输入你的Windows Azure帐号和密码。 https://lx.azure.microsoft.com/Cloud/Provisioning/Templates.aspx 选择New Project选项。 由于Windows Azure的运行环境是共享的托管运行环境,所以Project Label你可以想象成一个应用标示,之后你会发现其实它未来也可以会作为一个二级的域名(云服务名称)标示,而对于Windows Azure的运行环境本身而言,这个应用会有一个唯一的代码和你的Project Label/应用标示进行对应。 之后Windows Azure管理门户会让你选择一个服务名,如果你的服务名和Project Label刚好一样,这个服务名作为一个二级域名的访问资源,它需要在整个Windows Azure的运行环境唯一,如果已经存在那么Windows Azure管理门户会提示你,让你重新设定一个…

0

Windows Azure in PDC 08

Developing and Deploying Your First Windows Azure Service https://channel9.msdn.com/pdc2008/ES01/ Windows Azure: Architecting & Managing Cloud Services https://channel9.msdn.com/pdc2008/ES02/ Windows Azure: Cloud Service Development Best Practices https://channel9.msdn.com/pdc2008/ES03/   Windows Azure: Essential Cloud Storage Services https://channel9.msdn.com/pdc2008/ES04/ Windows Azure: Modeling Data for Efficient Access at Scale https://channel9.msdn.com/pdc2008/ES07/

0

Windows Azure Resource

Windows Azure SDK  -msdn http://msdn.microsoft.com/en-us/library/dd179367.aspx Microsoft Cloud Computing Tools–msdn http://msdn.microsoft.com/en-us/vstudio/cc972640.aspx Azure Services Developer Portal —Azure upload http://go.microsoft.com/fwlink/?LinkID=128009 Cloudy in seattle –Jim Nakashima http://blogs.msdn.com/jnak/default.aspx Windows Azure Tools for Visual Studio http://blogs.msdn.com/gusperez/ F# on Windows Azure http://blogs.msdn.com/lukeh/default.aspx Run ASP.NET MVC on Windows Azure http://www.aaronlerch.com/blog/2008/11/01/run-aspnet-mvc-on-windows-azure/ Using Windows Azure SDK with SQL Server 2005/2008 http://www.indiangeek.net/2008/10/29/using-windows-azure-with-sql-server-20052008/ Design Strategies to Prepare…

1