安装Silverlight

开发Silverlight

.net

Windows Phone 7开发工具Beta版已发布

Scott Guthrie 博客中文版 - 周三, 07/28/2010 - 15:48

[原文发表地址]:Windows Phone 7 Developer Tools Beta Released

[原文发表时间]:2010/7/12 10:38 PM

 

今天早些时候,我们发布了Windows Phone 7开发工具的Beta版本,你可以从这里下载。

Windows Phone开发工具包里都有些什么

在Beta版 的Windows Phone开发工具包里:

1. 适用于Windows Phone的Visual Studio 2010体验版——一个新的、免费的Visual Studio 2010的体验版本。

2. 适用于Windows Phone的Blend体验版——一个新的、免费的专注于Windows Phone 7开发的Blend体验版本。

3. 适用于Windows Phone7的Silverlight

4. 适用于Windows Phone 7的XNA Game Studio

在开发工具包里面已经集成了一个手机模拟器,你可以用它在笔记本或者桌面电脑上方便地开发和测试Windows Phone 7应用程序,这样就不需要一个真的手机了。它有硬件加速功能、在多点触摸显示屏上支持多点触控事件,另外在它上面调试和测试手机程序也相当的简单。

为开发者准备的设备

除了可以通过模拟器测试程序以外,为开发者准备的手机预先发行版在这个月也即将上市。你可以从Windows Phone 7团队的这篇博客中了解这个计划,注册并领取一个。

了解更多详情

前一阵子我发表了一篇很好的手把手教程,讲解了如何使用Visual Studio 2010体验版来开发一个推特(Twitter)搜索程序。它很好地演示了使用Silverlight和Visual Studio Windows Phone工具包开发一个应用程序有多简单。你可以点击这里阅读这篇文章。

Windows Phone 7团队今天发表的博客介绍了很多关于今天新发布版本的细节。它也提及了两个新的Silverlight控件——Panorama和Pivot控件。你可以用它们实现新的Windows Phone 7导航风格。虽然今天的Beta版本里没有包含这两个控件,但是接下来几周内发布的更新会包括它们。

如果你使用过以前发布的Windows Phone 7 CTP版本,请参阅Jaime的“将基于Windows Phone CTP版本的应用程序迁移到Beta版”(Migrating Applications from the Windows Phone April CTP Refresh to the Beta)。它非常详细地讲解了更新你现有代码的方法。

卸载以前的CTP版本

更新:有些用户向我们报告了在卸载以前的Windows Phone 7开发工具包CTP版本时碰到了问题。Amit的这篇博客讲解了修复方法。Aaron也写了篇博客帮助你在不完全安装XNA Game Studio的时候清除它的方法。

希望这能对您有所帮助。

附:[除了写博客以外,我现在也使用推特(Twitter)来及时更新状态和分享链接,您可以到这个地址来关注我一下:twitter.com/scottgu]

标签:Visual Studio, .NET, Community News, Silverlight, Windows Phone


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • [SDK]最新SharePoint 2010 SDK下载地址
  • VS2010 生产效率提升,第二部分
  • 用智能跟踪(IntelliTrace)窥入云端
  • “SharePoint 2010应用程序开发指南”节选 - 第二章 使用Visual Studio 2010 - 第一节
  • 非域,非匿名用户访问远程企业服务的详细步骤
  • 调用远程的企业服务的安全问题
  • ECB菜单控制器(for SharePoint 2007)
  • VB 2010 的自动属性, 集合初始化器以及隐线连续支持
  • 当Debug时弄平类的层次
  • Visual Studio 2010提高的生产力 - 第一部分

7月9号的精选好文链接

Scott Guthrie 博客中文版 - 周一, 07/26/2010 - 16:06

[原文发表地址]:July 9th Links: ASP.NET, ASP.NET MVC, jQuery, Silverlight, WPF, VS 2010

[原文发表时间]:2010/7/9, 12:33 AM

 

这里是上次我的精选好文链接系列。另外我同时在写其他的博客系列,请参看VS 2010和.NET 4系列和ASP.NET MVC 2系列。

ASP.NET

· 扩展ASP.NET输出缓存(Extending ASP.NET Output Caching):Scott Matchell写了一篇很好的文章,探讨了如何利用ASP.NET 4中可扩展的缓存提供程序API来实现一个更强大的输出缓存机制。另外你也可以通过阅读我的这篇文章来了解ASP.NET 4中对输出缓存的改进。

· 安装和配置Windows Server AppFabric及“高速”内存缓存(Installing and Configuring Windows Server AppFabric and “Velocity” Memory Cache):Scott Hansleman有一篇不错的博客文章描述了安装和配置Windows Server AppFabric的方法。Windows Server AppFabric由微软免费在应用程序服务器中提供。在不到10分钟的时间里,你就可以启用它的“高速”内存缓存,并应用在ASP.NET程序中。

· 防止用户在文本框中拷贝粘贴文本(Preventing Users From Copying Text From and Pasting It Into TextBoxes):Scott Mitchell有一篇很有用的文章,讨论了在ASP.NET表单(Forms)里禁用拷贝粘贴的方法。如果你想要防止用户在注册时无意中复制了错误的电邮地址(本应手动输入两次),这个方法就很有帮助。

· 使用Google地图API创建一个ASP.NET便利店定位程序(Building a Store Locator ASP.NET Application Using Google Maps API):Scott Mitchell写了一系列很赞的文章来探讨如何在ASP.NET程序中集成Google Map API,实现便利店定位服务。有兴趣的话请接着看系列里的续集和续续集[i]

· ASP.NET 4在SEO方面的改进(ASP.NET 4 SEO Improvements):Scott Mitchell的一篇酷博,讲解了ASP.NET 4里面在搜索引擎优化(SEO)方面的一些功能改进。另外也可以看看我之前关于这个主题的文章。

· 更多关于SQL Compact4的细节知识(More details about SQL Compat Edition 4):Rob在他的一篇博客文章中发表了更多关于新近发布的SQL CE 4.Beta的详细信息,SQL CE既可以独立安装,也可以集成在WebMatrix里。通过SQL CE,你可以将数据库植入在ASP.NET程序中。我发表了一篇文章介绍了它的概况。

ASP.NET MVC

· ASP.NET MVC技术在线研讨会(Online ASP.NET MVC Conference):Eric Hexter分享了7月22号举办的免费的ASP.NET MVC虚拟在线研讨会的一些细节。你可以免费参加,另外也不需要长途跋涉就能出席会议。

· ASP.NET MVC视图守则(Rules for ASP.NET MVC Views):Chris有一篇好文谈论了在ASP.NET MVC程序中创建和使用视图模板的推荐做法。

· ASP.NET MVC 2本地化编程指南(ASP.NET MVC 2 Localization Guide):Adam的这篇酷博描述了使用ASP.NET MVC创建本地化程序的方法。

· 在ASP.NET MVC和AJAX中防止请求伪造攻击的诀窍(Anti-Forgery Request Recipes for ASP.NET MVC and AJAX):Dixon写了一篇绝妙好文,讲解了在ASP.NET MVC中使用AJAX时,预防常见的网站安全问题的诀窍和最佳实践。

· jQuery jgGrid插件(jQuery jgGrid Plugin):Elijah有一个视频和一篇文章讲解了在ASP.NET MVC程序中使用jQuery jgGrid插件实现增删改等功能的方法。

· 在MVC中用ELMAH执行错误处理(Error Handling in MVC with ELMAH):Michael写了一篇好文讲解了如何在ASP.NET MVC中安装和配置流行的ELMAH函数库。ELMAH是一个伟大的开源函数库,你可以用它来捕捉和检查在作业站点上出现的错误。

· 单步跟入ASP.NET MVC源代码(Stepping into ASP.NET MVC Source Code):Gunnar写了一篇好文讲解了如何配置Visual Studio 2010,使调试器能够轻松的单步跟入ASP.NET MVC和.NET源代码的方法。

jQuery

· jQuery本质论(jQuery Essentials):很不错的在线幻灯片,为jQuery提供了极佳的概要和用法介绍。

· VS 2010下的jQuery 代码段(jQuery Code Snippets for VS 2010):来瞧瞧这个很酷(并且免费)的函数库,里面有131个可以应用在VS 2010里面的jQuery代码段。酷毙了!

· MSDN里的7篇jQuery文章(7 jQuery Articles on MSDN):Elijah在里面添加了他为MSDN写的7篇jQuery文章的链接。

Silverlight和WPF

· 使用Silverlight VS 2010工具包和WCF RIA Services创建一个简单的表单程序(Building a Simple Forms Application using the Silverlight Tool for VS 2010 and WCF RIA Services): Mark写了一篇很赞的教程,一步步地讲解了如何使用Silverlight, VS 2010和WCF RIA Services来创建一个简单的表单程序。

· 使用VS 2010中的WPF和Silverlight设计器的秘诀(Tips and Tricks for Working with the WPF and Silverlight Designers in VS 2010):Karl写了一篇文章描述了一些在VS 2010中使用WPF和Silverlight设计器时非常有用的小技巧。

· 在WPF和Silverlight程序里启用绑定生成器的方法(How to Enable the Binding Builder in WPF and Silverlight Applications):Karl的另一篇好文,探讨了如何最大化利用VS 2010中数据源窗口的方法。

· Blend 4和Sketchflow的功能改进(Blend 4 and Sketchflow Improvements):Christian的一篇关于Blend 4和Sketchflow最新功能改进的好文。

· Silverlight 4中关于双向HTTP消息的功能改进(HTTP Duplex Messaging Improvements in Silverlight 4):一篇很好的文章,描述了Silverlight 4提供的功能改进,以允许更好的“服务器端推送”的场景,即服务器端可以不要求Silverlight客户端显式发送请求,主动推送消息给客户端。

Visual Studio 2010

· 代码段设计器(Snippet Designer):一个很酷的Visual Studio 2010扩展程序,可以用来快速创建可重用的代码端。

· StyleCop 4.4候选版:StyleCop 4.4的最新版本已经进入候选发布阶段。StyleCop通过分析C#源代码来强制统一的编码规范。这个新版本支持C# 4.0和VS 2010。

· 对比SQL数据(Comparing SQL Data):Zubair的一篇好文,演示了使用Visual Studio 2010旗舰版对比SQL数据和模式(Schema)的方法。

希望这能对您有所帮助。

附:[除了写博客以外,我现在也使用推特(Twitter)来及时更新状态和分享链接,您可以到这个地址“推”我一下:twitter.com/scottgu]

[i] 网络用语,开个玩笑,原文是Part 2和Part 3。


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • [SDK]最新SharePoint 2010 SDK下载地址
  • VS2010 生产效率提升,第二部分
  • 用智能跟踪(IntelliTrace)窥入云端
  • “SharePoint 2010应用程序开发指南”节选 - 第二章 使用Visual Studio 2010 - 第一节
  • 非域,非匿名用户访问远程企业服务的详细步骤
  • 调用远程的企业服务的安全问题
  • ECB菜单控制器(for SharePoint 2007)
  • VB 2010 的自动属性, 集合初始化器以及隐线连续支持
  • 当Debug时弄平类的层次
  • Visual Studio 2010提高的生产力 - 第一部分

Visual Studio Scrum 1.0

soma博客中文版 - 周一, 07/26/2010 - 11:32

[原文发表地址]:Visual Studio Scrum 1.0
[原文发表时间]:20 Jul 2010 12:30 PM

昨天我们发布了Microsoft Visual Studio Scrum 1.0,这是一个Team Foundation Server 2010的新的流程模板。该模板可以从Visual Studio,或通过Visual Studio的扩展管理器下载。这次的新模板是微软自从Team Foundation Server 2005首次发布MSF Agile和MSF CMMI模板以来第一次推出新的流程模板。

那么,为什么需要一个新的模板呢?近年来,Scrum已成为项目管理的主要方法之一,并正在迅速成为新团队和那些希望改进其现有流程的团队的默认选择。尽管Scrum团队也可以有效地利用MSF Agile模板,我们发现用户对规范的Scrum模板(自顶向下完全遵从Scrum的方法、全面使用Scrum术语的模板)的需求十分强烈。

什么是流程模板?

一个流程模板是一组文件,共同定义一个Team Foundation Server团队项目的各种流程元素。流程模板中包含您的团队的工作项、工作项查询、产品build、报告和SharePoint门户网站的定义。这其中的每一项都帮助您管理您的软件项目工作、跟踪和报告重要趋势,并最终推动高质量的软件按时发布。Microsoft Visual Studio 1.0 Scrum为从它生成的新的团队项目定义了下列内容:

工作项

· Sprint

· Product Backlog Item(产品积压工作项)

· Bug (缺陷)

· Task(任务)

· Impediment(障碍)

· Test Case(测试用例)

· Shared Steps(共享(测试)步骤)

报告

· Release Burndown(发布计划图)

· Sprint Burndown(Sprint计划图,见下图)

· Velocity(速度 )

· Build Success Over Time(一段时间内的Build成功率)

· Build Summary(Build汇总)

· Test Case Readiness(测试用例就绪度)

· Test Plan Progress(测试计划进度)

这个模板是为谁准备的呢?

这个模板是专门为Scrum团队创建的。我们意识到,它虽然无法满足每一个团队的需求,但是我们不想陷入为在一个产品中满足所有人需求的陷阱而错过这个机会。我们的开发团队与敏捷社区领袖紧密合作,以确保模板符合Scrum团队的需要。而且模板是完全可以定制的。如果您的团队想要从一个基本的Scrum模板开始,然后逐步调整至符合您的需要,那么该模板是一个不错的选择。

欲了解模板内容的更多信息,请访问Aaron Bjork的博客,在博客中他概述了模板的内容,以及从beta版以来的更新。

Namaste!


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • 用户体验!=挑剔的美工设计
  • Metadata是.NET平台的核心灵魂
  • 重新开博, 技术观察
  • 2010中的查阅项,以及一个相关的“疑似”bug
  • 推荐发博客的工具:ScribeFire
  • IIS Express简介
  • Silverlight PivotViewer现已发布
  • Visual Studio 2010的Productivity Power Tool扩展
  • VS 2010剪切/拷贝时“内存不足”问题的补丁

MSDN: Azure加倍

soma博客中文版 - 周一, 07/26/2010 - 10:32

[原文发表地址]:MSDN: Double the Azure
[原文发表时间]:Thu, Jul 22 2010

今天我们正式宣布延长MSDN订阅者的Windows Azure优惠期,从最初的8个月增加一倍到16个月。

Windows Azure是一个灵活的云计算平台,为开发者提供按需的计算和存贮资源。通过Microsoft数据中心,您可以寄宿 (host)、扩展并管理因特网上的web应用。

今年一月份,我们宣布为MSDN Premium, Ultimate和BizSpark订阅者们提供Windows Azure为期8个月的推广优惠。这项服务允许MSDN订阅者利用Windows Azure平台提供的一系列服务,比如,您可以基于业务需求快速地扩展或收缩计算和存储资源,免去了服务器的采购、配置、维护等杂务。有了Azure,您只需为实际使用的资源埋单。

我强烈建议还没有注册这项Azure优惠的MSDN订阅者和BizSpark成员行动起来。

需要更多详细信息,请参考Windows Azure Platform Benefits for MSDN Subscribers页面。

