安装Silverlight

开发Silverlight

Scott Guthrie 博客中文版

聚合内容
更新时间: 1 年 27 周 前

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

周三, 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号的精选好文链接

周一, 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提高的生产力 - 第一部分

“WebMatrix”简介

周三, 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的一个新视图引擎

周二, 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提高的生产力 - 第一部分

IIS Express简介

周五, 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提高的生产力 - 第一部分

Silverlight PivotViewer现已发布

周五, 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扩展

周四, 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剪切/拷贝时“内存不足”问题的补丁

周三, 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国际化插件

周五, 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提高的生产力 - 第一部分

MSDN技术资源库改进预览

周三, 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提高的生产力 - 第一部分