Namaste!


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • 用户体验!=挑剔的美工设计
  • Metadata是.NET平台的核心灵魂
  • 重新开博, 技术观察
  • 2010中的查阅项,以及一个相关的“疑似”bug
  • 推荐发博客的工具:ScribeFire
  • IIS Express简介
  • Silverlight PivotViewer现已发布
  • Visual Studio 2010的Productivity Power Tool扩展
  • VS 2010剪切/拷贝时“内存不足”问题的补丁

Windows Server AppFabric:更好,更快,更便宜

soma博客中文版 - 周四, 07/22/2010 - 10:05

[原文地址]Windows Server AppFabric: Better, Faster, Cheaper

[原文日期]16 Jul 2010 7:15 PM

这周初,我们在全球合作伙伴大会上概述了微软对云计算的远景规划,并强调了我们的承诺:提供平台,帮助我们的客户充分接纳云计算。作为这个承诺的一部分,开发人员将会获得前所未有的机会来构建针对云的应用程序。微软会继续提供常用的工具和框架,这样开发人员就可以用相似的方法轻松地构建应用程序,而不用担心那些应用程序是否运行在云端。

我们还对云计算开发人员做出了一个承诺,即提供基于服务的应用模型,使之可以根据需求量的不同,动态伸缩散布至不同的底层结构。基于服务所构建的应用程序能轻松的从任何地方访问到,这就意味着开发人员可以构建出“更好,更快,并且更便宜”的应用程序。并且这些应用程序即使在使用峰谷值不可预知的情况下也有强韧的抗错性,运行稳定,易于扩展。

现在,使用Windows Server AppFabric,你可以在你内部部署的应用中获得许多这样的好处。Windows Server AppFabric于今年六月份发布。它提供了一系列功能来提高性能,并加强Web和混合应用的管理。Windows Server AppFabric使用我们所熟悉的.NET技术,提供了分布式缓存技术,以及分布式管理和监控的基础结构。

它是什么?

Windows Server AppFabric为你的服务的运行和管理提供了应用基础结构,并免去了你为此所需的编写工作。Windows Communication Foundation (WCF) 为创建服务以及服务之间的通信提供了一个单一的编程模型,你可以把它看作是支撑应用逻辑的通信结构。由于AppFabric中的工作流同样是一种服务,对于长期运行的服务和不同服务间的协调交互,AppFabric也管理其Windows Workflow Foundation (WF) 的生命周期和负荷。以上只是AppFabric的一部分功能而已。

其他的功能和数据缓存有关。不要总是重复计算相同的返回结果,这是应用程序设计的基本原则。相反的,无论计算结果返回的是一个网页,是你数据库中的一条查询语句,或是调用外部组件的一个服务,我们都应该只计算一次,并保存计算结果,然后重复的提供其结果。Windows Server AppFabric通过将缓存散布到计算机簇集中来保存.NET对象,进行无缝扩展,并管理数据的位置和冗余。开发人员能很方便的根据自己的需要将数据放到缓存中或获取数据,而AppFabric将会为你处理所有底层复杂的操作。

Fabric, Fabric, Fabric

你可能曾听到过其他一些“Fabric”。Windows Azure Fabric Controller(结构控制器)是Windows Azure中的一个功能,将物理机和虚拟机的资源作为一个服务共享池进行管理。而Windows Azure AppFabric作为一种提供连接和联合身份的云服务,使你构建出能同时运行在云端及非云端的混合应用程序。虽然Windows Server AppFabric和Windows Azure AppFabric名字相似,但是目前他们提供的功能是不同的。不过,微软计划将来为云端和非云端环境提供一系列相对应的功能,这样,无论开发人员想要在哪里运行他们的应用程序,他们都可以利用到这些功能了。

安装Windows Server AppFabric

当你安装AppFabric的时候,你可以选择安装宿主功能或/和缓存功能。安装操作非常简单,你所需要的仅是一台配有IIS、安装了Visual Studio(同时安装了SQLExpress)的开发人员工作站。

你可以单独下载安装Windows Server AppFabric,也可以通过Web Platform Installer(如下图所示)。安装之后,会有界面提示,要求你配置AppFabric的数据库和安全认证。

AppFabric所作的工作大部分都在后台进行,对用户并不可见。AppFabric可见部分是一套集成到IIS管理器中的工具,用来管理和监控你的服务。这些工具为服务宿主提供了UI界面的管理体验。AppFabric服务集成到了系统管理服务中,其中包括了性能监控和日志记录。这些服务可以进一步集成到更广泛的系统管理基础结构中。

AppFabric缓存对管理的要求更低,“Fabric”为你照管了所有的事情。往缓存中加入新的机器由AppFabric配置向导来处理。该缓存采用了中央配置的方式,因此缓存簇集中的所有服务器都能互相知晓对方。你可以选择将配置保存在SQL Server中或保存在一个共享文件中。通过选择配置存储并选择加入一个簇集,你就可以加入一个新的服务器。

工作流和WCF代码服务

AppFabric既管理WCF服务,也管理工作流服务(工作流服务也是一种WCF服务)。其区别在于服务中包含的内容。WCF服务的内容就是你的代码。而对于工作流服务,你通常需要使用Visual Studio工作流设计器绘制你的工作流以及一组可重用的工作流活动。工作流活动中需包含一些活动,使你的工作流成为一个服务,并能调用其它的服务。

我们也可以将工作流活动理解为一个组件。你可以从已有的组件中创建新的活动,即集成活动。用不同的组件合成应用程序,这是一个非常强大的模型,不论对云端应用还是当今的普通应用程序都也非常有用。

Visual Studio WCF工作流服务应用模板帮助你在短时间内启动运行你的工作流服务,并能在AppFabric中查看结果。欲启动服务,你可以使用模板创建一个新的项目,并设置项目中的Web属性,使其使用本地的IIS服务器。构建你的项目并运行,内建的WCF测试客户端就会运行。你可以通过该测试客户端向你的工作流发送数据并查看结果。以代码为基础的WCF服务也有类似的模板,因此你可以立即将你的关注点放在用代码编写的业务逻辑上,而不用编写WCF基础结构或任何相关的宿主逻辑和管理功能——AppFabric替您完成了这些工作。

AppFabric操作板

AppFabric操作板可以让你在IIS管理器中查看所有和你的代码及工作流服务相关的统计数据。工作流实例历史数据部分展现了已经激活和完成的工作流。操作板还可以帮助你监视和控制工作流的持久性。所有的服务调用都会被跟踪。创建你自己的监控事件并将其显示在操作板中也非常简单。

AppFabric从一个接一个的活动中跟踪工作流的执行,并将信息在操作板中表现出来。这对于故障分析以及理解某个工作流实例的流运行情况来说很有用。你甚至可以从你的工作流中向AppFabric暴露你的数据,并通过查询其数据找到它所包含的工作流实例。

利用缓存提升你的应用程序性能

缓存是用来保存你数据的地方,从而使你的应用程序访问更快速。缓存可以根据你的需要分配到许多台机器上,而开发人员无需关心数据究竟在哪台机器上。为了获得超快的性能,你甚至可以牺牲数据一致性,将缓存复制到调用客户端(本地缓存)。所保存的数据可以是任何可被序列化的.NET对象。

使用缓存的目的是让你的应用程序的性能和扩展性更好。AppFabric支持显式和隐式两种缓存使用方式来提升扩展性和性能。如果你是一名ASP.NET的开发人员,隐式和显式缓存使用方式对你来说应该相当熟悉。显式缓存使用方式让你能通过AppFabric提供的缓存API,用编程的方式添加、删除并管理缓存中的数据项。这是一个非常强大的工具来帮助你定制应用程序数据的缓存策略及使用模式,不过你需要对数据缓存的原则有一定的理解。隐式缓存使用方式利用了默认的缓存策略,能在常用的场景中发挥作用。隐式缓存使用的两个例子包括ASP.NET会话状态和HTML页面缓存(即输出缓存)。

当你的应用程序需要扩展到更多的资源的时候,AppFabric缓存将会大显身手。如果你要更好的性能,你只需要添加一个新的服务器,然后让AppFabric来自动平衡各种资源。从下图中,你可以看到这种线性的扩展。你可以看到每个加入的服务器对负荷的影响——处理量增加了而延迟减少了。

获得Windows Server AppFabric

用来构建高性能、高抗错性和扩展性的应用程序的Windows Server AppFabric是Windows Server 2008的一部分。如果你正运行Windows Server 2008 (SP2)或Windows Server 2008 R2,你已经获得了Windows Server AppFabric的使用许可,并可以将其投入生产。除此之外,如果你正运行Windows 7或Windows Vista (SP2),则你已获得了Windows Server AppFabric的开发使用许可。你不用再支付额外的许可费用。

你可以从AppFabric的主页中下载AppFabric并获得更多信息。

Namaste!


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • 用户体验!=挑剔的美工设计
  • Metadata是.NET平台的核心灵魂
  • 重新开博, 技术观察
  • 2010中的查阅项,以及一个相关的“疑似”bug
  • 推荐发博客的工具:ScribeFire
  • IIS Express简介
  • Silverlight PivotViewer现已发布
  • Visual Studio 2010的Productivity Power Tool扩展
  • VS 2010剪切/拷贝时“内存不足”问题的补丁

“WebMatrix”简介

Scott Guthrie 博客中文版 - 周三, 07/21/2010 - 17:43

[原文发表地址]:Introducing WebMatrix

[原文发表时间]:2010/7/6, 12:39 PM

 

上个星期我发布了几篇关于我们正要发布的一些关于Web开发新技术的博客:

  • IIS开发者体验版: 这是一个轻量级的免费Web服务器,安装简便,支持目前所有Windows版本,并且与IIS 7.5服务器完全兼容。
  • SQL Server精简版: 一款基于文件的轻量级免费数据库,安装简便,可以集成到ASP.NET应用程序中,支持低成本的宿主环境,并且可以使数据库有选择性地迁移到SQL Server。
  • ASP.NET “Razor”: 一种新的ASP.NET视图引擎,为生成HTML优化,采用代码至上原则的模板语法,便于在HTML中嵌入VB或C#。其特点是语法简单,学习和编写都非常容易,可以在任何文本编辑器中使用。

上周的文章提到了怎样在像Visual Studio 2010 和Visual Web Developer 2010 Express这样专业的Web开发工具中充分利用这些技术,以及这些技术如何使得现有的ASP.NET Web窗体和ASP.NET MVC有更好地开发工作流程。

现在我们也将发布一个新的集成了以上技术的轻量级Web开发工具,它使得人们使用ASP.NET进行Web开发变得更加简单。这是一个免费的工具,提供核心代码和数据库支持,集成了一个开源的Web应用程序库,并且便于将站点和应用程序部署到Web主机服务提供商的虚拟主机上。

我们把这个新工具叫做WebMatrix,它的第一个beta版本现在可以在这里下载。

什么是WebMatrix?

WebMatrix下载大小只有15MB(如果没有安装.NET4就是50MB)而且安装快捷。

这15MB的下载包括一个轻量级的开发工具、 IIS Express、SQL Compact Edition、一组可以使用新的Razor语法编写单独ASP.NET页面的ASP.NET扩展程序,以及一系列易用的执行常见Web任务的数据库和HTML辅助程序。WebMatrix可以和Visual Studio 2010 以及 Visual Web Developer 2010 Express同时安装在同一台机器上。

注:在WebMatrix这第一个beta版本,ASP.NET MVC应用程序的Razor支持没有被包含进来—这个月迟些时候发布的ASP.NET MVC预览版会包括它,同时也包含Visual studio的工具支持。

WebMatrix入门

WebMatrix是一个任务导向的工具,为简化Web开发入门而设计。它尽量减少人们为了完成简单的事情而必需学习的知识量,并且包含和集成了快速构建Web站点所需要的组件。

当运行WebMatrix时,启动页面如下图所示。右边的三个图标用来创建新的Web站点:可以使用Web应用程序库现有的开源应用程序,或用包含一些默认页面的站点模板,再者使用磁盘上的空文件夹。

译注:中文版尚未发布,暂用英文版截图

根据Web库里现有的开源应用程序创建站点

我们来创建一个新的Web站点。使用Web库并且充分利用别人已经做好的工作,而不是完全由自己来写整个站点。

我们从单击WebMatrix主窗口上的“Site from Web Gallery” 链接开始,这样会启动如下图的用户界面 –浏览Web库里流行的开源应用程序,我们可以很容易地从这些程序开始,作一些微调和个性化,然后使用WebMatrix进行部署。Web库包含的程序既有ASP.NET也有PHP应用程序。

我们可以根据类别(Blog[i], CMS, eCommerce …)过滤,或者简单地使用滚动条浏览整个列表。我们先创建一个博客站点吧,以流行的开源项目BlogEngine.NET为基础开始编写。

当我们选择 BlogEngine.NET 并且点击“Next”, WebMatrix 会识别(并提供下载) BlogEngine.NET运行所需要在本地开发机上安装的组件。

IIS Express 已经包含在WebMatrix里面了,因此我已经有了一个Web服务器(并且不用做任何事情来配置它)。 SQL Compact Edition 也包含在WebMatrix里面, 因此也有了一个轻量级的数据库(并且不用做任何事情来配置它)。因为SQL Compact 是全新的,Web库里的大多数项目都还不支持它,我们期望将来大部分项目也会把它做为一个可选项。如果一个项目需要SQL Express或者MySQL 作为数据库,但是你还没有安装的话,它们就会显示在依赖项列表中,WebMatrix将为你提供自动下载、安装和配置。

Web库里的 PHP应用程序(像 WordPress, Drupal, Joomla 和SugarCRM – 所有这些) 会下载并安装PHP 和MySQL.

因为我机器上已经安装了SQL Express, 所以在我的下载列表里只有一项BlogEngine.NET:

点击 “I Accept” 按钮后, WebMatrix 会下载所有我们需要的东西并安装到机器上:

点击 “OK” 按钮后, WebMatrix 会打开新的BlogEngine.NET 项目并显示一个站点概貌页面:

WebMatrix的这个视图提供了项目的概况,以及一些常见任务的快速链接 (等下我们会看到更多) 。

要开始的话,点击上方Ribbon工具栏上的 “Run” 按钮。点击 “Run”按钮会使用系统的默认浏览器启动站点, 或者,你也可以点击展开列表选择任一个已安装的浏览器来运行你的站点。点击 “Open in All Browsers” 选项会一次启动多个浏览器:

因为IIS Express是WebMatrix的一部分,打开项目时,WebMatrix会自动配置IIS Express 来运行它 (没有多余的步骤或配置工作)。

运行 BlogEngine.NET 会启动一个浏览器并加载应用程序的默认页面(如下所示)。 BlogEngine.NET 默认有一个主页,上面有如何个性化站点的一些指导:

如果你读一下内容,你会发现它说明了默认的管理员密码是“admin”/”admin”,登录站点、个性化站点的观感和内容的方法。我们来登录,使用在线管理工具来个性化一些站点的基本设置(名字、作者介绍,等等),并发布两篇日志来启动站点:

美妙之处就是我不需要写任何代码(也不用看任何代码)就能在短时间内建立我们的站点并运行起来。用Web库里的其它所有应用程序时也会有一样的体验。它们都被设计成这样,让你能够通过WebMatrix来快速安装,在本地运行,然后使用他们内置的管理工具微调以及个性化它们的核心内容和结构。

进一步个性化代码和内容

我们已经配置了博客站点的基本设置,现在来看如何进一步个性化。要做这个,让我们先回到WebMatrix并点击工具导航栏左边的 “Files” 节点:

这样会在左边打开一个文件系统资源管理器视图,允许我们浏览站点,并且打开/编辑/添加/删除文件。

Web库里的大部分应用程序支持 “主题”这个概念,使开发者能够微调和个性化应用程序的布局、式样和用户界面。上图中,我已经展开BlogEngine.NET的“主题”文件夹并打开了Site.Master文件来个性化“标准”主题的主要布局。我们可以对它进行微调和个性化,保存,再次运行站点查看我们所做的改变。(注意:F12是重新运行程序的快捷键)。

部署站点到宿主机

WebMatrix提供了一个轻量级的集成工作环境,允许在本地运行和微调站点。在完成个性化操作后,也添加了一些默认内容到数据库里,我们想要把它发布到一个主机提供商上,这样其他人才能访问我们的博客。

WebMatrix内置了发布支持,使得部署Web站点和Web应用程序到远程宿主相当简便。WebMatrix支持使用FTP和FTP/SSL以及微软Web部署(也就是 MSDeploy)技术方便将站点部署到低成本共享主机提供商以及虚拟专用主机提供商。

要在 WebMatrix里发布一个站点, 只要展开Ribbon工具栏上的 “Publish” 图标:

选择 “Configure” 选项,它会打开下面的用户界面,允许我们配置站点要部署的位置:

如果你还没有一个主机提供商,你可以点击发布对话框上方的 “find web hosting”链接打开一个可用的主机提供商列表来选择:

主机提供商现在提供的Windows托管计划包括ASP.NET+SQL Server,便宜到只要3.5美元每月 (并且这些便宜的套餐还包括对ASP.NET 4、ASP.NET MVC 2、Web 部署、URL重写以及其他特性的支持). 

这个星期的 “find web hosting”包括一些专为WebMatrix提供免费账号的主机提供商,可以让你免费试用。 (他们也在服务器端把WebMatrix的所有组件安装好,并使用WebMatrix的部署工具测试他们的套餐)。

一旦你注册了一个主机提供商,你就能从众多的方法中任选一个发布你的站点。

FTP 和FTP/SSL便于你发布站点的本地文件到远程服务器上。

“Web Deploy” 选项可以发布站点文件和数据库内容---如果你的宿主支持它,这是部署的推荐选项。当选择了“Web Deploy”选项,如果需要部署数据库,WebMatrix会列出你项目里所有的本地数据库,并提供一个选项来让你指定远程主机上所需要的数据库连接字符串。

注意: 默认情况下 BlogEngine.NET使用XML文件存储内容和设置(不需要数据库),Web库里的BlogEngine.NET 你仅仅需要输入 "Data Source=empty;database=empty;uid=empty;pwd=empty" 作为远程数据库连接字符串就不需要建立数据库来发布站点。

当点击“Publish”, WebMatrix 会显示一个部署时所作变动的预览界面:

:因为 BlogEngine.NET 不需要数据库,我们要保持数据库部署复选框为未选中状态。如果我们的确要上传一个数据库我们可以在发布预览页面上选择它,这样WebMatrix会自动上传站点文件和数据库架构+数据到远程宿主。部署数据库到宿主服务器上。然后更新你发布的web.config连接字符串指向产品所在的地方。

一旦点击 “Continue”, WebMatrix就会启动站点的发布进程,结束后我们的站点在因特网上就可以访问了,不需要多余的步骤。

更新站点

除初步的部署外,WebMatrix还支持后续发布的增量文件更新。更新本地文件,再点击”Publish”按钮,WebMatrix会计算本地站点和发布站点间的不同之处,只上传更新过的文件(注意默认情况下数据库不会被重新部署以避免重写远程宿主上的数据):

点击上图的 “Continue” 按钮只会上传修改过的文件。这使得即使更新大站点也会很快速简便。

使用代码创建一个个性化的Web站点

我已经讲了用Web库里的开源应用程序创建一个新的Web站点。现在来看使用WebMatrix开发一个个性化站点还能做点什么。

WebMatrix主页上最右边的两个图标提供了创建新站点的简便的方法—或者基于简单的模板页面,或者是没有内容的空站点:

我们点击“Site From Template” 图标来创建一个以模板为基础的新站点。然后选择 “Empty Site”模板并把我们要创建的站点命名为 “FirstSite”:

点击 “Ok”按钮后, WebMatrix会为我们加载一个站点,并显示一个包含常见任务链接的站点概览页面:

我们点击左边导航栏上的 “Files”图标或者中间概况屏上的“Browse your Files”链接。随便选择哪一项都会显示文件资源管理器。 “Empty Site” 模板实际上默认有一个叫做Index.cshtml的文件。 我们可以双击它以在WebMatrix文本编辑器中打开它。

以 .cshtml 或 .vbhtml 为后缀的文件是一些使用在上周博客提到新的 “Razor” 模板语法的文件。 你可以使用Razor文件作为基于ASP.NET MVC的应用程序的视图文件,或者作为ASP.NET Web站点的单独的页面。 我们把这些页面简单地叫做 “ASP.NET Web 页面” – 你可以添加它们到新的项目中,也可以选择性地加到已经存在的ASP.NET Web窗体和 ASP.NET MVC应用程序中。

为什么用 ASP.NET 网页?

使用Razor编写ASP.NET网页提供了一种简单,浅显的方法来开发网站。很多人可能会争辩说,作为一个基于ASP.NET Web窗体或ASP.NET MVC的应用程序,它们并不强大,也没有很多功能。的确,他们没有很多的功能,也没有丰富的编程模型。

但它的概念易于理解,上手容易,而且对很多人来说,提供了最简单的方式来理解.NET、VB或C#开发的基础知识,学习编程。当你需要的仅仅是一些基本的服务端脚本和数据显示和操作的话,而且想要快速创建一个网站时,它也很方便。

创建我们第一个简单的 ASP.NET 网页

让我们建一个简单的页面,该网页用来列出存储在数据库中的内容。

如果你是一个做了几年.NET开发的专业程序员 看完下面的步骤很可能会想‑‑这种场景太基础了建立一个真正的应用程序仅仅了解这些步骤是远远不够的为什么不说一些封装业务逻辑,数据访问层,ORMs等等?好吧,如果你正在建立一个重要的商业应用程序,并且希望在未来的几年内都易于维护,你的确应该考虑以上那些技术

想象一下,如果你正在尝试教你的朋友或者孩子建立他们第一个简单的应用程序,而他们刚刚接触编程,变量,if语句,循环以及陈旧的HTML对于他们来说都是要努力去掌握的东西,类和对象是他们听都没有听过的概念。帮助他们在这种情况下更快的建立和运行应用程序(不需要他们去掌握很多的新概念和步骤),将使得他们更容易成功进而引导他们想要学习更多的知识

我们正在努力用WebMatrix帮助被前面那些步骤吓倒,挣扎着想要开始学习的初学者,最后会成为一个高级的VS/.NET开发者。

我们先从添加一些HTML到我们的页面开始。ASP.NET网页通常以HTML文件开始。本示例我们只添加一个静态的列表到页面中:

跟之前的场景一样,为运行我们正在编辑的项目,IIS Express已经自动配置好了—-我们不需要配置网站服务器或者安装任何东西来运行我们的网站。

可以按“F12”或者从Ribbon工具栏上的“运行”按钮来在浏览器中启动。正如所期望的,这将为我们的电影列表生成一个简单的静态页面:

处理数据

到目前为止都是相当基本的东西。让我们现在使用数据库转来转换此页,并且让电影列表动态呈现而不是静态呈现。

创建一个数据库

我们首先点击WebMatrix左侧导航栏中的“数据库”选项卡。这将弹出一个简单的数据库编辑器:

SQL Server精简版附带在WebMatrix里面—在项目里面一直都可用。因为它可以嵌入在一个应用程序内部,所以容易复制并且应用在远程主机环境(不需要额外的部署或安装步骤---只需要通过FTP或者网络部署来发布数据库文件就可以了)。

注:除了支持SQL CE,以下的WebMatrix数据库工具同样适用于SQL ExpressSQL Server以及MySQL

我们可以通过点击“Add a Database to your site”链接(或者点击屏幕中间再或者点击Ribbon上方的的“New Database” 图标)来创建一个新的SQL CE数据库。这将在我们应用程序的App_Data目录中添加一个“FirstSite.sdf”数据库文件。

然后我们可以点Ribbon上的““New Table”图标创建一个新表来存储我们的电影数据。然后使用Ribbon里的“New Column”按钮添加三列----ID,姓名和年龄。

注:在第一个Beta版中,必须使用在屏幕底部的属性网格编辑器来配置列---更丰富的数据库编辑功能将会出现在下一个Beta版中。

我们通过设置“Is Primary Key”属性为true,把ID设为主键。

然后点击“Save”并将表命名为“Movies”。做完后,它就会显示在左手边的表节点下面。

再点击Ribbon的“Data”图标,编辑刚创建的表中的数据,并且添几行数据进去。

现在我们拥有一个数据库、一张表、以及一些电影数据。

ASP.NET网页里使用我们的数据库

ASP.NET 网页可以使用任何.NET API或者VB/C#语言功能。这就意味着你可以在任何网站或应用程序中使用完整的.NET功能。WebMatrix还包括一些额外的.NET库和辅助程序,便于你完成一些常见任务。

其中有个辅助函数是简单的数据库API,可以允许你对数据库编写SQL代码。让我们在网页上用它查询Movies数据表,并显示所有包含在内的电影。要做这件事情,回到WebMatrix的Files选项卡,并且将以下代码添加到Index.cshtml文件中。

正如你看到的那样---页面的概念相当简单(并且不需要理解任何深奥的面向对象的概念)。我们在文件的最顶上有两行代码。

第一行代码打开数据库。Database.Open()首先查看在web.config文件中是否有一个名为“FirstSite”的连接字符串---如果有,连接并使用这个数据库(注:目前我们没有任何web.config文件)。另外,它在\App_Data文件夹中查找一个名为“FirstSite.mdf”的SQL Express数据库或者一个名为“FirstSite.sdf”的SQL Compact数据库。如果找到两者之一,就会打开这个文件。第二行的代码执行对数据库的查询和加载所有的电影。Database.Query()返回一个动态列表---列表中每个动态对象都根据SQL查询条件返回。

然后,我们在<ul>元素中进行一个foreach循环,它可以简单的遍历电影列表,并将每个影片名称输出为<li>元素。因为movies是一个动态对象的集合,我们可以写@movie.Name而不必写movies[“Name”].

当我们重新运行这个页面(或者在浏览器中刷新),查看返回到客户端的HTML代码,我们可以看到以下内容:

以上的影片列表是从我们的数据库中提出来的,并且是动态的。

添加一个简单的过滤器

最后一个我们可以使应用程序更有活力的步骤是,根据页面参数(Query String)传送进来的字符串参数,添加简单的支持来筛选Movie列表。

我们可以通过在Index.cshtml文件中增加一些代码来实现这个功能:

以上我们添加了一行代码从Request对象中来获取“year”这个页面参数。采用WebMatrix新提供的一个 “Aslnt()”扩展辅助函数。这个函数要么返回一个整数值,要么返回空值。然后,我们引入一个WHERE参数作为变量来修改我们的SELECT查询语句。这种语法,可以确保我们避免SQL注入攻击。

最后,我们在<h1>内增加一个If语句,如果一个年份过滤器被指定了,它可以追加一条信息(post 1975)到<h1>。现在要是我们再次运行这个页面,默认情况下,我们可以看到所有的影片:

同时,我们可以通过使用一个“year”页面参数,来仅仅显示这年之后的影片。

其他有用的网页辅助函数

在前面简单的影片列表示例中,我使用了WebMatrix附带的数据库辅助函数库。

WebMatrix还附带其他有用的Web辅助函数。我们不仅仅在ASP.NET网页中支持这些函数—在ASP.NET MVC 和ASP.NET Web 窗体应用程序中也支持。例如,要在应用程序中嵌入一个在线推特(Twitter)搜索面板,你可以编写以下的代码来搜索微博(Tweets):

这将显示一个关于”scottgu”的推特微博列表。

其他内置的辅助函数,包括整合脸谱网(Facebook)和谷歌分析(Google Analytics)的函数,创建和整合验证码(Captcha)和全球通用头像(Gravatars)的函数,执行服务器端的动态图表(使用新的内置于ASP.NET 4的图表功能)等等。

所有这些辅助函数不仅可以在ASP.NET网页中使用,而且也可以在ASP.NET Web窗体和ASP.NET MVC程序中应用。

部署简单

一旦我们完成站点的个性化,我们就可以部署它,就可以像部署BlogEngine.NET一样部署它。所有我们需要做的就是点击WebMatrix中的“Publish“按钮,选择一个主机供应商,这样我们简单的应用程序就发布到因特网上了。

在Visual Studio中打开

用WebMatrix创建的项目也可以在Visual Studio 2010和Visual Web Developer 2010中打开(免费的),这些工具都为网页开发提供了一个更加丰富的功能,并且工作环境更侧重于专业开发。WebMatrix项目可以通过点击Ribbon工具栏右上角的“Visual Studio“图标来在Visual Studio中打开。

这将启动VS2010或Visual Web Developer 2010 Express,打开并编辑当前WexMatrix中的网站。将来,我们会发布VS 2010/VWD 2010的一个补丁,使它们支持IIS Express, SQL CE和新的Razor语法。

进一步的学习

点击这里 来学习更多关于WebMatrix的知识。一个早期的WebMatrix Beta版本可以在这里下载。

你可以访问www.asp.net 网站观看关于WebMatrix的在线教程和视频。 今天的测试版是这项技术的第一次预演,今后的几周内会陆续改进文档和示例程序,当然我们也会根据您的反馈进行完善它的功能。

总结

IIS Express, SQL CE 以及新的ASP.NET “Razor”语法给使用Visual Studio,ASP.NET Web窗体和 ASP.NET MVC的开发人员带来很多的功能改进.

我们认为WebMatrix将能够利用这些技术的优势,简化Web开发工作,这对于非专业开发领域上非常有用—并让更多的开发人员能够学习并将ASP.NET来应用在更广泛的领域。

希望这能对您有所帮助。

附:[除了写博客以外,我现在也使用推特(Twitter)来及时更新状态和分享链接,您可以到这个地址我一下:twitter.com/scottgu]

 

标签: ASP.NET, .NET, Community News


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • [SDK]最新SharePoint 2010 SDK下载地址
  • VS2010 生产效率提升,第二部分
  • 用智能跟踪(IntelliTrace)窥入云端
  • “SharePoint 2010应用程序开发指南”节选 - 第二章 使用Visual Studio 2010 - 第一节
  • 非域,非匿名用户访问远程企业服务的详细步骤
  • 调用远程的企业服务的安全问题
  • ECB菜单控制器(for SharePoint 2007)
  • VB 2010 的自动属性, 集合初始化器以及隐线连续支持
  • 当Debug时弄平类的层次
  • Visual Studio 2010提高的生产力 - 第一部分

介绍“Razor”— ASP.NET的一个新视图引擎

Scott Guthrie 博客中文版 - 周二, 07/20/2010 - 11:03

[原文发表地址] Introducing “Razor” – a new view engine for ASP.NET

[原文发表时间] July 02, 2010 11:01 PM

 

我的团队当前正在从事的工作之一就是为ASP.NET添加一个新的视图引擎。

一直以来,ASP.NET MVC都支持 “视图引擎”的概念—采用不同语法的模板的可插拔模块。当前ASP.NET MVC “默认”的视图引擎是ASP.NET Web窗体使用的.aspx/.ascx/.master文件模板。而当今其他一些流行的ASP.NET MVC视图引擎还包括Spark和NHaml。

我们正在打造一个新的视图引擎,它是一个在HTML生成方面进行优化,采用专注于代码的模版解决方案。它的开发代号是“Razor”,第一个beta版本很快就会发布出来。

设计目标

在设计和评估“Razor”时,我们牢记以下几个目标:

· 紧凑、富有表现力和流畅:Razor尽量减少一个文件里需要敲入的字符数,给你畅快淋漓的编码体验。与大部分模板的语法不同,你不会因为需要在HTML中标注服务器端代码块而中断敲代码的快感。代码分析器足够聪明,能够从你的代码里推断出是否为服务器端代码。这使得其简洁、富有表现力的语法输入能够干净,快速,有趣。

· 上手快: Razor非常容易上手,你只需要了解很少的新东西就可以掌握它,使用你现有的编程语言和HTML知识就足够了。

· 不是一个新的编程语言:我们尽量避免为Razor创建一个新的命令式语言。相反,我们希望让程序员只使用现有的C#/VB(或其它)编程语言知识就能使用Razor,我们只不过在你选择的编程语言里,提供一个非常棒的基于模板生成HTML的标记语法。

· 可以使用任何文本编辑器编写:Razor不要求什么特别的工具,使用老古董的文本编辑器也可以高效编程(“记事本”就不错)。

· 很好的智能感应输入提示:虽然Razor不是专为某个工具或者代码编辑器设计的,但它在Visual Studio里还是有很赞的智能提示功能。我们将会升级Visual Studio 2010和Visual Web Developer 2010使得它具有完整的编辑器智能提示功能。

· 便于单元测试:新的视图引擎支持对视图执行单元测试,不需要控制器(controller)或者Web服务器,而且可以包含在任意的单元测试项目中—不需要单独的应用程序域(App-Domain)。

过去几个月,我们一直在用Razor来编写程序,并邀请了一些志愿者(包括好几组非.NET的 Web程序员)来做易用性研究。使用过它的人对它的评价都不错。

弹性的选择空间

ASP.NET最赞的地方之一就是大部分组件都是可插拔的。如果你发现有一个组件不好用,随时都可以换成另外一个。

ASP.NET MVC的下一个版本将会包括一个新的“添加->视图”对话框,它让你可以方便地在创建新的视图模板文件时选择你想要使用的语法。它还便于你选择任一个安装在机器上的视图引擎—选择你感觉最自然的视图方案:

Razor将会是ASP.NET MVC内置的视图引擎之一。所有的视图辅助(helper[i])方法和编程模型特性同时支持Razor和.ASPX视图引擎。

你还将可以在单个站点或程序中混合使用多个视图引擎写的视图模板。比如说,你可以编写一些视图,有些用.aspx文件,有些用.cshtml或者.vbhtml文件(分别是Razor的C#和VB版本的文件后缀名),而另外一些用Spark或者NHaml。你还可以在采用一种视图引擎的视图模板里包含用另一种引擎编写的局部视图模板。总之,你有灵活的选择空间。

Razor版的“Hello World”

Razor允许你从静态的HTML页面(或者任意的文本内容)开始,添加服务器端代码使其变成动态页面。Razor的一个核心设计理念就是使编码过程更加流畅,并且只要最少的按键次数就能快速地在HTML标记中添加服务器端代码。

让我们来创建一个简单的例子:“hello world”,它的最终输出如下图所示:

使用.ASPX“代码碎块[ii]”的方式编写

如果用现有ASP.NET的.ASPX标记语法来编写上面的“Hello World”示例的话,我们需要在HTML标签中使用”<%= %>”来标记“代码碎块”:

仔细观察就可以发现上例中每一个代码碎块都需要5个字符(”<%= %>”)来标明代码的开始和结束位置。而且其中还有几个字符在键盘上不是特别好敲到(特别是“%”键—它位于大部分键盘的中上部)。

使用Razor的语法编写

在Razor中,你只需要用一个”@”字符就可以标识代码块的开始,与”<% %>”代码碎块不一样,Razor不需要你显式指明代码块的结束位置:

Razor分析器懂得代码块中使用的C#或VB的语法—这就是为什么上例中我们不需要显式关闭代码块的原因。Razor可以自动识别出上面的语句是独立的代码块并悄悄地为我们关闭它们。

看看,即使是像“hello world”这样微不足道的例子就为我们节省了12次键盘敲击。而且在键盘上”@”字符还比”%”字符更容易按,敲起来更快也更流畅。

循环和内嵌HTML示例

让我们来看看另外一个简单的场景,比如说要列出一些商品(并在每样商品旁标明价格):

用.ASPX”代码碎块”编写

如果用ASP.NET现有的.ASPX标记语法,我们可能需要写类似下面的代码来动态生成一个<ul>列表,里面包含表示每个商品的<li>元素:

使用Razor语法

下面是生成同样输出的Razor版本的代码:

请注意上面”@”符号是如何开始一个“foreach”循环,并在循环内嵌入一行包含代码块的HTML语句的。因为Razor分析器知道我们在代码块里用的C#语法,它可以识别出<li>标签里的内容应该被包含在foreach代码块中,并循环处理它们。它甚至还知道末尾的“}”结束foreach循环。

Razor很聪明,还能识别出<li>标签内的@p.Name和@p.Price是服务器端代码—并且在每次循环时执行它们。另外请留心Razor在HTML和代码混合的情况下,还能推导出@p.Name和@p.Price代码块的结束位置。

不需要在你的模板中添加许许多多打开/关闭标记来编写代码的感觉果然是酣畅淋漓。

If代码块和多行语句

下面是其他几个常见的场景:

If语句

跟上面的foreach示例一样,你可以在if语句中直接嵌入内容(或其他C#或者VB语言元素),而不需要显式指明代码块的开始和结束位置。例如:

多行语句

你可以像下面这样,使用“@{ 代码 }” 标注多行语句:

请注意上例中,变量可以被多个代码块引用—变量“message”在包含多行语句的“@{}”块中定义,但也可以被@message代码块使用。这个跟.aspx文件里的”<% %>”和”<%= %>”的语法类似。

多符号语句

“@()”语法允许代码块中有多个符号,例如,我们可以把上例中连接字符串和数字的代码使用”@ ()” 代码块这样重写:

集成代码和内容

Razor解析器内置了很多语言智能—脏活累活帮你做。

在HTML里,它会不会影响”@”符号在电子邮件地址和其他地方的用法?

大部分情况下,Razor解析器都有足够的能力推导出模板里的一个“@”字符到底是在代码中用到,还是在静态内容中用到。例如,我在下例中的邮件地址中使用了”@”字符:

当解析文件时,Razor会分析”@”字符右边的内容来判断它到底是代码(如果是CSHTML文件的话那就是C#代码,而如果是VBHTML文件的话那就是VB代码)还是静态文本内容。上例中的代码会输出以下的HTML(邮件地址被当作静态内容输出,而@DateTime.Now就被当作代码执行了):

如果碰到和代码一样格式的内容(或者你想把代码当作内容看待),你可以显式地打@@来用另外一个”@”字符进行转义。

识别内嵌的内容

当在一个if/else,foreach或者其他块语句中内嵌HTML文本时,可以考虑用一个HTML或XML标签将嵌套内容环绕起来,这样可以更清楚地标明一个文本内容块的开始。

例如,下例我使用<span>标签包围多行文本内容,而文本里还有一个代码块:

在客户端的显示结果如下—注意那个<span>标签:

如果你不想在显示文本内容时,把外面的标签也输出到客户端,那可以考虑使用<text>将嵌套内容括起来:

上面的代码在客户端的输出结果如下—请注意外面的<text>标签没有被输出:

HTML编码

默认情况下,”@”语句块生成的内容会自动对HTML代码进行过滤和转换[Yimin1] ,用来更好地防范XSS垮站脚本攻击。

版面设计/母版页的情况—基础篇

在站点中保持一致的页面观感风格非常重要。ASP.NET 2.0引入了“母版页面(master page)”的概念,就是用来帮助在使用基于.aspx的页面或模板时实现这个功能。Razor同样也支持这个概念,它用的是“版面设计页面(layout pages)”—你可以先定义一个通用的站点模板,然后在站点其他视图或页面继承模板定义的统一观感。

版面设计的一个简单示例

下面是一个简单的版面设计页面示例,文件将会被保存为“SiteLayout.cshtml”。它包含了所有要放在页面里的静态HTML文本内容和动态的服务器端代码。接着我们添加了一个名为“RenderBody()”的辅助函数,放在模板中需要根据所请求的URL而“填入”具体内容的地方:

接下来我们再创建一个名为“Home.cshtml”的视图模板,它只包含了必要的文本内容和代码来构成所请求页面的具体内容,外围的内容则由版面模板提供:

请留意上面在Home.cshtml文件中我们怎么来显式地设置“LayoutPage”属性。它指明了我们期望用SiteLayout.cshtml作为这个视图的版面设计模板。我们还可以在ASP.NET MVC 控制器(Controller)调用Home.cshtml这个视图模板的时候,可以指定这个版面设计文件,或者将其配置为站点默认的版面设计模板(这种情况下,我们只需要在项目中的一个文件中指定它,而所有的视图模板都会自动采用它)。

当我们将Home.cshtml作为一个视图模板显示时,它会合并版面设计页和子页面的内容,然后将下面的内容发送到客户端:

简洁、清晰、富有表现力的代码

上例中值得注意地方的还有一点,就是版面定义和在视图/页面中使用它们的语法既清晰又简练。上面列出的SiteLayout.cshtml和Home.cshtml代码截图已经包含了两个文件所有的代码—没有额外的配置步骤或冗余的标签,没有<%@ Page %>前缀,也不需要设置其它的标签或者属性。

我们尽力使编写出来的代码简洁流畅。我们还希望任何人都可以在一个文本编辑程序中打开、编辑和调整/自定义它们。不需要代码生成或者智能提示(Intellisense)。

版面设计页面/母版页的情况—覆写部分内容

版面设计页面可以有选择性地定义几个不同的“节”,允许基于这个版面设计的视图模板通过“填入”自定义的内容来覆写它。这就允许你在视图中覆写版面设计页里不连续的内容段落,从而使你的站点版面设计更有弹性。

例如,我们回到SiteLayout.cshtml文件,并在其中定义两个节,这样视图模板可以有选择性的填充这两个节。我们将节的名称命名为“menu”和“footer”—然后在RenderSection()辅助函数传入optional=true这个参数来表明它们是可选填充节(我们可以用C#最新的optional参数语法来做这件事情,我在前面的博客里也提到了这个用法)。

因为两个节被标记成了“可选”,不需要在Home.cshtml文件中定义它们。即使没有它们,站点依然可以正常工作。

让我们回到Home.cshtml并自定义Menu和Footer节。下面的截图包含了Home.cshtml里所有的内容—再没有其它内容了。注:我已经把LayoutPage设置为站点范围的默认模板了—所以它没有显示在里面。

我们覆写的”menu”和“footer”节定义在文件里的以相应的名字命名的@section { }块里面。我们刻意不要求你在节里包含“main/body”内容,相反将它们内联在页面里(除了节省键盘敲击的次数以外,还便于你在版面设计页面中添加新的节以后,不需要再回去修改所有已有页面的语法)。

当再次将Home.cshtml以视图模板的形式显示的时候,它现在会合并版面设计页和子页面里的内容,并将两个自定义节覆写的内容整合进来,最终发送到客户端的内容如下:

封装和重用HTML辅助函数

我们刚刚讲过如何使用版面设计页给站点提供统一的观感。现在让我们看看如何通过创建可复用的“HTML辅助函数”来把生成HTML的功能封装成一个函数库,这样可以在整个站点复用—甚至在多个站点复用。

基于代码的HTML辅助函数

ASP.NET MVC有一个“HTML辅助函数”的概念—封装了生成HTML的逻辑并可以用在代码块里的函数。它们当前还都是纯粹通过代码实现的,一般通过扩展函数(Extension Method)实现。现有的所有内置在ASP.NET MVC里的HTML扩展函数都可以使用在“Razor”视图引擎里(不需要修改任何代码):

声明式的HTML辅助函数

使用纯代码的类来生成HTML可以工作—但不是很理想。

我们来看Razor的另外一个特性,使用简单的更具描述性的方法创建可复用的HTML辅助函数。我们计划让你可以使用类似下面的 @helper { }声明式语法创建可复用的辅助函数:

你将可以把包含有这种辅助函数的.cshtml文件放到一个Views\Helpers文件夹,然后就可以在站点上使用它们了(再没有其它的步骤了):

请注意上例中我们可以为ProductListing()函数定义参数。这样你就可以为函数传入任意的参数了(而且还能完全利用可选参数,nullable类型,范型等现有编程语言的特性),另外还有Visual Studio强大的调试支持。

注:@helper语法在Razor的第一个beta版里还没有—但我们希望能在下一个发布里把它包含进来。基于代码的辅助函数在第一个Beta版本里就可以使用。

传入内联模板作为参数

Razor中另一个很有用(或者可以说是相当了得)的功能就是允许向辅助函数传入“内联模板”参数。这些“内联模板”可以同时包含HTML和代码,而且可以被辅助函数即行调用。

下例中的“Grid”HTML辅助函数就是通过这种技术在客户端呈现一个DataGrid:

上例中Grid.Render()函数调用使用的是C#语法。我们使用了新的语法—C#命名参数把强类型的参数传给Grid.Render函数。这同时也意味着我们可以使用全部智能提示,还有编译时的语法检查功能。

在定义列的时候传给“format”参数的就是一个“内联模板”—它同时包含了自定义的html和代码,它们是用来自定义数据的显示方式的。更厉害的是,Grid辅助函数可以把我们的 “内联模板”当作一个委托来调用,想几时调用就几时调用,想调用多少次就调用多少次。在上面的场景里,每呈现grid的一行,就会调用它一次—并通过传入“item”变量,以便我们的模板可以显示恰当的内容。

这个功能允许你开发功能更强大的HTML辅助函数。今后你既可以使用代码方式(跟现在创建扩展函数的方式一样),也可以使用声明式的@helper { }方式来编写HTML辅助函数。

对Visual Studio的支持

前面说过,Razor的一个目标就是尽量减少键盘敲击次数,而且使用普通的文本编辑器就可以编写(记事本就很不错了)。我们通过保证语法清晰简单干练来实现这个目标。

Visual Studio也支持Razor, 使你在里面编写Razor代码时感觉更丰富。对于基于Razor的源文件,我们提供了完整的HTML、JavaScript和C#/VB代码智能提示功能:

请注意,上面我们甚至为嵌入在foreach循环体里面<li>元素的Product对象的“@p.”启用了智能提示。另外还要注意的地方是,在“解决方案资源管理器”的“\View”文件夹里,同时存放了.aspx和.cshtml视图模板。你可以在单个程序中使用多个视图引擎—便于你选择最适合你的引擎。

总结

我们认为“Razor”是一个非常好的新的视图引擎,它提供了流畅的专注于代码的模版方案。它的编码工作流快速、富有表现力并有趣。语法简练并节省按键次数,同时还提升了代码的可读性。它会作为内置的视图引擎并随下一个版本的ASP.NET MVC发布。你也可以把单独的.cshtml/.vbhtml放到程序里,并把它们当作独立的页面执行—这样你就也可以在ASP.NETWeb窗体程序中使用它了。

前几个月里,试用过它的开发人员对它的评价都非常好。我们马上就要发布它的第一个beta版,并期待收到您对它的反馈。

希望这能对您有所帮助。

附:[除了写博客以外,我现在也使用推特(Twitter)来及时更新状态和分享链接,您可以到这个地址“推”我一下:twitter.com/scottgu]

标签: ASP.NET, .NET, Community News, MVC

[i] HTML Helper: 本文都翻译成HTML辅助函数。

[ii] 原文为Code Nuggets,其实就是Code Block的意思,Code Nuggets最先是ASP.NET团队叫出来的。Nugget原意是金块,肯德基的“上校鸡块”的英文原名也是“Nugget”,之所以取这个名字,是因为炸鸡块和金块都是黄色的……也许这就是为什么代码块被称作“Nugget”的原因吧,为了区别代码块,翻译成“代码碎块”。


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • [SDK]最新SharePoint 2010 SDK下载地址
  • VS2010 生产效率提升,第二部分
  • 用智能跟踪(IntelliTrace)窥入云端
  • “SharePoint 2010应用程序开发指南”节选 - 第二章 使用Visual Studio 2010 - 第一节
  • 非域,非匿名用户访问远程企业服务的详细步骤
  • 调用远程的企业服务的安全问题
  • ECB菜单控制器(for SharePoint 2007)
  • VB 2010 的自动属性, 集合初始化器以及隐线连续支持
  • 当Debug时弄平类的层次
  • Visual Studio 2010提高的生产力 - 第一部分

Hilo: Windows7 开发教程

soma博客中文版 - 周五, 07/16/2010 - 15:40

[原文发表地址] Hilo: Windows 7 development walk-throughs

[原文发表时间] 9 Jul 2010 6:14 PM

Windows 7 中引入了一系列新的用户功能,让应用程序的使用变得更加方便。因此,开发人员也要求我们能提供更多的指导来帮助他们在其程序中使用这些功能。

“Hilo”就是我们的团队为满足这些要求而努力的成果。

在接下来的几个礼拜中, “Hilo” 会为我们带来一系列的文章和例子,告诉我们怎样设计和实现一系列可触摸的Windows 应用程序,你可以在这些应用程序中对照片和图像进行浏览、选择、和加工。下面是”Hilo 浏览器”的图像幻灯片和媒体面板:

在这里,你能看到一个文件夹的图像内容。

这些文章将会覆盖关键的Windows7 技术,讲解怎样将这些技术整合起来创建一个丰富的用户体验,并且还将详细介绍这些应用程序它们本身的设计和实现。

Hilo的文章对构建托管和非托管应用程序的开发人员都适用,它们提供的书面指导将帮助您设计和开发出属于自己的丰富的、可触摸的Windows应用程序。免费的样例代码由C++编写而成,并展示了如何在一个真实的应用程序中使用这些APIs。

点击这里查看”Hilo 浏览器”的第一篇文章。

Namaste!

View article...


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • 用户体验!=挑剔的美工设计
  • Metadata是.NET平台的核心灵魂
  • 重新开博, 技术观察
  • 2010中的查阅项,以及一个相关的“疑似”bug
  • 推荐发博客的工具:ScribeFire
  • IIS Express简介
  • Silverlight PivotViewer现已发布
  • Visual Studio 2010的Productivity Power Tool扩展
  • VS 2010剪切/拷贝时“内存不足”问题的补丁

伟大梦想

soma博客中文版 - 周三, 07/14/2010 - 00:12

[原文发表地址] Dream Big...

[原文发表时间] 9 Jul 2010 7:26 PM

 

昨天我有机会在波兰的华沙参加了“2010创新杯”的总决赛。

创新杯是全球性的编程竞赛,世界各地的学生都有机会来参与,展示他们的创新和热情,并利用技术来解决现实世界的问题。这些问题与联合国的千年发展目标有关,使得解决方案更启发灵感更激动人心。

我们从八年前开始举办创新杯。从那以来,创新杯得到了长足的发展。今年全球的参与学生数量达到了32.5万人,其中来自69个国家的400名学生来到华沙参加这周的决赛。

我有机会和一些参与软件设计类别比赛的学生进行了交谈。看到学生们的各种解决方案真是太棒了,有与One Lap Per Child组织和Classmate PC项目合作使用广播信号发送教育数据到不同的地方(来自新西兰的OneBeep团队)、向听力障碍患者提供与其他人进行交流的增音真实环境(来自泰国的Skeek团队,照片如下)、帮助严重残障的病人通过语音合成、短信或Windows Live Messenger的方式进行沟通(来自塞尔维亚的TFZR团队),以及其他许多同样令人激动的解决方案。

我常常说今天的学生就是明天的领导者。看到这些学生所展示出来的为世界带来积极影响的热情和决心,我感到无比开心。

明年创新杯的决赛将会在纽约举行,我很期待看到学生们更多的精彩作品。

Namaste!


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • 用户体验!=挑剔的美工设计
  • Metadata是.NET平台的核心灵魂
  • 重新开博, 技术观察
  • 2010中的查阅项,以及一个相关的“疑似”bug
  • 推荐发博客的工具:ScribeFire
  • IIS Express简介
  • Silverlight PivotViewer现已发布
  • Visual Studio 2010的Productivity Power Tool扩展
  • VS 2010剪切/拷贝时“内存不足”问题的补丁

IIS Express简介

Scott Guthrie 博客中文版 - 周五, 07/09/2010 - 15:34

[原文发表地址]:Introducing IIS Express

[原文发表时间]: June 28, 2010 11:02 PM

 

当前程序员只能通过下面两种Web服务器之一来开发和测试ASP.NET网站程序:

1. Visual Studio自带的ASP.NET开发服务器(webdev.exe)。

2. Windows自带的IIS Web服务器。

上面两个方案各有优缺点,而且很多ASP.NET程序员告诉我们:“我希望有一个像ASP.NET开发服务器那样容易使用,但是功能又跟IIS一样强大的服务器”。今天我很高兴地宣布,我们将提供另一个新的、免费的、综合了前两个方案的优点的选择—IIS Express,它的出现使得开发和运行ASP.NET网站程序变得更为容易。

IIS Express支持VS 2010和Visual Web Develop 2010 Express,可以运行在Windows XP和更高的版本上,它不需要管理员权限即可运行,也不要求代码做任何的改动。你可以用它开发所有类型的ASP.NET程序,而且它还支持完整的IIS 7.x功能集。

现有方案

在详细介绍IIS Express之前,我们先来看看ASP.NET开发服务器[i]和IIS的工作方式。

ASP.NET开发服务器

Visual Studio自带的ASP.NET开发服务器(开发代号“Cassini”)的优势在于简练和便于快速启动。它不需要监听远程连接请求(因此在大部分企业的安全网络环境中都可以使用它),你甚至都不需要使用管理员账号就能启动它,而且它也不要求额外的安装步骤。

正是因为具备启动方便这一巨大优势,才使得它成为ASP.NET项目的默认服务器,当你在Visual Studio中按下F5时就会启动它。

但ASP.NET开发服务器的缺点是它不提供完整的Web服务器功能。比如说,它不支持SSL,URL重写规则(例如我在这篇博客提到的SEO URL重写规则),自定义安全设置,和其它在IIS 7中支持的功能。

IIS Web服务器

用Visual Studio运行和测试程序还有第二个选择— IIS。你可以通过右键单击Visual studio中的Web项目,打开它的属性(在属性窗口中单击“Web”标签)来配置Web工程使用IIS。

使用IIS作为你的开发服务器允许你测试完整的Web服务器具备的功能(SSL,URL重写规则等)。IIS是一个货真价实的Web服务器—这意味着和在作业服务器上部署差不多开发环境。

但是采用IIS的缺点是,有些公司并不允许在开发机上安装完整的Web服务器。IIS还要求使用管理员帐号来安装和调试网站。不同版本的Windows又支持不同版本的IIS。例如,在Windows XP上,你只能使用自带的IIS 5.1—所有IIS 7.x的新功能它都不支持。另外,在VS里配置网站项目使用IIS,还得一些额外的安装和配置步骤。

IIS Express — “鱼”和“熊掌”兼得

我们正在为IIS 7.x加点专为开发场景而优化的新风味,也就是“IIS Express”。我认为它综合了ASP.NET开发服务器易用性的优势和IIS强大的功能。确切地说:

  • 它简练并且易于安装(文件大小不到10兆而且安装速度相当快)。
  • 在Visual Studio中不需要管理员权限即可启动和调试程序。
  • 提供了完整的Web服务器功能—包括SSL, URL重写,多媒体支持和所有其他的IIS 7.x模块。
  • 它的可扩展模型和web.config配置结构和IIS 7.x是一样的。
  • 它可以和IIS Web服务器还有ASP.NET开发服务器同时运行在同一台机器上(他们不会相互冲突)。
  • 它支持Windows XP及更高版本的操作系统—在所有操作系统平台上提供了完整的IIS 7.x功能集。

IIS Express(跟ASP.NET开发服务器一样)可以快速地从硬盘上的某个文件夹上启动网站程序。它不需要任何注册或配置步骤。在网站开发过程中,这个特性使启动和运行网站显得相当便捷。

与VS 2010的整合

我们正在努力使IIS Express在Visual Studio 2010中能够更加容易使用。你将可以配置VS 2010使用它取代ASP.NET开发服务器作为ASP.NET项目默认的Web服务器。跟现在的ASP.NET开发服务器一样,你不需要在IIS Express里注册站点或者虚拟目录。它支持和ASP.NET开发服务器相同的使用方法—只是添加了更多的功能而已。

当你按下F5来运行ASP.NET项目时,Visual Studio自动启动IIS Express并且使用它来运行和调试网站程序(不需要额外的配置)。跟ASP.NET开发服务器一样,IIS Express运行时,会在任务栏的通知区域显示一个小图标:

右键单击上面的图标并选择“退出”就可以快速关闭IIS Express。你也可以通过右键单击来列出正在运行的站点列表,还有站点的文件夹路径以及使用的.NET版本:

[译注:IIS Express尚在Beta阶段,暂时还没有中文版,因此将英文原图贴上]

请注意上图中两个很酷的地方:

1. 正在运行的站点“Test Site”,还有IIS Express本身,保存在硬盘的c:\users\[用户名]文件夹中。这就允许非管理员用户使用IIS Express和网站,而且还支持一些现在的IIS服务器没有办法实现的场景(例如可以在受限的企业网络环境或受限的学校公共电脑上运行IIS Express)。

2. 上面正在运行的站点“Test Site”同时支持HTTPHTTPS的访问方式。IIS Express通过自动安装“自签名证书”来支持URL访问控制列表(URL ACL)和SSL认证,这样程序员(以非管理员用户登录电脑)可以在不需要提升用户权限,或执行额外设置的情况下就可以使用SSL。这个功能允许你在程序中为SSL设置需要保护的页面(比如登录页面),并且在开发过程中象在真实的web服务器里那样运行和测试这些页面。

IIS 7.x功能集

IIS Express就像你现在已经熟悉的ASP.NET开发服务其那样容易启动和使用。 但是因为IIS Express是基于与IIS 7x相同的代码,你可以用到完整Web服务器的功能集合。这也就意味着你可以像在真实的作业Web服务器上创建和运行你的程序。除了SSL,你还可以使用IIS 7.x的URL重写模块、多媒体插件、动态内容压缩、高级日志功能、自定义安全策略和其他丰富多彩的模块。

除了支持ASP.NET以外,IIS Express还支持传统的ASP和其他被IIS支持的文件类型—这也使得它成为整合多种技术的站点的理想平台。

总结

我们认为IIS Express使得开发、运行和测试Web程序更加容易。它支持ASP.NET的所有版本和所有应用程序类型(包括ASP.NET Web窗体程序和ASP.NET MVC程序)。最好不过的是—你不需要改动任何代码来使用它。你将可以在所有已有的项目中选用它。

我们马上就会发布IIS Express的beta版。在Beta版中,你应该可以右建单击一个文件夹,并由IIS Express从这个文件夹启动网站程序。今年晚一些时候,我们还会发布一个VS 2010和Visual Web Developer 2010 Express的补丁程序,这个补丁程序将用IIS Express替换掉原来内置的ASP.NET开发服务器。后续版本的Visual Studio会内置IIS Express。

希望这能对您有所帮助。

[i] ASP.NET 开发服务器:即是后图的“Visual Studio开发服务器”,英文原文是ASP.NET Development Server,文件名是webdev.exe。

标签:Visual Studio, .NET, IIS7, Community News


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • [SDK]最新SharePoint 2010 SDK下载地址
  • VS2010 生产效率提升,第二部分
  • 用智能跟踪(IntelliTrace)窥入云端
  • “SharePoint 2010应用程序开发指南”节选 - 第二章 使用Visual Studio 2010 - 第一节
  • 非域,非匿名用户访问远程企业服务的详细步骤
  • 调用远程的企业服务的安全问题
  • ECB菜单控制器(for SharePoint 2007)
  • VB 2010 的自动属性, 集合初始化器以及隐线连续支持
  • 当Debug时弄平类的层次
  • Visual Studio 2010提高的生产力 - 第一部分

VS 2010生产力提升,第四部分

soma博客中文版 - 周五, 07/09/2010 - 14:04

[原文发表地址]:VS 2010 Productivity Improvements, Part IV
[原文发表时间]:Fri, Jul 2 2010

最近我陆续发表了若干关于Visual Studio 2010生产力提升的帖子,主要展示的功能都是Visual Studio自身集成的。今天我会着重介绍Visual Studio的扩展,这些扩展将提升Visual Studio 2010 专业版、高级版和旗舰版用户的编码体验。

几个月前我曾经介绍过,VS 2010中得到极大改善的领域之一就是可扩展性。新的支持扩展的API使第三方能够定制IDE或者给IDE添加新的功能;新的扩展管理器(Extension Manager)和Visual Studio Gallery则简化了扩展的发布和搜索流程。就在本周,Visual Studio Gallery上的Visual Studio 2010扩展数量突破了一千个,Visual Studio用户的扩展下载量也超过了75万!以下是一些我比较喜欢的扩展。

颜色主题编辑器(Color Theme Editor

觉得Visual Studio默认的颜色配置不太合您的口味?您可以下载Visual Studio Color Theme Editor来定制VS的颜色配置。您可以从扩展包中发布一些预置的主题中选择您想要的,也可以下载安装其他人的主题,或者修改已有的主题。您也可以白手起家创建自己的主题,然后导出并共享您的主题。

我最喜欢的主题之一是Blend-like theme,设计者是Roland Auer。为了让VS的外观更加统一,我还导入了Shades of Grey这一编辑器样式。您可以在这里找到更多的编辑器样式来匹配VS的外观。以下是我配置的结果:

生产力工具集(Productivity Power Tools

Visual Studio 2010 Productivity Power Tools来自Visual Studio团队。这个工具集提供了一系列很好的、针对编辑器和IDE的功能。无法在这里一一详述所有的功能,但以下是我最喜欢的几个:

  • 改善document well

Document well指的是编辑器上方区域,您打开的文件都以选项卡的形式展示在那里。安装了工具集后,这些选项卡根据它们所在项目的不同,被赋予不同的颜色。比如下面这个截图表示的,我打开的文件来自于三个不同的项目。About.aspx和Index.aspx来自于同一个项目,About.aspx的选项卡颜色比较亮,表示这是当前被激活的文档。您也可以直接从选项卡直接关闭一个文档,就像Internet Explorer支持的那样。

选项卡也可以被固定。如果您有一些文件是经常会用到的,您可以把它们的位置固定,这样它们就不会因为您打开的文件过多而被滚动到视线之外。对于那些没有固定的选项卡,现在您可以利用滚动按钮将它们找到。下面这幅截图中,我固定了AssemblyInfo.cs,您可以看到在其他的未被固定的文件选项卡旁边,有一个左箭头和右箭头。我通过右箭头将文件选项卡滚动到最右边,隐藏了原本在左边的BlueYonderAirlinesEntities.cs文件。

  • 三击

选中当前所在代码行的最快的方法是什么?这件事可能很小,但我相信一旦您知道了三击这个简单的方法,您一定无法离开它——是的,只要在编辑器里某一行代码上三次点击鼠标左键,就可以将这行代码高亮选中。

  • 变量赋值的排版对齐

想让代码从这样:

变成这样:

只要按Ctrl+Alt+]!

排版对齐变量赋值可能会与您的代码格式设定相冲突。比如在C#代码中,您需要取消“在声明语句中忽略空格”以使用此功能(Tools->Options->Text Editor->C#->Formatting->Spacing->"Ignore spaces in declaration statements")。VB用户则需要关闭整齐排列代码(pretty listing)。

  • 修正缩进(tab)

您可能在一个团队里工作,和若干程序员一起改写同一个文件;或者您的设定出现了不一致,总之有时候您会发现文件中空格和缩进被混杂用于排版。当您打开这种代码文件的时候,工具集会提醒您是否要修正这个问题,使用统一的排版方法:

  • 添加引用(Add Reference)对话框

通过对程序集进行缓存,添加引用对话框的性能得到了显著提升。您也可以利用搜索功能,更快地找到您想要引用的程序集。

Team Foundation Server工具集

如果您使用TFS来托管您的源代码或追踪工作项目,TFS Power Tools使得您与TFS的交互体验更加顺畅,更加个性化。这个工具集是由TFS团队开发的,通过这个工具集,您不但可以从Windows shell访问TFS,还可以通过一个强大的命令行工具。另外它还提供通知功能,以及一个协作工具。以下是几个精选功能:

  • 团队成员

需要利用即时通信软件或email与团队成员们时刻保持联络么?如果您平时使用Microsoft Communicator来与团队进行沟通,那么现在您可以利用团队成员(Team Members)插件,从团队浏览器(Team Explorer)中直接启动Communicator。

  • 最优实践分析器(Best Practices Analyzer)

最优实践分析器帮助您确保您的Team Foundation Server部署是最优配置,并帮助您找到可能引起性能问题的原因。您可以快照当前的部署配置,并将其存档。通过查看历史数据比照使用情况来优化TFS的部署配置。

  • Windows Shell扩展

Windows Shell扩展使您可以直接从Windows浏览器中执行许多对TFS源码操作的任务,这样您就不需要打开VS或者使用Team Foundation命令行工具了。当您在常用的Windows文件对话框中工作时,这些扩展同样使您与服务器的交互更加简单便捷。

LiveJournal Tags: Developer Division,Visual Studio,.NET Framework

在Visual Studio Gallery有更多极具想象力、创新性和实用性的扩展,许多都是免费提供的。您可以在这里找到最受欢迎的扩展。试试看,告诉我您最喜欢那个。

Namaste!


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • 用户体验!=挑剔的美工设计
  • Metadata是.NET平台的核心灵魂
  • 重新开博, 技术观察
  • 2010中的查阅项,以及一个相关的“疑似”bug
  • 推荐发博客的工具:ScribeFire
  • IIS Express简介
  • Silverlight PivotViewer现已发布
  • Visual Studio 2010的Productivity Power Tool扩展
  • VS 2010剪切/拷贝时“内存不足”问题的补丁

Silverlight PivotViewer现已发布

Scott Guthrie 博客中文版 - 周五, 07/09/2010 - 11:00

[原文发表地址] Silverlight PivotViewer Now Available

[原文发表时间] June 29, 2010 8:58 PM

 

我们在三个月前的 MIX大会上首次介绍并演示了Silverlight PivotViewer控件。通过这个控件你可以一次性呈现上千个对象,内置的排序和翻阅功能不仅能帮助你快速找到需要的信息,你还可以通过它观察数据的走向。另外,它可以用来对比数据,它的导航体验即快又自然,当今世界无人可望其项背。

PivotViewer就是那种只可意会,不可言传的秘籍。下面几个非常酷的Silverlight 4程序,就是使用它在web上发布大量数据的:

Netflix在线观看电影

Netflix在线观看收藏是由Windows Azure团队的一个成员开发,基于Windows Azure云计算平台的网站。这是一个展示PivotViewer控件在大量信息中快速轻巧导航功能的极好的例子。使用PivotViewer控件,你可以分类整理电影收藏列表,轻易地找到要看的电影,然后直接打开NetFlix上关于该影片的介绍页面,再将影片添加到你的播放列表中。

浏览这个站点,并且使用左边的导航控件体验穿梭在“片山片海”的感觉。然后参阅这篇文章来学习怎样使用不超过500行的代码来实现这个站点。

Hitched婚礼场地预定

Hitched是英国的一个婚礼预定网站,目前在国内拥有上千个婚礼场地。现在网站采用PivotViewer控件让客户可以快速翻阅和筛选场地。想要举办一个容纳300人以上的婚礼?想在伦敦附近,并且找个可以过夜的地方?没问题— 尽管有千种需求,万般条件,最终都能快速地找到最佳场地。

瞅瞅这个站点试一下。

下载PivotViewer控件

Silverlight PivotViewer控件,以及其它帮助你创建自己的数据集合的工具,现在都已经可以下载使用了。你可以很容易地将它整合到自己的站点和程序里。最好不过的是,它们都是免费的。

下面的链接可以帮你了解更多关于PivotViewer控件的知识:

  • PivotViewer概览:www.microsoft.com/silverlight/pivotviewer
  • 下载PivotViewer控件及技术文档: www.silverlight.net/learn/pivotviewer
  • Live实验室的PivotViewer数据集合创建工具:www.getpivot.com/developer-info/tools.aspx
  • Silverlight PivotViewer论坛:www.silverlight.net/forums/68.aspx

我们认为PivotViewer提供了独树一帜的数据呈现方式。这个为Silverlight而新设计的PivotViewer 控件,以及与它一起发布的相关工具和示例程序,能够让开发者快速上手并应用到站点上。我们很期待看到在你的站点中看到PivotViewer控件。

希望这能对您有所帮助,

标签:.NET, Community News, Silverlight


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • [SDK]最新SharePoint 2010 SDK下载地址
  • VS2010 生产效率提升,第二部分
  • 用智能跟踪(IntelliTrace)窥入云端
  • “SharePoint 2010应用程序开发指南”节选 - 第二章 使用Visual Studio 2010 - 第一节
  • 非域,非匿名用户访问远程企业服务的详细步骤
  • 调用远程的企业服务的安全问题
  • ECB菜单控制器(for SharePoint 2007)
  • VB 2010 的自动属性, 集合初始化器以及隐线连续支持
  • 当Debug时弄平类的层次
  • Visual Studio 2010提高的生产力 - 第一部分

Visual Studio 2010的Productivity Power Tool扩展

Scott Guthrie 博客中文版 - 周四, 07/08/2010 - 13:48

[原文发表地址]:Visual Studio 2010 Productivity Power Tool Extensions

[原文发表时间]:June 09, 2010 11:29 PM

 

上个月我写了一篇关于集成在VS 2010 中的扩展管理器的博客,其中提到了一个很酷的VS 2010的扩展插件PowerCommands,它可以为Visual Studio 提供一些额外的功能。Visual Studio 2010扩展管理器为开发者们提供了一种快速查找和安装插件以增强VS 2010的自带功能的简单方式。

新的VS 2010 Productivity Power Tools发布

本周早些时候,Jason Zander宣告了一个新的VS 2010 Productivity Power Tools的发布,其中包含了很多具有很酷的新功能的VS 2010 扩展。

你可以从这里免费下载和安装它。它提供了以下一些代码编辑器方面的改进:

  • 高亮显示整行代码:更容易地在代码编辑器中定位鼠标位置。
  • 选择整行代码:现在三次单击代码编辑器中任意行将会选择整行代码(类似于MS Word)。
  • 移动代码块:使用Alt键加上下箭头键将在代码编辑器中上下移动选中的代码块。
  • 统一Tab/空格键的使用:统一整个项目中的Tab键和空格键的使用方式。
  • 参数着色:现在查找/识别方法的参数比以前更加容易。
  • 列参考线:现在可以添加纵坐标线来帮助文本的对齐和大小设置。
  • 赋值排列:使代码中的多个变量的赋值排成一行更为容易
  • 支持HTML剪贴板格式:从VS中复制/粘贴代码到HTML缓存中(对写博客很有用)
  • Ctrl+单击跳转至定义处:现在你可以按住Ctrl键,单击一个类型即可跳转到定义该类型的地方。

它也包含了许多用来在IDE中管理文档标签方面的改进。

  • 标签卡上显示关闭按钮:和VS2008一样,在活动的文档标签上显示关闭按钮。
  • 彩色标签:可以根据工程项目或者正则表达式为每个文档标签选择不同的颜色。
  • 固定标签:可以钉住标签使它们一直可见,可用。
  • 垂直标签:可以垂直地显示标签以显示更多的标签。
  • 根据使用先后顺序移除标签:当增加新的标签而空间不够时,采用了更好地隐藏一个旧标签的方式。
  • 按工程项目排列标签:标签可以根据它们所属的工程项目排列,使它们存放在同一个小组内。
  • 按字母表顺序排列标签:标签可以被按字母表顺序排列。

最后,也是很重要的一点,它也包含了新改进的“添加引用”对话框

新的“添加引用”对话框缓存了程序集的信息----这意味着它能够在1到2秒钟内打开(注:刚一开始,“添加引用”对话框还是会加载程序集数据,但是会进行缓存,加快后续打开的速度)。新的“添加引用”对话框现在也增加了搜索支持----使你更加容易地查找到程序集。

你可以去Jason的博客查阅关于以上所有改进的详细信息。

新的可视化和建模功能包发布

本周早些时候我们也发布了一个为VS2010旗舰版增加额外的建模和代码可视化的功能包。你可以从这里下载。

这个可视化和建模功能包提供了一批很棒的的新功能:

  • 网站可视化:新增了对创建ASP.NET项目的DGML可视化支持
  • C/C++原生代码可视化:新增了对创建C/C++项目的DGML可视化支持
  • 根据UML类图生成代码:现在你可以根据UML类图生成代码。
  • 根据代码生成UML类图:根据已经存在的代码生成UML类图。
  • XML中导入UML:从XMI 2.1文件中导入UML类,时序,用例。
  • 自定义验证层规则:编写自定义代码创建,修改,验证层关系图。

Jason的博客详细地描述了这些功能特性。

希望这能对您有所帮助。

标签:Visual Studio, .NET, Community News


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • [SDK]最新SharePoint 2010 SDK下载地址
  • VS2010 生产效率提升,第二部分
  • 用智能跟踪(IntelliTrace)窥入云端
  • “SharePoint 2010应用程序开发指南”节选 - 第二章 使用Visual Studio 2010 - 第一节
  • 非域,非匿名用户访问远程企业服务的详细步骤
  • 调用远程的企业服务的安全问题
  • ECB菜单控制器(for SharePoint 2007)
  • VB 2010 的自动属性, 集合初始化器以及隐线连续支持
  • 当Debug时弄平类的层次
  • Visual Studio 2010提高的生产力 - 第一部分

VS 2010剪切/拷贝时“内存不足”问题的补丁

Scott Guthrie 博客中文版 - 周三, 07/07/2010 - 11:20

[原文发表地址] Patch for Cut/Copy “Insufficient Memory” issue with VS 2010

[原文发表时间] June 27, 2010 3:03 PM

 

在VS 2010中执行剪切/拷贝文本操作时,有时会工作不正常,我们已经收到好几份这样的问题报告了。在某些情况下,VS因为计算错误而得出内存不足的结论(甚至实际上还有很多内存可用),还弹出这样的提示信息:

“在此次程序运行时,可用内存容量不足,可能由于虚拟地址空间碎片过多导致,请稍后再试。”

针对这个问题,我们已经发布了一个补丁程序,如果你也碰到类似的问题,可以从这里下载并安装补丁。另外关于这个问题,你还可以在Visual Studio团队的博客上获得更详细的说明。

希望这能对您有所帮助。

 

标签:Visual Studio, Community News


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • [SDK]最新SharePoint 2010 SDK下载地址
  • VS2010 生产效率提升,第二部分
  • 用智能跟踪(IntelliTrace)窥入云端
  • “SharePoint 2010应用程序开发指南”节选 - 第二章 使用Visual Studio 2010 - 第一节
  • 非域,非匿名用户访问远程企业服务的详细步骤
  • 调用远程的企业服务的安全问题
  • ECB菜单控制器(for SharePoint 2007)
  • VB 2010 的自动属性, 集合初始化器以及隐线连续支持
  • 当Debug时弄平类的层次
  • Visual Studio 2010提高的生产力 - 第一部分

微软的jQuery国际化插件

Scott Guthrie 博客中文版 - 周五, 06/25/2010 - 17:35

[原文发表地址] jQuery Globalization Plugin from Microsoft

[原文发表时间] Thursday, June 10, 2010 10:34 PM

 

上个月,我写了一篇关于微软如何在向jQuery贡献代码的文章,也谈到了在第一批贡献的代码中的一些功能:jQuery模板和数据链接支持.

今天,我们发布了一个新的jQuery国际化插件的原型,你可以在你的JavaScript程序中引用这个插件添加国际化功能。插件涵盖了超过350种文化的国际化信息,从苏格兰盖尔语、佛里斯兰语、匈牙利语、日语到加拿大英语等。插件将以开源的形式发布。

你可以从我们的Github代码库下载插件的原型版本:

http://github.com/nje/jquery-glob

另外也可以在这里下载一些示例了解简单的用法。

理解国际化

jQuery国际化插件可以让你在JavaScript代码中轻松地处理不同文化之间的数字、货币和日期格式。例如,你可以使用这个插件正确地显示一个国家的货币符号:

你也可以用这个插件编排日期格式,这样日期和月份会以正确的顺序显示,而日期和月份的名称也能够得到正确的翻译:

请注意上图阿拉伯的日期格式中,年份显示成了1431。这是因为年份已经按照回历的方式转换过了。

一些文化差异比较明显,例如使用不同的货币或者不同的月份名称等。但另外一些差异却细微而又出人意料。例如,在有一些文化里,数字不是以均衡的方式分组的。在语言标记为“te-IN”的文化中(印度东部的泰卢固语),数字先按3位数字分组,然后再每2位数字分组。因此象数字一百万(1000000)就会被写成“10,00,000”。而有些文化就根本不对数字进行分组。所有这些细微的差异都能够被jQuery国际化插件自动处理。

要得到正确的日期可能非常需要技巧。不同的文化采用不同的历法,比如公历和回历。同一种文化也可能会采用多个历法,比如日本就同时采用公历和以天皇年号推算的纪年历。插件提供了函数将日期在所有这些历法中相互转换。

使用语言标记

jQuery国际化插件依据RFC 4646和RFC 5646标准里定义的语言标记来识别文化(参见 http://tools.ietf.org/html/rfc5646),语言标记通常由连字符将多个辅标签组合而成,比如:

语言标记

语言名称 (中文)

en-AU

英文(澳大利亚)

en-BZ

英文(伯利兹)

en-CA

英文(加拿大)

Id

印度尼西亚文

zh-CHS

中文(简体) — 标记不再使用

Zu

祖鲁文

请注意单一语言例如英语可以同时有多个语言标记。同是英语国家,加拿大采用的数字、货币和日期格式就不同于澳大利亚或者美国。你可以使用下面的语言辅标签查找工具来获取某个文化的语言标记:

http://rishida.net/utils/subtags/

jQuery国际化插件里一个叫做globinfo的文件夹包含了这350种文化的信息。实际上,这个文件夹里有700多个文件,因为它包括了每个文件的最小化(minify)和原始版本。

比如说,在globinfo文件夹,文件jQuery.glob.en-AU.js对应英文(澳大利亚),jQuery.glob.id.js对应印度尼西亚文,而jQuery.glob.zh-CHS对应简体中文。

示例:指定某种文化

假如你要创建一个德文的网站,并且希望在客户端的JavaScript脚本里使用德语习惯显示所有的日期、货币符号和数字。那页面的源代码也许与下面的HTML类似:

注意上面的span标签,它们标识了所有需要用国际化插件进行格式化的区域:商品的价格、上架的日期以及库存量。

要在网页里使用jQuery国际化插件,需要添加三个JavaScript文件:jQuery库,jQuery国际化插件和指定的文化习惯信息:

在上例中,我将包含了德语文化习惯的jQuery.glob.de-DE.js文件静态地加入到网页中,”de-DE”是语言标记,表示在德国使用的德语。

既然已经引入了必要的脚本文件,就可以使用下面的客户端JavaScript代码调用插件来显示价格、上架的日期以及库存量等值:

jQuery国际化插件为jQuery函数库添加了一些新的函数—包括preferCulture()和format()等新函数。你可以通过preferCulture()函数设置插件其他函数调用时使用的默认文化。preferCulture()函数接受一个语言标记作为参数,这个函数会使用最接近这个语言标记的文化。

$.format()函数才是真正用来编排货币、日期和数字格式的。$.format()函数的第二个参数是格式分类符。例如,传入“c”表示按货币的样式编排参数值。在githum的ReadMe文件里详细描述了所有格式分类符代表的意思:http://github.com/nje/jquery-glob

当我们在浏览器打开这个页面的时候,所有的东西都是按照德语习惯正确显示。货币符号采用的是欧元符号,日期采用德语的日期和月份名称,并且,数字分隔符用的是点号(.),而不是逗号(,)。

你可以通过运行示例下载中的3_GermanSite.htm文件来了解上述方法。

示例:用户动态选择一个区域设置

在前面的例子中,我们显式指定使用德语文化习惯(通过引用jQuery.glob.de-DE.js文件)。我们现在来看看动态设置文化习惯的几个例子。

比如说我们打算在页面上加一个包含所有350种文化的下拉框,当用户在下拉框里选择了一个文化,页面上所有的日期都按照这个文化的习惯显示。

这是网页的HTML源代码:

请留意所有包含了日期的<span>标签都有一个data-date属性(data-*属性是HTML 5里的新功能,同时在老的浏览器上也可以使用)。当用户在下拉框里选择了一个文化信息后,我们的代码将会格式化data-date属性里保存的日期。

为了显示所有可能的文化信息,我们要象下面这样添加一个叫jQuery.glob.all.js 的文件。

jQuery国际化插件里有一个叫做jQuery.glob.all.js的文件,这个文件包含了所有插件支持的350多种文化的国际化信息。即使经过最小化处理,还是有367k字节。由于文件很大,除非你的确需要一次性使用所有这些文化信息,我们建议你只添加所使用到的文化信息对应的JavaScript文件。下一个例子中,我会演示如何在网页中动态地加载某个语言对应的JavaScript文件。

下一步,把所有支持的文化名称添加到下拉框的列表里。可以用$.cultures这个属性获取它们:

最后,再写几行代码把每个span标签里的data-date属性的日期都抓出来并编排格式:

jQuery国际化插件里面的parseDate()函数将一个字符串的日期转换成JavaScript日期,而format()函数则用来编排这些日期的格式。“D”这个格式分类符说明使用长日期格式编排日期。

现在,只要页面浏览者选择这350种语言其中之一,内容都会被正确的国际化。你可以通过运行示例下载中的4_SelectCulture.htm文件来了解上述方法。

示例:动态加载国际化文件

在上一节说过,你应该尽量避免在页面中引用jQuery.glob.all.js文件, 因为它实在是太大了。相反,你可以动态地加载你所需要的国际化信息。

比如说,你要创建一个下拉列表显示下面这些语言:

下面的代码会在用户从下拉框中选择一个新的语言后执行。这段代码会先判断选中的语言对应的国际化脚本文件是否已经加载了。如果还没有加载,则使用jQuery的$.getScript()函数动态加载国际化脚本文件。

当国际化脚本文件被浏览器加载以后,就会调用globalizePage()函数,继而执行客户端的代码完成国际化。

这个方法的优点是可以让你避免加载整个jQuery.glob.all.js文件—只要加载使用到的文件,而且只加载一次。

示例下载中的5_Dynamic.htm文件演示了这个方法。

示例:自动检测用户的常用语言设置

大多数网站通过检测用户的浏览器设置来得到其常用语言,然后根据这种语言文化习惯来国际化网站内容。用户可以在浏览器中设置一个常用语言。这样,用户在请求页面时,常用语言设置会包含在请求Http消息头的Accept-Language字段中。

如果使用的是微软的IE浏览器,可以通过以下步骤设置你常用的语言:

1. 在菜单栏里选择工具Internet 选项。

2. 选择常规标签。

3. 在外观里点击语言按钮。

4. 点击添加在语言列表里增加新的语言。

5. 然后把你最常用的语言放在列表的最顶端。

你可以在这个对话框中设置多门常用语言。所设置语言的顺序关系将会体现在HTTP请求的Accept-Language字段中,如:

Accept-Language:fr-FR,id-ID;q=0.7,en-US;q=0.3

比较奇怪的是,用户不能够通过客户端的JavaScript脚本得到Accept-Language的内容。微软的IE和Firefox浏览器都支持一系列语言相关的属性,这些属性可以通过Window.navigator进行访问,例如windows.navigator.browserLanguage和window.navigator.language,不过这些属性中的语言一般指的是操作系统中设置的语言或者是浏览器的语言版本。你不能通过这些属性来得到用户设置的常用语言。

得到用户语言偏好(也就是Accept-Language字段中的内容)的唯一可靠方法就是编写服务器代码。例如,下面的ASP.NET页面就利用了服务器的Request.UserLanguages属性把用户的语言偏好设置赋给了客户端JavaScript的acceptLanguage变量(然后就可以通过客户端JavaScipt访问这些值了):

为了使这段代码能够正常工作,页面中必须包含与acceptLanguage对应的文化信息。例如如果你的常用语言是fr-FR(法语-法国),那就必须在这个页面中引用jQuery.glob.fr-FR.js或者jQuery.glob.all.js这两个JavaScript脚本之一,否则没办法得到文化信息。关于这个方法的应用可以示例下载中的”6_AcceptLanguages.aspx”。

如果对于页面中用户的常用语言没有对应的脚本包含其文化信息,那么$.preferCulture()方法就会引用中立(neutral)的文化信息(例如,使用jQuery.glob.fr.js,而不是jQuery.glob.fr-FR.js)。如果中立文化信息也不可用,那么$.preferCulture()方法就会回滚到使用默认文化(英语)。

示例:利用国际化插件使JQuery UI DatePicker实现国际化

国际化插件的目的之一就是使开发能适应各种不同文化的jQuery小工具的变得更为简单。

我们希望确保jQuery的国际化插件能够与现有的jQuery的UI插件如DatePicker共存并正常工作。为了实现这个目标,我们创建了DatePicker插件的一个整合版本,使它可以在渲染日历的时候利用我们的插件来提供国际化支持。下图演示了把jQuery的国际化插件和整合后的DatePicker插件一起加入到页面并选择印度尼西亚语的效果。

注意:一周中每一天的名称都以印度尼西亚语的缩写形式显示。 此外,月份的名字也以印度尼西亚语显示。

你可以从我们的github网站下载整合版的JQuery UI DatePicker。你也可以使用示例下载中文件7_DatePicker.htm所使用的版本。

总结

很高兴我们能够为jQuery社区提供持续的贡献。这个国际化插件已经是我们发布的第三个插件了。

感谢大家对我们年初发布jQuery模板(Templating)和数据链接(data-linking)的原型提供的很多非常有价值的反馈和设计方面的建议。最后我想趁这个机会感谢jQuery和jQuery UI团队在创建这些插件时所提供的帮助。

希望这能对您有所帮助。

标签:ASP.NET, Community News, Ajax, jQuery


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • [SDK]最新SharePoint 2010 SDK下载地址
  • VS2010 生产效率提升,第二部分
  • 用智能跟踪(IntelliTrace)窥入云端
  • “SharePoint 2010应用程序开发指南”节选 - 第二章 使用Visual Studio 2010 - 第一节
  • 非域,非匿名用户访问远程企业服务的详细步骤
  • 调用远程的企业服务的安全问题
  • ECB菜单控制器(for SharePoint 2007)
  • VB 2010 的自动属性, 集合初始化器以及隐线连续支持
  • 当Debug时弄平类的层次
  • Visual Studio 2010提高的生产力 - 第一部分

VS 2010生产力提升,第三部分

soma博客中文版 - 周五, 06/25/2010 - 17:24

[原文地址] VS 2010 Productivity Improvements, Part III

[发表日期] 23 Jun 2010 3:00 PM

我以前关于Visual Studio 2010生产力提升的帖子里着重介绍了所有VS开发者都能受益的功能。有些时候,最有用的功能是那些针对您正在使用的特定开发语言或平台的。毕竟C++开发者经常需要与C#开发者不同的功能,web开发者的需求也与Windows开发者的需求有所不同。

今天的帖子将着重于一些专为Windows C++和web开发者提供的功能。

MFC类向导

如果您是一位Microsoft Foundation Classes (MFC)的开发者,您可能对以前的MFC类向导有美好的回忆。现在又一次,您在MFC类设计时可以键入Ctrl+Shift+x来启动MFC类向导,并看到适合您设计的类的选项。向导会显示类名,位置,项目,继承关系和其他信息。它也能让您添加消息处理,函数和成员变量,重写虚函数。

MFC类向导也能帮助您导航到包含类定义,声明,函数和成员的源文件。以下是MFC类向导提供的导航到您的代码的一些方式。

Web代码摘录

即使您经常构建网站,有时还是会想不起来某个HTML标记或者ASP.NET控件。在Visual Studio 2010的网页标记编辑器中,最快的加入HTML,MVC,ASP.NET控件的方法是使用web代码摘录功能。键入Ctrl+K+X您就能够看到一个小窗口提供ASP.NET,MVC和HTML摘录的列表。

您能通过鼠标或者键入字母在列表中迅速的寻找,并键入tab来插入标记或者控件。下图是插入一个ASP.NET ListView控件的实例。

JavaScript IntelliSense 的增强

由于JavaScript是一种动态类型语言,它在IntelliSense和工具支持方面比静态类型语言落后一些。我们已经在Visual Studio 2010中做了一些JavaScript IntelliSense的增强来提升JavaScript编程的效率。

现在JavaScript对动态类型变量(type-inferred)有更丰富的IntelliSense支持。在下例中,bike是一个文字对象申明,IntelliSense在我下一行中使用它时引入了它的成员。您可以看见make,model和type都出现在下面的列表中了,year也是一样的,虽然我们在图中没看到。

那么对动态原型呢?如果我有一个动态原型变量,IntelliSense将会把原型成员加入选择下拉列表。在下面的例子中,我把函数createNewBike加入了Object。createNewBike把一个object对象作为输入参数并把它当作输出对象原型,把所有成员加到object里面。IntelliSense中返回的newbike显示了bike的所有成员。

下级预告

我的下一个Visual Studio 2010生产力提升的帖子将着重介绍Visual Studio 2010帮助按需定制IDE的扩展。

Namaste!


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • 用户体验!=挑剔的美工设计
  • Metadata是.NET平台的核心灵魂
  • 重新开博, 技术观察
  • 2010中的查阅项,以及一个相关的“疑似”bug
  • 推荐发博客的工具:ScribeFire
  • IIS Express简介
  • Silverlight PivotViewer现已发布
  • Visual Studio 2010的Productivity Power Tool扩展
  • VS 2010剪切/拷贝时“内存不足”问题的补丁

为网站和本地代码建模

soma博客中文版 - 周四, 06/24/2010 - 17:40

[原文地址] Modeling Websites and Native Code

[发表日期] Thu, Jun 17 2010

我之前曾在博客中介绍过Visual Studio 2010中的体系结构工具。这些工具为了解现有的应用程序、设计新功能以及验证实现是否遵守体系结构规则和限制,提供了一种很好的方式。

最近,我们又为MSDN订阅用户发布了可视化和建模功能包,这个功能包为Visual Studio 2010的体系结构工具添加了如下支持:

  • /C++代码的可视化
  • 网站可视化
  • 改进的UML图生成
  • 从UML图生成代码
  • 导入XMI 2.1
  • 结构性验证的扩展

开发人员常常面对的一项挑战是试图了解改变应用程序的一部分会如何影响其他部分。这种信息对控制固有的修改代码带来的风险,是至关重要的。

C/C++和Web开发除了同样的风险外,还有它们各自的一些额外的复杂性。C/C++开发需要了解头文件之间的依赖关系。而Web开发由于引入了如网页和控件等内容元素,使得其复杂性进一步增加了。

今天,我要更深入地介绍这个功能包中的本机代码和网站可视化功能。

C/C++代码的可视化

如果您有C/C++应用程序的源代码,则可以使用生成依赖项关系图(Generate Dependency Graph)菜单来可视化各个二进制文件之间存在的静态的依赖关系。下面,我已为照片浏览器(Photo Viewer)应用程序创建了一个基本的DGML图:

我可以展开这些节点,以深入了解产生这些依赖关系的调用。我还可以再展开节点来查找PhotoBrowser应用程序中CWebImageManager类的构造函数和WinHttp.dll中的WinHttpOpen函数之间的依赖关系。

另一个可视化多个二进制文件之间的静态依赖关系的好方法是通过简单的拖放,比如说从Windows资源管理器窗口到空白的DGML图。

该功能包还支持可视化头文件之间存在的依赖关系。您可以从生成依赖关系图菜单中选择“以头文件(By Include File)”,来查看您的解决方案中所有源文件和头文件之间的依赖关系,或者您可以在源代码编辑器中调用“生成头文件关系图(Generate Graph of Include Files)”功能,以可视化某一特定文件的依赖关系。

在下图中,您可以看到PhotoViewerView.cpp文件的直接依赖关系。您可以使用邻居(Neighborhood)浏览模式,以深入了解所有的依赖关系。

您还可以通过体系结构资源管理器(Architecture Explorer)浏览您的C/C++项目,类似于您对托管的项目做的那样,或者通过层依赖关系图来实现项目级依赖关系验证。

网站可视化

如果您在使用Visual Studio Web应用程序项目、网站或ASP.NET MVC项目,那么此功能包中为您的应用程序引入了丰富的结构和依赖关系可视化功能,可以大大提高您回答这个问题的能力:“当我修改这部分代码时,我的应用程序中哪些部分将会受到影响?”

使用生成依赖关系图菜单,来可视化您的网站结构和依赖关系:

这将生成一个类似如下的DGML文件:

由此产生的图包含代表您的ASP.NET Web应用程序各种结构元素的节点,即

  • ASP.NET网页(.aspx文件)
  • 自定义控件(.ascx文件)
  • 母版页(.master文件)
  • 网站文件夹
  • 应用程序文件
  • 代码背后的类型
  • 服务器控件

如果您双击这些节点中的任意一个,将直接跳转到源代码。这可以是一种很好的探索您的网站、并为其编写目录的方法。

ASP.NET MVC支持

当您为一个ASP.NET MVC Web应用程序生成了依赖关系图时,您还获得了如下MVC的具体数据:

  • 查看链接的控制器(使用默认公约)
  • 模型链接视图
  • 代表区域和查看文件夹的节点组

您的应用程序的其余部分

探索过了网站的结构和依赖关系后,您还可以通过使用获取代码依赖关系(Get Code Dependencies)功能,可视化您的应用程序的其余部分的依赖关系。

这里所产生的图形是经过过滤的,以显示从Checkout.aspx网页到Order业务逻辑类和Payment数据访问类的依赖关系链。

试试看

如果您是MSDN订阅用户,下载Visual Studio 2010的可视化和建模功能包尝试一下吧。

Namaste!


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • 用户体验!=挑剔的美工设计
  • Metadata是.NET平台的核心灵魂
  • 重新开博, 技术观察
  • 2010中的查阅项,以及一个相关的“疑似”bug
  • 推荐发博客的工具:ScribeFire
  • IIS Express简介
  • Silverlight PivotViewer现已发布
  • Visual Studio 2010的Productivity Power Tool扩展
  • VS 2010剪切/拷贝时“内存不足”问题的补丁

MSDN技术资源库改进预览

Scott Guthrie 博客中文版 - 周三, 06/23/2010 - 15:06

[原文发表地址]:Preview of MSDN Library Changes

[原文发表时间]:Tuesday, June 15, 2010 10:38 AM

 

为了使在线MSDN技术资源库的页面浏览更加流畅、.NET 框架的信息查询更便捷,MSDN团队正打算为此做些改进。

对于这些正在开发中的改进方案,为了征求反馈意见,他们在新的MSDN技术资源库预览站点上发布了包含这些改进的预览版本。他们还创建了问卷调查表,使您能了解这些想法,并向您咨询对这些改进的意见。我们由衷欢迎大家参与这个问卷调查并向我们提供反馈。

[除了写博客以外,我现在也使用推特(Twitter)来及时更新状态和分享链接,您可以到这个地址“推”我一下:twitter.com/scottgu]

一些改进的快速预览

下面是一些计划中改进地方的示例:

简化.NET命名空间导航栏

当前的MSDN类库文档仅仅单调地依照字母表顺序排列所有的.NET命名空间:

上面的方案有两个缺点:

l 一些用的很少的命名空间被列在了前面(例如Microsoft.Aspnet.Snapin和Microsoft.Build.BuildEngine)。

l 所有的子命名空间也被列出了,这样使得列表显得臃肿,而且增加了页面加载的时间。

新的MSDN资源库预览站点现在将“System”命名空间系列排在前面(因为它们最经常被用到),并且在首页上只列出第一级命名空间—以便于检索并加速页面的载入:

将类型概述和成员说明等页面合并到统一的专题下

之前您需要跳转好几个页面来查找类型的成员信息:

在MSDN技术资源库预览站点的目录中依然提供这些链接—但是现在成员信息在概述页上也会显示,便于在一个地方快速查看所有信息:

将常用的东西列在页面的顶部

作为新的MSDN技术资源库预览站点众多易用性改进之一,常用元素如“代码示例”和“继承层次结构”(针对类型)现在列在了帮助页面的顶部,以帮助您更快地找到他们:

参加问卷调查向我们提供反馈意见

以上只是新的MSDN预览站点中的一部分改进—它还包含了很多其他的改进。MSDN团队正在对新的布局和导航执行易用性进行研究,并且急切地期待您的反馈。

如果您有15分钟的空闲,并且愿意投票让我们知道您希望看到哪新的MSDN站点中加入哪些新的设计,请在6月30号之前参与这次问卷调查,稍稍体验一下这些改进,并且告诉MSDN团队您的想法。

注意:MSDN预览站点不是一个提供完整功能的MSDN版本—它只是用来试验一些新的创意,因此请不要期望它会集成MSDN其它一些功能,比如说搜索功能。一旦MSDN团队对某些提议的改进获得足够的反馈意见,他们会将这些改进集成到真实的站点上供各位使用。

希望这能对您有所帮助。

标签:.NET, Community News


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • [SDK]最新SharePoint 2010 SDK下载地址
  • VS2010 生产效率提升,第二部分
  • 用智能跟踪(IntelliTrace)窥入云端
  • “SharePoint 2010应用程序开发指南”节选 - 第二章 使用Visual Studio 2010 - 第一节
  • 非域,非匿名用户访问远程企业服务的详细步骤
  • 调用远程的企业服务的安全问题
  • ECB菜单控制器(for SharePoint 2007)
  • VB 2010 的自动属性, 集合初始化器以及隐线连续支持
  • 当Debug时弄平类的层次
  • Visual Studio 2010提高的生产力 - 第一部分

我喜爱的Expression 4新功能

soma博客中文版 - 周一, 06/21/2010 - 13:51

[原文发表地址] My favorite Expression 4 features

[原文发表时间] Mon, Jun 7 2010

今天,在纽约的Internet Week上,我们发布了Expression Studio 4.

Expression 4 是一套专业设计工具,用来为桌面、移动设备和网络应用设计丰富的用户体验。

Expression 4有许多新的增强和令人兴奋的功能,这里是其中我最喜欢的一些功能。

1. SketchFlow 原型发布到SharePoint

将基于Silverlight的SketchFlow项目发布到SharePoint为您提供了一种便捷的与团队分享原型的方式。最棒的是,原型一旦被发布,审核人员就可以将他们的反馈意见直接发布回SharePoint,不仅设计人员可见,而且其他审核人员也能够浏览。设计人员还能够同时查看多位审核人员的反馈。这种协同审核的工作方式使得交互设计原型更加完善了。

2. Blend的新行为 (Behavior)

Expression Blend 4包含了一些新的行为,用于增强您的应用设计流程。新的行为提供了更多的功能,同时又能使您始终专注于创作引人入胜的UI艺术。例如,使用这些新的行为,您将能够充分利用多点触摸、指定流畅的布局切换、定义条件逻辑以及更方便地与MVVM应用模块交互等等功能。还有一些新的行为是专为SketchFlow设计的, 包括保持屏幕状态以及对Sketchflow动画回放的更多控制。

3. 设计UI无需代码

Expression Blend 4能帮助您设计许多复杂的布局而无需编写任何代码。

例子: 假设您希望创建一个放射形状的列表,它的内容像旋转木马一样围绕排列成圆形。使用Blend 4, 您无需编写复杂的布局代码,只需简单地使用路径画出您想要的“形状”,Blend会自动将内容都恰当地摆放好。最棒的是,这不仅仅是一个设计时的功能,它同样适用于数据驱动的列表并支持动画。创建那些难以想象的复杂、丰富且极具创造力的布局,就如同绘制一条路径一样简单。

4. 使用HTML & JavaScript编写Expression Web插件

作为一个精通web的开发者,您可能更习惯使用web语言:JavaScript, HTML 和 CSS.  在Expression Web 4中我们提供了仅使用您已熟悉的web语言就能扩展应用的方法。您现在可以仅使用HTML, CSS, JavaScript 和一个简单的XML manifest 文件来添加您自己的菜单项、工具栏按钮、控制板甚至对话框。您有自己的标记用来在页面创建在线地图吗?有自定义的Twitter feed?现在您能够很方便地扩展Expression Web来将这些内容添加到您的任何站点中去。

5. 使用SEO Diagnostics改进您的搜索排名

新的SEO分析不仅包括普通的重复或缺失的标题、标记和header的检查,还检查搜索敏感文本内容(比如链接文本和页面标题),以确保他们不包含过于笼统、像“点击这里”或“欢迎”等不能为您的页面增加任何搜索价值的文本. 

我们还提供了深入的帮助文档来帮助您了解为何这些规则对获得好的搜索排名非常重要。这些文档让我们的报告不仅仅是一个简单的核查清单,还帮助您了解和掌握SEO艺术。

6. 编码和广播直播活动

使用Expression Encoder 4您可以以IIS Smooth Streaming 格式广播直播视频,以保证HTTP上使用Silverlight实现无间断回放。选择H.264 或 VC-1 输出,配置流媒体的数量和大小,然后直接部署到运行着IIS Media Services的服务器上。这个经重新设计的用户接口使您能方便地从多个直播源和基于文件的内容中进行选择并创建高质量的实时广播输出。

我们也利用这次发布的机会简化了Expression产品家族,使其更贴近Visual Studio 2010产品家族。新的Expression 4 产品包括:

  • Expression Web 4 专业版 (Professional)
  • Expression Studio 4 高级版 (Premium)
  • Expression Studio 4 旗舰版 (Ultimate)

现拥有Expression Studio 3或Expression Web 3 产品的用户能免费升级到版本4产品: Expression Studio 4 Ultimate 和 Expression Studio 4 Web Professional. 请访问Expression 站点了解详情。

Namaste!


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • 用户体验!=挑剔的美工设计
  • Metadata是.NET平台的核心灵魂
  • 重新开博, 技术观察
  • 2010中的查阅项,以及一个相关的“疑似”bug
  • 推荐发博客的工具:ScribeFire
  • IIS Express简介
  • Silverlight PivotViewer现已发布
  • Visual Studio 2010的Productivity Power Tool扩展
  • VS 2010剪切/拷贝时“内存不足”问题的补丁

VS2010 生产效率提升,第二部分

soma博客中文版 - 周二, 06/08/2010 - 16:13

[原文地址] VS 2010 productivity improvements, Part II

[发表日期] Tue, Jun 1 2010 3:42 AM

你可以说代码编辑器是所有开发体验中最重要的功能,毕竟它让你创建、查看和更改你的代码。没有代码编辑器,一个IDE中任何其他功能都无从谈及,而开发环境中的其余部分都是围绕编辑器创建的。

上周,我们谈到了3个Visual Studio 2010中的新功能:多显示器支持,Multi-Targeting,和代码导航。这周我想花点时间来谈Visual Studio 2010中关于代码编辑器的改进。

改进的智能提示

从某些方面讲,智能提示是提供类型和其成员最方便访问的文档。在有智能提示之前,开发通常意味着你要把你最喜欢的类浏览器打开在旁边帮助你查找那些你想要的类型和类型成员。有了智能提示,输入一个句点或者通过快捷键Ctrl-J就可以弹出你想要知道的类型和其成员的任何信息。

在Visual Studio 2010中,智能提示的改进允许你查找类型和其成员中的任何子字符串,而不是严格按照字母顺序。就像下面你看到的,当我输入”Aircr”,我除了获得”Aircraft”和”AircraftStatus”的提示,还有”AddToAircraft”和其他包含这个字符串但不是以”Aircr”开头的方法。

智能提示现在也支持通过大写字母查找成员,下面,我可以输入”ATP”来查找”AddToPassengers”, “AddToPassengerStatus”和”AddToPeople”.

块选择和块编辑

有时你需要一次性对很多连续的、相似的代码做相同的改动。或许你正改动C#、VB或者C++代码中的一个访问修饰符或字符串,亦或你正改动HTML或ASP.NET代码中的属性值。块选择可以让你选择一列文本并且以组的方式编辑它们,而不是一次一行。你可以按住Alt键同时使用鼠标来选择数列文本。

一旦文本块选中了,你可以在所有选中的文本行上删除或者插入需要的文本。如果你想要简单的插入一些东西(比如路径字符串中的文件夹或者一个关键字),你可以先建立一个0宽度的选择块然后开始输入,你输入的内容将会被插入到所有选中的代码行上。你也能用这个功能向代码块中快速的添加或者删除一个Tab。

缩放

你可能已经在Word、Internet 浏览器、或其他应用程序中使用过缩放功能,并利用这个功能能大幅内容中快速查找你想要的内容或者向其他人突出一个区域。现在,你可以在Visual Studio的代码编辑器中使用相同的指令来缩放。按住Ctrl键并且滚动你的鼠标滚轮来调整缩放系数。同时你将会在编辑器窗口的左下角看到缩放系数的变化。

如果你有时要向他人做演示,在投影仪上组织代码评审、使用LiveMeeting或者其他程序共享应用程序、或者使用屏幕转换工具比如Camtasia创建视频,缩放可以说是一个必不可少的方式来帮助你的听众清楚的查看你的代码。缩放可以用来在大文件中快速查找一些代码或阅读大文件的内容。同时,我们还能进行代码折叠,虽然这一并不是Visual Studio 2010中新加入的功能,但它也可以用来帮助快速阅读代码。

下一篇

我下篇有关Visual Studio 2010的生产效率提高的文章,将会集中在一些为特定语言和任务设计的功能,如果你为Web编写代码或者创建C++ MFC应用程序,请不要错过下一篇。

Namaste!

View article...


推荐文章
  • 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
  • 用户体验!=挑剔的美工设计
  • Metadata是.NET平台的核心灵魂
  • 重新开博, 技术观察
  • 2010中的查阅项,以及一个相关的“疑似”bug
  • 推荐发博客的工具:ScribeFire
  • IIS Express简介
  • Silverlight PivotViewer现已发布
  • Visual Studio 2010的Productivity Power Tool扩展
  • VS 2010剪切/拷贝时“内存不足”问题的补丁