RSS聚合
VS 2010 和 .NET 4.0 系列之《ASP.NET, HTML, JavaScript 代码片段支持》篇
【原文地址】ASP.NET, HTML, JavaScript Snippet Support (VS 2010 and .NET 4.0 Series)
【原文发表日期】 Friday, September 04, 2009 2:12 AM
这是我针对即将发布的VS 2010 和 .NET 4所撰写的 贴子系列的第六篇。
今天的贴子讨论VS 2010中另一个非常有用的改进,即对HTML/ASP.NET/JavaScript snippet(代码片段)的支持。代码片段允许你创建一段代码和标识,然后只需最少量的字符键入就可很快地在你的应用中将其施用,从而使你在源码视图内更有效率。
Visual Studio在以前的版本中只在VB 和 C#中支持“代码片段”的概念,对HTML, ASP.NET标识和JavaScript则不支持。在VS 2010中,我们现在对这些内容也支持代码片段了。
使用ASP.NET 代码片段(Snippets)让我们来做一个示范,看如何使用代码片段来很快地实现一个常见的涉及安全的场景。具体地来说,我们将实现在网站的右上方显示“[ Login ]” 链接或“[ Welcome UserName ]”消息(取决于用户是否已经登录)所需之功能:
上面的功能是在你使用VS 2010中新的ASP.NET 项目起始模板创建项目时自动为你添加的。但为了这个示范的缘故,假定我们将从空白的母版页出发,完全从头建造起来。
一开始,在母版页中加一个标准的<div>元素,然后将光标放于其中间:
我们将使用内置的<asp:loginview>控件来帮助实现我们的场景。<asp:loginview>控件是个模板化的控件(是在ASP.NET 2.0中最先引入的),允许我们轻松地在“Anonymous(匿名)” 和 “LoggedIn(已登录)”模板(取决于用户是否已被认证)自动显示之间转换。但我们不是将手工键入<asp:loginview>标识,而是将使用VS 2010中新的代码片段支持。
在编辑器中键入“<log”,将调出intellisense,显示以这些字符起始的元素,控件和代码片段。
我们将从上面的列表中选择内置的“loginview”代码片段,按“tab”键来完成之:
至此,我们选择了要使用的代码片段,我们可以再次按“tab”键来执行该代码片段,导致它立刻将代码片段名称替换成下面的标识。注意下面,该代码片段为我们加了新的<asp:loginview>控件,在其中自动地定义了2个最常用的模板。我们能够只用6次键击(键入“<log”击键4次,加2个tab键)就实现了上面的全部功能。
现在我们来实现“AnonymousTemplate”。
在编辑器中键入“<a”,将调出intellisense,显示可为我们所用的元素和代码片段:
我们将从上面的列表中选择内置的 “a” 代码片段,按“tab”键来完成。再按一次tab键,会执行该代码片段,导致它将代码片段名称替换成下面的标识:
上面的“href”属性值和 <a> 元素中的内容被绿色背景高亮显示了。这表明这些值是可替换的参数,我们可以在填充它们的值时自动在它们之间来回tab,而避免使用光标键或按鼠标(从而提高了速度)。
不用移动光标或鼠标,我们就可以开始键入我们想要送用户去的登录网页的URL,假如他们在网站上还没被认证的话:
完成之后,我们可以按“tab”键,VS会自动地在编辑器中为我们高亮显示第二个内容参数(不需手工移动光标或鼠标):
然后我们可以键入我们想要显示的文字(再一次地,不用移动鼠标或按光标键):
完成“<AnonymousTemplate>”之后,我们可以移到"<LoggedInTemplate>”。我们将在编辑器中键入“<log”,调出intellisense,选择内置的“loginname”代码片段:
再按一次tab键会执行该代码片段,导致它替换成下面的标识:
上面的“FormatString”属性值已经自动地为我们填充了默认的欢迎文字消息。其值还被自动地高亮显示了,万一我们想要做改动的话(而不必移动鼠标或光标键)。在这个例子中,我们将保留默认的文字。
最后的标识看上去象下面这样:
当运行应用时,上面的标识在我们还没被认证时,会显示“[Login]”链接:
在我们登录之后,我们将看到象下面这样的欢迎字符串:
实现这个完整场景所用的总键击次数比我们以前手工键入所用的总键击次数的15%还要少。击键快的话,我发现我能在少于15秒钟内实现这个完整的场景, :-)。
ASP.NET MVC 代码片段(Snippets)VS 2010为所有的ASP.NET控件和HTML标识元素提供了内置代码片段。
VS 2010也为常见的ASP.NET MVC视图场景,内置的ASP.NET MVC HTML辅助方法提供了内置的代码片段。
例如,我们可以在ASP.NET MVC视图中键入“<act” ,选择“actionlink” 代码片段:
完成之后,按“tab”键,该代码片段会执行,导致它将片段名称换成下面的标识:
注意,“linktext” 和 “actionname” 值被标记为代码片段参数,这意味着,我们可以不用使用光标键或按鼠标就可以轻松地将它们的值换掉。第一个参数linktext值是默认选择的,这意味着我们只要键入字符就可以马上替换其值,然后按tab键就可以马上选择和替换第二个参数actionname:
自定义代码片段
Visual Studio 2010包含了超过200个内置的代码片段,这些片段在你安装它之后即可为你所用。
更棒的是,你不局限于仅使用内置的代码片段。你还可以轻松地创建你自己的代码片段(连带可置换的参数),可将它们导入2010,以及轻松地与其他开发人员分享。这方便你很快地自动化你自己的常做任务。
这篇文章描述了VS 2008中现有的代码片段支持,对如何创建和管理自定义代码片段提供了一些背景。
结束语代码片段,是个非常有用的特性,能使你在编辑器内减少击键次数,允许你更快地完成场景和任务。现在代码片段不光在VB 和 C#启用了,也在HTML, ASP.NET 和 JavaScript文件中启用了,使得该功能更加有用, 使你工作起来更有效率。
希望本文对你有所帮助,
Scott
附注: 除了写博客外,最近我一直在使用Twitter发短贴和共享链接。你可以在Twitter上通过 http://www.twitter.com/scottgu (@scottgu是我的twitter名)跟随我。
标签: ASP.NET, Visual Studio, .NET, Community News推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- 同名函数的 带 params 参数 与 不带 params 参数的执行优先级
- SharePoint 2010 Technical Preview “半公开”发布
- 编写强类型帮助函数的另一个选择
- Chrome OS和Android的背后
- [临时]读者调查问卷
- Connection Pool Timeout 与 Connect Timeout = 0
- SharePoint磁盘容量规划
- 托管代码 (managed code)和非托管代码 (native code) 的互操作性 (interoperability) – Part I
- 将页面内容输出到字符串中
VS 2010 和 .NET 4.0 系列之《代码优化的Web开发Profile》篇
【原文地址】Code Optimized Web Development Profile (VS 2010 and .NET 4.0 Series)
【原文发表日期】Wednesday, September 02, 2009 12:55
这是我针对即将发布的VS 2010 和 .NET 4所撰写的 贴子系列的第五篇。
今天的贴子讨论一个我们在VS 2010中新引进的“Web开发 (代码优化了的/Code Optimized)”配置集(profile)选项,它允许你可选择地配置Visual Studio在这样一个IDE布局模式中运行,该模式隐藏了“所见即所得(WYSIWYG)” web设计器,围绕着丰富的“侧重于代码编辑”的工具体验做了优化。
VS 2010 Web 配置集(profiles)在你第一次运行VS 2010时,它会提示你选择一个要使用的IDE profile。你所选择的profile会配置工具窗口在IDE中是怎么默认显示和定位的,并且设置默认的键盘快捷键。然后你可以使用IDE中的“工具->选项”菜单对这些设置进行定制,对它们进行修改。之后,你还可以通过选择“工具->导入和导出设置”菜单命令进行重置,选择不同的profile。
在你第一次运行VS 2010 Beta2时,你会注意到选项列表中包含了2个“Web开发”profile:
第一个“Web开发” profile 是VS 2008中现有web开发profile选项的演化版(内含一些很棒的帮助改善VS 2010中屏幕使用面积方面的改进)。它还允许你利用我们在VS 2010中完成了的极好的WYSIWYG HTML和ASP.NET网页设计器方面的所有改进(在这个系列的以后贴子中,我会对此做详述)。
第二个“Web开发(Code Optimized)” profile 选项是我们在VS 2010中新引进的 profile ,针对那些在做web开发时不想要使用WYSIWYG设计器的web开发人员做了优化,这些开发人员在开发网页时看重“源码唯一(source only)”的编辑体验。这个IDE profile 选项把WYSIWYG网页设计器隐藏了起来,配置一个最大化显示在屏幕上代码量的默认IDE布局(带最少的工具条和工具窗口),它还给网页提供了完整的intellisense/调试和源码编辑器体验。
比较VS 2010中的Web开发profile你可以通过比较施用这2种“Web开发” profile 之后的Visual Studio IDE布局的屏幕截图来感觉一下这2种 profile 间的区别:
“Web开发” Profile 的屏幕截图:
下面的布局示范了在施用了标准的“Web开发” profile 之后的默认IDE布局(显示器分辨率设置在750x650),这个profile是VS 2008中现有的“Web开发” profile的进化版,展示了任何HTML或ASP.NET网页的文档窗口的设计/分割/源码标签(tab):
“Web开发(Code Optimized)” Profile 的屏幕截图:
下面的屏幕截图示范了在施用了新的“Web开发(Code Optimized)” profile 之后的默认IDE布局。你可以看到,该profile就显示和编辑屏幕上的代码方面,优化了屏幕的使用面积,在默认设置下,隐藏了所有的工具条,并在HTML和ASP.NET网页的文档窗口中禁止和隐藏了设计器标签(tab):
下面是一张在较大一点的显示器分辨率下的“code optimized” profile的屏幕截图:
混合和配对使用特性
在标准的“Web开发” profile 和 “Web 开发 (code optimized)” profile中使用的所有不同的特性都是通过Visual Studio的“工具->选项”配置对话框来呈现的。这意味着,你可以随便从哪种VS profile(包括一般的,VB 和 C# profile)出发,然后按你的爱好启用或关闭个别的特性来定制IDE布局和编辑体验。
例如,在下面,你可以看到“工具->选项”对话框中的启用或禁止HTML设计器的复选框(该选项配置了设计/分割/源码标签是否显示在每个网页的底部):
这给了你这样的灵活性: 可以按自己爱好定制开发体验,可以创造一个为你自己和你最喜爱的开发方式优化了 的个人化工具体验。
VS 2010中发布的这2种web开发profile提供了2个很好的预配(preconfigured)起始点,我们认为它们给世界上一大群web开发人员提供了一套很好的默认配置。你可以轻松地选择从你感觉最好的选项出发,然后按你的爱好可选择地做进一步配置。
结束语我们只是把这个新的profile作为选项提供给那些侧重于源码web开发体验的开发人员。WYSIWYG HTML/ASP.NET 设计器还将继续在VS 2010中所有其他的profile中默认启用(就象在VS 2008中一样),我们在VS 2010对该设计器也做了很多改进(我将在以后的贴子中对此做详述)。所以,别担心,WYSIWYG设计器绝对不会消失的,它会在以后的每个版本中继续得到增强和改进。
但我们认为,对那些“侧重源码编辑” web开发体验,不使用WYSIWYG设计器的开发人员来说,这个新的 “Web 开发(Code Optimized)” profile是个非常棒的新选项。该profile选项给他们提供了一个简洁的方式来在IDE布局中隐藏设计器(以及相关的工具窗口和工具条),从而享用一个侧重源码的web开发体验。
希望本文对你有所帮助,
Scott
附注: 除了写博客外,最近我一直在使用Twitter发短贴和共享链接。你可以在Twitter上通过 http://www.twitter.com/scottgu (@scottgu是我的twitter名)跟随我。
标签: ASP.NET, Visual Studio, .NET, Community News推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- 同名函数的 带 params 参数 与 不带 params 参数的执行优先级
- SharePoint 2010 Technical Preview “半公开”发布
- 编写强类型帮助函数的另一个选择
- Chrome OS和Android的背后
- [临时]读者调查问卷
- Connection Pool Timeout 与 Connect Timeout = 0
- SharePoint磁盘容量规划
- 托管代码 (managed code)和非托管代码 (native code) 的互操作性 (interoperability) – Part I
- 将页面内容输出到字符串中
VS 2010 和 .NET 4.0 系列之《多显示器支持》篇
【原文地址】Multi-Monitor Support (VS 2010 and .NET 4 Series)
【原文发表日期】 Monday, August 31, 2009 10:37 PM
这是我针对即将发布的VS 2010 和 .NET 4所撰写的 贴子系列的第四篇。
今天的贴子讨论其中一个IDE改进,我知道很多人都在迫切期望VS 2010的---多显示器支持!
使用多个显示器VS 2008是在一个单一的顶层窗口中容载所有的文档、文件和设计器的,这不幸地意味着你不能将IDE在多个显示器中做分割。
VS 2010现在解决了这个问题,允许编辑器,设计器和工具窗口可以移到顶层窗口之外,居于你想要的任何地方,你系统的任何显示器上。这允许你显著地改善对你的屏幕可使用面积的使用,优化总的开发工作流程。
想利用多个显示器的特性是非常容易做的。只要点击任何一个文档标签(tab)或者工具窗口,将其拖到顶层IDE窗口中一个新的位置,或者拖到IDE之外,到你想要的任何显示器上的任意一个位置:
之后你可以将文档、窗口拖回到主窗口,如果你想要重新定位(dock)它的话(或者右击,选择重新定位选项)。
Visual Studio会记住文档保存时最后的屏幕位置,这意味着,你可以关闭项目,再打开时,会将文档自动会恢复到你上次保存时的布局。
一些多显示器的场景下面是多显示器特性支持的几个场景的一些屏幕截图(很明显,我未能涉及的场景太多太多)。想完全理解怎么回事的话,假装下面屏幕截图中的每个窗口都在不同的显示器上。。。
代码源码文件支持:
示范了代码文件如何可以分置于多个显示器上。在下面,我将一个.aspx文件放在主IDE窗口中,然后将一个后台代码文件和另一个单独的类文件移到另外的屏幕上了:
工具窗口支持:
示范了VS10中的任何工具窗口/窗格(pane)如何可以分置于多个显示器上。在下面,我将测试运行器工具窗口移到了另一个屏幕上了:
设计器支持:
示范了VS中的设计器如何可以分置于多个显示器上。在下面,我将WPF/Silverlight WYSWIYG设计器和属性网格移到了另外的屏幕上了(其后台代码文件依然留在主窗口中)。注意, VS10 中的属性网格现在支持针对WPF 和 Silverlight应用的行内(inline)颜色编辑器,数据绑定,样式,画刷,以及一大堆其他东西(在以后的贴子里我会做讨论):
结束语
如果你所用系统连有多个显示器的话,我认为你会发现VS10中新的多显示器支持会大为提高你的生产力。
如果你的计算机还没有多个显示器的话,这也许是个得到多个显示器绝好的借口哟! :-)
希望本文对你有所帮助,
Scott
附注: 除了写博客外,最近我一直在使用Twitter发短贴和共享链接。你可以在Twitter上通过 http://www.twitter.com/scottgu (@scottgu是我的twitter名)跟随我。
标签: ASP.NET, Visual Studio, .NET, Community News推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- 同名函数的 带 params 参数 与 不带 params 参数的执行优先级
- SharePoint 2010 Technical Preview “半公开”发布
- 编写强类型帮助函数的另一个选择
- Chrome OS和Android的背后
- [临时]读者调查问卷
- Connection Pool Timeout 与 Connect Timeout = 0
- SharePoint磁盘容量规划
- 托管代码 (managed code)和非托管代码 (native code) 的互操作性 (interoperability) – Part I
- 将页面内容输出到字符串中
VS 2010 和 .NET 4.0 系列之《多定向支持》篇
【原文地址】Multi-Targeting Support (VS 2010 and .NET 4 Series
【原文发表日期】Thursday, August 27, 2009 11:48 PM
这是我针对即将发布的VS 2010 和 .NET 4所撰写的 贴子系列的第三篇。
今天的贴子讨论VS 2010中增强了的多定向(multi-targeting)支持,该支持允许你使用和定向.NET的多个版本。我们在VS 2010版本中做了重大的架构级工作,实现了若干个新的多定向特性,提供了更佳的体验。
理解并列(Side-by-Side)的含义VS 2010可以和Visual Studio的早期版本并列(side by side)安装。这意味着,你可以在安装了VS 2008/VS 2005/VS 2003的同个机器上安装VS 2010,如果你想要的话,可以同时使用所有这些版本。
.NET 4.0也可以和.NET的早期版本并列(side by side)安装在同个机器上。.NET 4.0给了框架类库和CLR引擎新的版本号码,这意味着,它可以完全独立于.NET 2.0, 3.0 和 3.5运行。这意味着,你可以在安装了.NET 2.0/3.0/3.5的机器上安装 .NET 4.0, 配置某些应用使用.NET 4.0来运行,其他应用使用老一点的.NET版本来运行(IIS管理器工具允许你配置一个ASP.NET应用所使用的.NET版本)。这允许你将.NET 4.0用于新的应用,而没有必要测试和升级所有现有的应用。
VS 2008的多定向支持VS 2008是第一个包含.NET多定向支持的Visual Studio版本,这意味着,你不光可以使用VS 2008创建和编辑.NET 3.5 项目,也可以创建和编辑.NET 3.0 和 .NET 2.0项目。这允许开发人员更快地升级和充分利用新的Visual Studio工具特性,而不必要求在运行他们应用的客户机和生产性服务器端安装新一点的.NET 版本。
VS 2008的多定向支持利用了.NET 2.0, .NET 3.0, 和 .NET 3.5都是在同个版本的CLR之上运行的这个事实,而这三个.NET 版本的主要区别在于它们的框架类库。结果是,Visual Studio的编译器能够生成同样的IL输出,调试器能够针对同个CLR引擎进行调试,IDE对多定向的支持主要着重于过滤掉不支持某个给定.NET 版本的新的程序集和项目模板的的显示。
这个多定向体验是可行的,尽管不完美。VS 2008中的Intellisense总是显示.NET 3.5版本的框架类库的类型和成员(即使你定向的是.NET 2.0)。这意味着,你有时候会在无意中使用一个ASP.NET 3.5才有的方法,尽管你是在开发一个ASP.NET 2.0 项目。
VS 2010的多定向支持我们在VS 2010中做了一些非常重大的架构级改动,来促成更好和更精确的多定向支持。
VS 2010现在给每一个.NET版本都配置了我们称之为“引用程序集(reference assemblies)”的东西。“引用程序集”只包含某个特定框架程序集的元数据,而不是它的实现(因此所占硬盘极小)。但这个元数据足够确保VS 2010总是能够在定向某个.NET 框架版本时提供百分之百精确的intellisense。这还意味著,通过设计器中属性表格呈示的属性,对象浏览器中的API列表,以及IDE中所有其它各种地方都能精确地显示出确切版本的API签名。
我们还更新了VS 2010调试器,profiler和编译器,使之能够定向多个CLR版本。
使用VS 2010的多定向支持为更好地理解这些新的多定向特性的工作原理,让我们用VS 2010来创建一个新的ASP.NET Web应用。我们先用 “文件->新项目”菜单命令调出“新项目”对话框,使用对话框顶部的版本下拉框过滤项目模板,使之只显示.NET 2.0所支持的模板,然后创建一个新的ASP.NET 2.0 web应用项目:
因为这个项目定向的是.NET 2.0,VS 2010 会自动对工具箱和标识intellisense进行过滤,只允许我们使用那些随ASP.NET 2.0发布的控件。不象VS 2008,VS 2010中的属性表格现在自动过滤,只显示那些ASP.NET 2.0按钮控件所支持的属性:
在编写代码时,VS 2010现在也只显示.NET 2.0所支持的那些类型和方法/属性/事件的代码intellisense。在下面,在键入“Response.Re”时,你可以看到ASP.NET 2.0 “Response”对象的intellisense:
在使用内置的VS web服务器运行应用时,它会使用 ASP.NET 2.0版本来运行(VS 2010调试器调试的是CLR 2.0进程):
将项目从.NET 2.0 移植到.NET 4.0
或者,我们也可以在解决方案管理器中右击项目,调出它的属性对话框,来将项目重新定向,使之在.NET后期版本下工作。我们可以选择对话框上的“定向框架(target framework)”下拉框,选择我们想要定向的.NET框架版本:
我们可以从上面的各种不同的.NET版本中任选一个。该列表中包括了一个"Server Core(服务器核心)” profile,支持无界面的Windows Server 2008 R2版本,它不支持某些APIs。因为我们用于元数据和intellisense的引用程序集能够支持任意一个版本,如果它们引进任何新的API的话,我们甚至能够在将来的服务包中发布它们的版本,以促成百分之百的精确性。
在这个示范中,我们将选择把项目移植到.NET 4.0,完毕后,VS 2010将自动地更新项目的引用程序集,以及项目的web.config文件来适当反映出所用的新版本。
做完这一步后,VS 2010 会过滤工具箱和标识intellisense,显示ASP.NET 4.0版本中所有新的控件和属性。 例如,下面的属性表格现在显示了新的“ClientIDMode”属性,该属性是ASP.NET 4.0中所有控件都有的,它能让你控制客户端ID是如何输出的,以避免丑陋的客户端id(这是ASP.NET 4.0中的一个新特性,我会在以后的博客中讨论):
至此,我们将项目升级到使用.NET 4.0,VS 2010现在也会显示.NET 4.0中的新的类型和类型中的方法/属性/事件的代码intellisense。例如,在下面,你可以看到 ASP.NET 4.0 “Response” 对象上的一些新的redirect方法(是在前面项目定向.NET 2.0时没有出现的):
上面新的Response.RedirectPermanent()方法方便了发出“HTTP 301 Moved”回复,该回复可以避免你的网站在搜索引擎中积存失效的链接。URL导向引擎现在也同时为基于ASP.NET Web Forms 和 ASP.NET MVC的应用所支持,新的Response.RedirectToRoute()方法允许你轻松地重新定向到在其中声明的路径。
最后,在我们使用内置的VS web服务器运行应用时,VS 2010现在会使用ASP.NET 4.0版本来运行这个应用:
结束语
VS 2010的多定向支持允许你开发定向 .NET 4.0, .NET 3.5, .NET 3.0 和 .NET 2.0的项目。它允许你开始利用新的工具特性,而不必马上将运行你应用的客户机和服务器升级到.NET 4.0。这改进了的多定向支持将确保其体验比以前更好,更精确。
希望本文对你有所帮助,
Scott
附注: 除了写博客外,最近我一直在使用Twitter发短贴和共享链接。你可以在Twitter上通过 http://www.twitter.com/scottgu (@scottgu是我的twitter名)跟随我。
推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- 同名函数的 带 params 参数 与 不带 params 参数的执行优先级
- SharePoint 2010 Technical Preview “半公开”发布
- 编写强类型帮助函数的另一个选择
- Chrome OS和Android的背后
- [临时]读者调查问卷
- Connection Pool Timeout 与 Connect Timeout = 0
- SharePoint磁盘容量规划
- 托管代码 (managed code)和非托管代码 (native code) 的互操作性 (interoperability) – Part I
- 将页面内容输出到字符串中
VS 2010 和 .NET 4.0 系列之《起始项目模板》篇
【原文地址】Starter Project Templates (VS 2010 and .NET 4.0 Series)
【原文发表日期】Wednesday, August 26, 2009 8:07 PM
这是我针对即将发布的VS 2010 和 .NET 4所撰写的贴子系列的第二篇。
今天的贴子是关于VS 2010和ASP.NET 4中创建新的ASP.NET Web项目时另一个细小但我认为非常棒的变动,即,既能创建“空白项目”,也能创建预先拥有一定布局以及一些常见功能的项目,可以在建造新的应用时帮你起步。
创建新的项目在VS 2010中使用文件->新项目 或 文件->新网站菜单命令时,你将看到象下面这样的一个“新项目”对话框,允许你在创建新项目时,通过语言和应用类型来过滤选择要使用的不同的项目模板:
VS 2010中发布有创建新的ASP.NET应用时可用的“空白的”项目模板,生成应用所需的最少项目文件内容。这个系列的上一篇中包含了一张屏幕截图,显示了你用“空白的ASP.NET Web应用”项目模板开始新的应用时所生成的项目内容。
用起始模板(Starter Template)创建新的项目VS 2010还提供了起始模板(starter template)项目,允许你创建一个已经带有一些布局/CSS结构以及实现了一些常见功能的新ASP.NET项目。
我们首先在ASP.NET MVC 1.0中尝试了这个概念,它的项目模板提供了母版页,CSS文件,JavaScript库文件,登录系统,以及预先实现的“主页”和“关于”页。 VS 2010在创建新的ASP.NET Web Forms项目时也添加了同样的支持。
在选择默认的“ASP.NET Web Application”项目模板时,你会发现所创建的ASP.NET Web Forms项目在其中预先生成了一些目录和文件:
它包含了一个Site.Master母版页文件,该文件提供了网站总的布局(含有页眉,页脚等等),使用了一个含有所有样式的CSS样式文件。它还有一个“Scripts”目录,内含jQuery文件(ASP.NET AJAX可以通过脚本管理控件来提供)。在根目录中,它还包含了基于母版页的“default.aspx” 和 “about.aspx”网页,其中包含了一些样板内容。它还含有一个“Account”目录,内有实现了基于表单的认证系统的若干网页,可用来登录,注册和改变用户的密码:
你不用编写任何代码或配置什么就可以运行这个项目,得到一个运行正常的网站:
该网站对基于表单的安全认证有完整的支持,预先连接好了使用ASP.NET成员系统来做密码管理:
网站中的所有样式和内容都是用CSS来配置的,利用了ASP.NET 4中Web Forms的一些新特性,包括,干净的客户端“id”(不再掺杂ctrl_,ASP.NET 4 给予你对客户端id的完全控制),内置服务器控件的基于CSS而不是基于表格的显示。我会在该系列以后的贴子中对Web Forms 的这些新特性(以及新加的许多其他特性)做深入讨论。
在线模板陈列室除了内置的项目模板外,VS 2010在 “新项目” 和 “添加新项” 对话框中还支持查询在线模板陈列室的功能。你可以向该陈列室贡献你自己的模板,对其他人提交的模板做打分和评论,按项目类型、关键词和社区评分来做查询和过滤。然后你可以在对话框中很轻松地下载和在本地安装任何模板:
希望这将有助于创建一大堆有用的项目起始工具包(project starter kits,任何项目类型的,而不仅仅是web的),可以很容易被开发人员发现,并且可以在建造解决方案时用来快速上路。
希望本文对你有所帮助,
Scott
附注: 除了写博客外,最近我一直在使用Twitter发短贴和共享链接。你可以在Twitter上通过http://www.twitter.com/scottgu (@scottgu是我的twitter名)跟随我。
标签: ASP.NET, Visual Studio, .NET, Community News推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- 同名函数的 带 params 参数 与 不带 params 参数的执行优先级
- SharePoint 2010 Technical Preview “半公开”发布
- 编写强类型帮助函数的另一个选择
- Chrome OS和Android的背后
- [临时]读者调查问卷
- Connection Pool Timeout 与 Connect Timeout = 0
- SharePoint磁盘容量规划
- 托管代码 (managed code)和非托管代码 (native code) 的互操作性 (interoperability) – Part I
- 将页面内容输出到字符串中
VS 2010 和 .NET 4.0 系列之《干净的Web.Config文件 》篇
【原文地址】Clean Web.Config Files (VS 2010 and .NET 4.0 Series)
【原文发表日期】Tuesday, August 25, 2009 10:50 PM
这是我针对即将发布的VS 2010 和 .NET 4所撰写的贴子系列的第一篇。
无可否认,今天的贴子所涉及的东西在ASP.NET 4.0中是个非常小的(但我还是认为是个非常棒的)变动:干净,简洁的web.config文件。
第一次在Visual Studio 2010中使用 文件->新项目 创建空白的ASP.NET 4.0 Web应用时你就会看到这个改进,所以我觉得把这个东西做为我的系列的第一篇是非常恰当的。
.NET 3.0 和 3.5中的Web.config文件在最近几个版本中,新ASP.NET项目中的web.config文件的大小一直在稳步增长。例如,Visual Studio 2008 SP1中加到新的web项目中的默认web.config文件已有126行,所含的东西包罗万象,从标识的定义到用于ASP.NET HTTP管道中的处理器和模块的定义等等。
这个文件大小的增加是因为.NET 3.0 和 .NET 3.5用的是跟.NET 2.0一样的CLR和machine.config配置文件,只不过是在安装时加了或更新了框架中的程序集而已。为避免意外地覆盖机器上原有的2.0 machine.config中定制设置的风险,我们没有在其中注册随.NET 3.0 和 .NET 3.5版本而来的新的ASP.NET功能带来的标识定义和处理器和模块,而是选择让新的项目在应用的局部web.config中注册这些设置。这个做法比较安全,但也导致了web.config文件大小的增加,而且变到愈加复杂,读起来也更困难。
.NET 4中的Web.config文件.NET 4 包括了一个新的CLR版本,以及特定于.NET 4的新的machine.config文件(是与.NET 2, .NET 3 和 .NET 3.5中所用的machine.config文件并列安装的)。
新的.NET 4 machine.config文件现在自动注册我们几年来添加的所有的ASP.NET 标识部分(section), 处理器和模块,包括了对应于下列功能的设置:
- ASP.NET AJAX
- ASP.NET 动态数据
- ASP.NET 路径选择或导向(现在可为ASP.NET WebForms和ASP.NET MVC两者兼用)
- ASP.NET 图表控件(现在内置于ASP.NET V4中了)
这意味着,在VS 2010中创建新的空白ASP.NET应用项目时,你会发现新的应用级默认web.config文件既干净又简洁:
上面的第一个配置部分告诉ASP.NET默认允许应用调试,并向Visual Studio指定在提供intellisense时该定向的.NET版本(VS 2010支持多定向,IDE中的intellisense会根据你当前针对的框架版本自动改变)。
第二个配置部分表示在IIS7中运行ASP.NET应用时是否使用“integrated(集成)”模式,该模式控制了是否对应用中的所有请求或者只是针对特定于ASP.NET的URL才运行ASP.NET HttpModules模块。我们在新应用的应用级web.config文件默认启用这个模式,因为,为兼容的原因,注册在机器级的默认IIS7设置是只对特定于ASP.NET的URL才运行模块,并不是对所有的请求。
结束语.NET 4中简化了的web.config文件,其变动貌似细小,但我还是认为非常之棒,在你创建新的ASP.NET应用时将使得其默认体验更加干净,也更为容易理解。
在以后的贴子里,我将深入探讨ASP.NET 4中许多更加实质性的改进(以及若干个“细小但很棒”的调整)。
希望本文对你有所帮助,
Scott
推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- 同名函数的 带 params 参数 与 不带 params 参数的执行优先级
- SharePoint 2010 Technical Preview “半公开”发布
- 编写强类型帮助函数的另一个选择
- Chrome OS和Android的背后
- [临时]读者调查问卷
- Connection Pool Timeout 与 Connect Timeout = 0
- SharePoint磁盘容量规划
- 托管代码 (managed code)和非托管代码 (native code) 的互操作性 (interoperability) – Part I
- 将页面内容输出到字符串中
VS 2010 和 .NET 4 系列
【原文地址】VS 2010 and .NET 4 Series
【原文发表日期】 Tuesday, August 25, 2009 10:31 PM
在接下来的几个月内,我将撰写一个贴子系列,讨论VS 2010 和 .NET 4 中的一些非常酷的东西。
VS 2010 和 .NET 4是我们的开发人员工具和框架的下一个重大发布,这两样东西一起将包括成堆的新功能和改进,我认为你会非常喜欢这些更新,因为这些更新将使得各种类型的应用建造更容易,更快和更好!这些改进包括细小的调整到大之又大的增强,跨越整个.NET框架,语言和IDE。
我们还差一点才能达到VS 2010 和 .NET 4的“Betat2” 版本,我的贴子将基于这个版本。但我想要超在实际的Beta2发布之前,因为在博客中想要讨论的东西很多很多,而且能有机会在所有的其他人之前讨论Beta2中的几个新东西,应该是乐趣无穷的!:-)。
在发布这个系列的贴子的同时,我会不断更新本页面上指向各个单独贴子的链接。
- 干净的Web.Config文件 (发布于2009年8月25日)
- 起始项目模板 (发布于2009年8月26日)
- 多定向支持 (发布于2009年8月27日)
- 多显示器支持 (发布于2009年8月31日)
- 新的侧重代码的Web Profile选项 (发布于2009年9月2日)
- HTML/ASP.NET/JavaScript代码片段 (发布于2009年9月4日)
希望本文对你有所帮助,
Scott
标签: ASP.NET, Visual Studio, .NET, Community News, WPF, Silverlight推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- 同名函数的 带 params 参数 与 不带 params 参数的执行优先级
- SharePoint 2010 Technical Preview “半公开”发布
- 编写强类型帮助函数的另一个选择
- Chrome OS和Android的背后
- [临时]读者调查问卷
- Connection Pool Timeout 与 Connect Timeout = 0
- SharePoint磁盘容量规划
- 托管代码 (managed code)和非托管代码 (native code) 的互操作性 (interoperability) – Part I
- 将页面内容输出到字符串中
LIDNUG:星期二早晨跟我在网上聊天
【原文地址】LIDNUG: Free Online Virtual Chat with Me Tuesday Morning
【原文发表日期】Monday, August 24, 2009 10:23 PM
几个月前,我做了一个由 LIDNUG (Linked .NET Users Group) 主持的在线聊天,非常好玩,参与的各位似乎也非常喜欢。
这个星期二(8月25日)从上午9点到10点半(美国太平洋时间)【北京时间凌晨0点到1点半】,我将再次参与这样的活动。
日程格式是开放式的,任何人都可以参加。基本上是这样的形式,你键入你的问题,然后你可以倾听我的在线答复,我将答复尽可能多的问题。什么问题都可以!:-)
点击这里 注册参与该活动。
静候大驾光临!
Scott
【译注】对不起,这个活动已经过期。 标签: ASP.NET, Visual Studio, .NET, Talks, Community News推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- 同名函数的 带 params 参数 与 不带 params 参数的执行优先级
- SharePoint 2010 Technical Preview “半公开”发布
- 编写强类型帮助函数的另一个选择
- Chrome OS和Android的背后
- [临时]读者调查问卷
- Connection Pool Timeout 与 Connect Timeout = 0
- SharePoint磁盘容量规划
- 托管代码 (managed code)和非托管代码 (native code) 的互操作性 (interoperability) – Part I
- 将页面内容输出到字符串中
VS2010中VB和C#语言的增强
[原文发表地址] VB and C# enhancements in VS 2010
[原文发表时间] Wednesday, August 19, 2009 10:54 PM
选择一种编程语言是每一个程序员都要做的个人决定。这就好像对冰淇淋口味的选择一样。冰淇淋口味的选择多多,但你最喜欢的口味只关系到你的个人偏好。
在Visual Studio 2010种,为了给程序员提供他们构建出色软件时所需要的所有工具而不用局限于他们所选择的语言,我们从好几个方面增强了我们最流行的两种语言,Visual Basic和C#语言的功能。
Visual Basic
Visual Basic开发团队为了让开发人员可以用更少的代码完成更多的任务,集中增加了和生产力相关的功能特性。Visual Basic客户最常提出的要求是在大多数情况下能省去为代码声明分成多行时所需要添加的下划线(“_”)。Visual Basic 10增加了隐式断行的功能特性,能在大多数情况下不要求开发人员使用下划线来断行。
Function Filter(
ByVal customers As List(Of Customer),
ByVal orderCount As Integer
)
Dim query =
From c In customers
Where c.Orders.Count >
orderCount
Select c
另一个新添加的和提高生产力有关的功能特性是自动实现属性。有了自动实现属性的功能,多行常规的属性实现的代码就可以用一行简单的声明代替。在加入该功能特性之前,属性声明经常如下所示:
Private _FavoriteFlavor As String = "Butter Pecan"
Property FavoriteFlavor() As String
Get
Return _FavoriteFlavor
End Get
Set(ByVal value As String)
_FavoriteFlavor = value
End Set
End Property
Private _FlavorList As New List(Of Flavor)
Property FlavorList() As List(Of Flavor)
Get
Return _FlavorList
End Get
Set(ByVal value As String)
_FlavorList = value
End Set
End Property
现在,属性声明能用简单的多得方法实现:
Property FavoriteFlavor As String = "Butter Pecan"
Property FlavorList As New List(Of Flavor)
集合初始化和数组Literal也变得更加简单。现在集合能在它们被声明的时候就被初始化,而数组Literal的类型能交由编译器来识别。
Dim toppings = New List(Of String) From
{
"sprinkles",
"chocolate chips",
"strawberries"
}
Dim cones = {"sugar cone", "waffle cone"} 'String()的类型被编译器识别出来
现在,Visual Basic 10.0有了更好的lambda表达式支持。现在,Lambda表达式可以包含没有返回值的表达式,就像下面sub关键词所要表达的那样:
Array.ForEach(toppings, Sub(n) Console.WriteLine(n))
有时候,你会想在Lamdba表达式声明中作些更复杂的工作。Visual Basic 10.0支持多行的Lamdba表达式。就像在常规Lambda表达式中一样,编译器将尽可能识别变量和返回类型。
Dim doubleDown = Function(n As String)
If n.StartsWith("s") Then
Return "extra " & n
Else
Return n
End If
End Function
在Visual Basic 10.0中,和Python及Ruby语言等动态语言的互通操作也变得更加简单。比如,下面的代码片断调用了一个Python库“math.ph”中的方法:
Dim mathLib As Object = python.UseFile("math.py")
Dim firstNumber = 44.2
Dim secondNumber = 9.5
mathLib.PowerOf(firstNumber, secondNumber)
C#
C# 4.0主要增强了与动态编程语言的互通性并改进了Office编程性。动态查找是C# 4.0的一个新功能,能让你用同样的方法使用和操作IronPython、IronRuby、JScript、HTML DOM以及标准.NET库中的对象,不管该对象从哪里获得。命名参数和可选参数,以及对COM客户端支持的改进等语言方面的增强让那些和Office API打交道的C#开发人员与Visual Basic开发人员有同样的美妙体验。
在你的代码中加入新的dynamic关键词能让它的类型在运行时被动态解析而非编译时的静态解析。这让动态语言用一种C#编程员觉得自然的方式在C#语言中暴露他们的对象:
dynamic dynamicObject = GetDynamicObjectFromRuby();
dynamicObject.Foo(7);
dynamicObject.Property = "Property value";
dynamicObject[0] = "Indexed value";
可选方法参数对Visual Basic和C++的编程员来说再熟悉不过。现在C#编程员同样可以使用这种参数。可选参数在方法签名中与一个默认值一同声明,如下所示:
private void CreateNewStudent(string name, int currentCredits = 0, int year = 1)
上面这个方法可以用下面任意一种方法调用:
CreateNewStudent("Chloe");
CreateNewStudent("Zoe", 16);
CreateNewStudent("Joey", 40, 2);
如果要省略currentCredit参数但指明year参数,可以使用新加入的命名参数功能特性(如高亮的代码所示)。下面所有的调用都是合法的:
CreateNewStudent("Jill", year: 2);
CreateNewStudent(name: "Bill", currentCredits: 30, year: 2);
CreateNewStudent("Will", currentCredits: 4);
即使不用可选参数,命名参数同时也是一种用来对你现有方法编写自定义调用的好方法。
学习更多
在VB功能特性站点和C#功能特性站点,你可以找到更多关于Visual Studio 2010在语言增强方面的内容,并能下载到示例代码。如果你想试试这些新的功能特性,可以下载并安装Visual Studio Beta 1,然后加入到我们的对话中来。
Namaste!
推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- VS 2010 和 .NET 4 系列
- LIDNUG:星期二早晨跟我在网上聊天
- 观止之读后感
- 关于最近Visual Studio的ATL更新
- 《Microsoft Office SharePoint Server 2007 管理员指南》发布
- 工作上的些许变化
- 【翻译】Code Only增强
- 八卦 Lisp 简史
从无到有快速创建完整的Web应用程序
[原文发表地址] VB and C# enhancements in VS 2010
[原文发表时间] Wednesday, August 19, 2009 10:54 PM
从无到有创建一个Web应用程序似乎是一件令人畏缩的任务。或许您对于您的网站要做些什么有一个很好的主意,但是您可能要花大量的时间和精力来决定使用哪种技术创建应用程序最好,来查找可重用的样本代码,和设计你站点的导航以及外观。
Windows Web App Gallery专门设计用来帮助您快速上手并运行一个可定制的Web应用程序,这样您就可以集中精力编写那些只有您才可以编写的代码。
Web App Gallery是一个包含了像DotNetNuke, Umbraco, ResourceBlender.NET 和mojoPortal等主流Web应用程序的集合,所有的应用程序都是免费的并且可以使用Web Platform Installer随时下载和安装。Web App Gallery包含有ASP.NET和PHP应用程序,并且您选择的应用程序所依赖的平台也将随着你的应用程序自动安装。大部分Web App Gallery中的应用程序也都是开源的。Web App Gallery自上线四个月以来已经有了500 000次的下载量。
现在让我们来看一下Web App Gallery是如何工作的,让我们先看下Web App Gallery。
您可以使用多种途径来查找应用程序,比如基于他们的流行程度、用户评价或者分类(比如内容管理,博客、或电子商务)。如果您正在为一个业务或者社区创建一个网站,您可能想要一个像Umbraco的内容管理应用程序。
当您点击您所选择的应用程序旁边的安装按钮时,Web Platform Installer(Web PI)会被启动,使用工具Web PI您可以很容易的安装微软的Web平台和任何Web App Gallery中提供的Web应用程序以及您选择的应用程序所依赖的东西。从Web App Gallery上,在Umbraco安装期间显示的第一个画面是一个有关Umbraco详细信息的页面。
此时,您可以点击位于左边的任意一个选项卡从微软的Web平台安装更多的产品,或直接开始Umbraco的安装。如果您只需要Umbraco,点击“Install”按钮。
接下来您马上会看到您正在安装以及其他您将要安装的产品的许可证条款,Web PI包含了所有您的应用程序运行所需要的产品,这可能包含配置正确的IIS组件、下载ASP.NET和安装SQL Server Express。除了您要安装的应用程序,您不需要担心其他任何事情,一旦您选择了“I Accept”按钮,Umbraco和所有它依赖的东西将被下载下来并安装。
这步完成以后,填写您要安装Umbraco的网站和一些Umbraco需要的基本信息。
现在您已经大功告成并且可以开始使用您的Web应用程序了。
使用安装界面上的链接来启动Umbraco,经过一些配置步骤,然后您就可以开始配置你新的Web应用程序了。
一旦您花了些时间熟悉您的Web应用程序之后,您可以在Web App Gallery上对它进行评价和复审。只要您的Web应用程序遵循了Web应用程序的展厅原则,您也可以提交您自己的Web应用程序到Web App Gallery,。Web Application Gallery总是在不断的添加更多的应用程序,所以请定期的访问。
Namaste!
.
View article...
推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- VS 2010 和 .NET 4 系列
- LIDNUG:星期二早晨跟我在网上聊天
- 观止之读后感
- 关于最近Visual Studio的ATL更新
- 《Microsoft Office SharePoint Server 2007 管理员指南》发布
- 工作上的些许变化
- 【翻译】Code Only增强
- 八卦 Lisp 简史
调试、剖析及分析并行应用程序
[原文发表地址] Debugging, Profiling and Analyzing Parallel Applications
[原文发表时间] Friday, August 07, 2009 11:46 PM
每当出现新的编程模型时,开发人员便需要一个用来学习、编写、调试以及优化代码的健壮的工具,以便能更好的利用该模型。由于并行计算在公式中添加了新的变量,对于工具的需求便更为突出。
Visual Studio 2010大幅度的提升了并行调试的用户体验。其中大部分的功能在Visual Studio 2008中也可通过插件获得。这里我将给大家介绍在Visual Studio 2008以及即将发布的Visual Studio2010中提供的并行编程、调试以及诊断等功能。
调试
虽然Visual Studio 2005有一个内建的MPI程序的简单调试器,但并未提供完整的“F5”体验。在新的Visual Studio 2008 插件(同时也将集成到Visual Studio 2010中)中,您只需选择一个集群头节点以及您需要多少核,然后按F5就可以对您的MPI程序进行调试了。
除了调试团队所作的很棒的核心工作以外,并行调试技术的领先供应商Allinea还将他们的环境导入到了Visual Studio中。Allinea的插件提供了针对集成的MPI程序的调试,包括基于排名的上下文切换、组单步调试、暂停及运行、并行栈视图和迭合。下面是Allinea的MPI调试环境:
面向服务的架构调试
Windows HPC Server 2008的一个重要的新的编程模型是集群系统面向服务体系架构 (Cluster SOA),它是基于WCF构建的,并包含由HPC的调度器和代理节点提供的高级调度和负载平衡功能。目前为止,对面向服务架构的集群系统的调试还仅仅限于基本的WCF/.Net方式的调试,并无集群的集成。在Visual Studio 2010中,一个集群面向服务架构插件将提供SOA设置标签,在这里您可以选择头节点、调试节点和服务、部署运行时类库并自动进行清理。现在来看一下Visual Studio 2010中新的SOA调试器吧:
剖析 (Profiling)
Windows Server HPC 1.0中没有集成针对MPI程序的剖析功能。在Windows HPC Server 2008中,XPerf等工具提供了MPI的剖析以及系统级别的剖析和故障排查的功能。但即使是XPerf也对MPI消息流量等细节所知甚少,目前为止也没有消息流量的浏览器。自那以后,消息流量浏览器Vampir被导入到Windows并完整地集成在事件跟踪日志(ETW)中。Vampir提供了对消息顺序和延迟进行故障排查的功能。还有更多的开源HPC工具,比如JumpShot是一个免费的基于Java的MPI消息浏览器。
在很多时候,VS内置的剖析器就能提供性能问题的分析。在Visual Studio 2010中,这一功能与HPC工作调度器进行了完整的集成,用来分析一个特定的MPI排名或节点的性能。Visual Studio MPI 剖析功能提供了行级别的剖析信息,包括与源代码视图并排的执行过程中的温度视图:
剖析器还显示多个运行或版本的结果比较报告,这样您就可以轻松地了解您的修改所带来的效果。
MPI 运行时分析
除了调试器和剖析器之外,有时您还需要专门的分析工具来帮助分析大规模并行程序的复杂度。位于斯图加特的HLRS/ZIH是德国的一个在该领域领先的机构,将他们自己的MPI分析工具Marmot导入到了Visual Studio 2008。Marmot可以用来检查MPI调用的输入参数的合法性、检测无法再生性、死锁和对资源的不正确管理。下面是运行中的Marmot:
从Printf到集成的剖析和调试
不久前我们还在printf风格的调试世界里,“艺术级”的调试和剖析工具将此往前推进了一大步。
在Visual Studio里,您可以调试和剖析高性能MPI程序以及拥有成百到上千个核的集群SOA应用程序。您可以使用XPerf和事件跟踪日志来获取应用程序在整个系统环境中的全局视图。Visual Studio 2010里新增的多核剖析和调试工具也可以有效地用于集群的节点级别分析。
Visual Studio正成为越来越丰富和有效的编写各种并行程序的开发环境。访问Windows HPC Server 开发人员资源中心您能找到更多关于Windows HPC的开发模型。在CodePlex的Parallel Dwarfs站点上您能找到许多使用各种并行编程模型的示例。
Namaste!
推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- VS 2010 和 .NET 4 系列
- LIDNUG:星期二早晨跟我在网上聊天
- 观止之读后感
- 关于最近Visual Studio的ATL更新
- 《Microsoft Office SharePoint Server 2007 管理员指南》发布
- 工作上的些许变化
- 【翻译】Code Only增强
- 八卦 Lisp 简史
ASP.NET MVC V2 第一个预览版发布了
【原文地址】ASP.NET MVC V2 Preview 1 Released
【原文发表日期】 Friday, July 31, 2009 12:53 AM
ASP.NET开发团队刚发布了ASP.NET MVC第二版的第一个公开的预览版。你可以在这里下载。
今天的预览版是在.NET 3.5 SP1和VS 2008下工作的,可与ASP.NET MVC 1.0并行安装在同一个机器上(即,它们不相冲突,如果你安装2.0的话,你现有的ASP.NET MVC 1.0项目不会受影响)。如果你同时安装ASP.NET MVC 1.0 和 ASP.NET MVC 2.0的话,你会在Visual Studio 2008的 “新项目” 对话框中看到2个ASP.NET MVC项目模板:
ASP.NET MVC 2预览版的发布说明详述了如何将现有的ASP.NET MVC 1.0项目升级到使用V2,如果你想将它们移植来利用V2的新特性的话。
新特性ASP.NET MVC V2将包括一堆新功能和特性(其中一些已经在ASP.NET MVC产品路线图网页上列出了)。今天的“第一个预览版”包括的一些新特性还是第一次露面,更多的特性将在将来的预览版中出现。第一个预览版的代码还属于早期版本,开发团队今天发布这个版本,意在开始征询大家的反馈,并将它们融入将来的版本。
下面简短地说明一下其中一些新功能:
区域支持ASP.NET MVC 2将支持一个叫“区域(areas)”的新特性,允许你轻松地将MVC应用的功能进行分割和组合。
“区域”提供了一个将控制器和视图进行分组的方式,允许你把一个大应用的各个子部分相对独立地进行构建。每个区域可以一个单独的ASP.NET MVC项目的形式来实现,并且这些项目可进而为主应用所引用。这在建造大应用时有助于管理其复杂性,并方便多个团队合作开发应用。
下面这个屏幕截图展示一个单一解决方案中有三个项目。其中一个项目叫“CompanySite”(公司网站),包括了核心的网站内容,布局,相关的控制器和视图。还有2个单独的“区域”项目: “Blogs”(博客) 和 “Forums” (论坛)。这2个项目实现了网站的/Blogs 和 /Forums URL下的功能,封装了所有的路径规则,以及实现这2个部分的控制器和视图:
第一个预览版只包括了区域特性实现的第一个部分,还不包括任何工具支持(目前,你只能手工添加编译任务来创建并配置区域项目)。将来的预览版本将包括工具支持,同时进一步将功能集扩大和完善。
DataAnnotation(数据标记)验证支持ASP.NET MVC 2现在包含了对最先在.NET 3.5 SP1中发布的DataAnnotation验证的内置支持,这个东西是在ASP.NET动态数据和.NET RIA服务中使用的。DataAnnotation提供了一个简易的方式,可以声明的方式在应用中的Model(模型)和ViewModel(视图模型)类中添加验证规则,在ASP.NET MVC中有自动的绑定和UI辅助方法验证支持。
要看该特性如何在实际中使用,我们可以象下面这样创建一个新的“Customer” 视图模型类,内含5个属性(是用了C#特性之一 -- 自动属性来实现的)。
然后,我们可以使用System.ComponentModel.DataAnnotations命名空间下的DataAnnotation特性,在这些属性上饰于适当的验证规则。下面的代码使用了4种不同的内置验证规则: Required], [StringLength], [Range], 和 [RegularExpression]。该命名空间下还包括一个基类,ValidationAttribute, 你可以继承来创建你自己的定制验证特性。
然后,我们可以创建一个CustomersController类,其中有2个 Create action方法。第一个 Create action方法处理对应于“/Customers/Create” URL的HTTP GET请求,基于一个空白的Customer对象显示一个视图模板。第二个 Create action方法则处理同个URL的HTTP POST请求,并接受一个Customer对象作为方法参数。它会检查提交的输入数据是否造成了任何模型绑定错误,如果造成了错误的话,它会使用已经输入的数据重新显示视图模板,如果没错误的话,它会给用户显示一个提交成功了的视图:
最后,我们可以在上面任意一个Create action方法中右击,选择 “添加视图”上下文菜单命令,自动地生成(scaffold)一个基于Customer对象的“Create”视图模板的框架。这么做的话,生成的框架视图模板会包含下面这样一个HTML <form>:
这样,当我们在浏览器中请求“/Customers/Create” URL时,我们会得到象下面这样起始的空白表单:
如果我们输入不合法的数据,提交到服务器时,ASP.NET MVC 2模型绑定器会检测到我们的Customer类上有DataAnnotations特性,会自动地使用它们对提交的表单输入数据进行验证。如果有错误的话,我们的控制器action方法会重新显示表单,并且给用户显示适当的验证错误消息,象下面这样。注意我们使用DataAnnotation特性指定的验证属性错误消息字符串是如何通过Html.Validation辅助方法显示给用户的,不用编写额外的代码就可以实现。
The above form will redisplay with error messages each time the user enters invalid input and attempts to perform a form post.
在将来的ASP.NET MVC 2预览版中,我们计划将jQuery验证插件作为默认项目模板的一部分来发布,同时添加DataAnnotation验证规则在客户端JavaScript中自动强制执行的支持。这将允许开发人员轻松地在一个地方,Model或ViewModel对象上,添加验证规则,然后无论对象用在应用中的什么地方,这些规则都会同时在客户端和服务器端强制执行。
如果你不希望直接标记你的模型或视图模型类,你还可以创建一个伴随你的模型类的“伙伴类(buddy class)”,另外封装DataAnnotaton规则。这个功能还在这样一些场景下有用: VS直接生成/更新类的属性代码,你无法简易地在生成的代码上饰以特性(例如,由LINQ to SQL 或 LINQ to Entities设计器生成的类)。
除了提供对DataAnnotations的内置支持外,ASP.NET MVC V2中的DefaultModelBinder类现在还有新的虚拟方法,可以在子类中覆盖,来轻松地集成其他的验证框架( 例如Castle Validator, EntLib Validation等等)。ASP.NET MVC中的验证UI辅助方法是设计来支持任何类型的验证框架的(它们不用知道DataAnnotations)。
强类型UI辅助方法ASP.NET MVC V2包含了新的HTML UI辅助方法,这些辅助方法允许你在引用视图模板的模型对象时使用强类型的lambda表达式。这可以促成更好的视图编译时检查(这样缺陷是在编译时发现而不是在运行时发现),还能促成视图模板中更好的代码intellisense支持。
你可以在下面看到一个示范更好intellisense的例子,注意我在使用新的Html.EditorFor()辅助方法时是如何得到Customer模型对象属性的完整列表的:
第一个预览版提供对新的Html.EditorFor(), Html.LabelFor(), 和 Html.DisplayFor() 辅助方法的内置支持。将在这个星期发布的更新过的MVC Futures程序集还将包含对另外的Html.TextBoxFor(), Html.TextAreaFor(), Html.DropDownListFor(), Html.HiddenFor(), 和 Html.ValidationMessageFor()辅助方法的支持(随着时间的推移,这些方法也会移到核心ASP.NET MVC 2程序集中去)。
在下面,你可以看到Customer创建场景下“Create”视图模板的一个更新了的版本。注意,在UI辅助方法中,我们不是使用字符串表达式来引用Customer对象,而是使用强类型的lambda表达式。我们在所有这些方法中都可以得到完整的 intellisense 和 编译时检查:
上面的Html.LabelFor()辅助方法生成<label for="Name">Name:</label> HTML 标识。
Html.EditorFor()辅助方法可以用于任何数据类型值。在默认情形下,它很聪明,会根据要编辑的类型输出合适的HTML <input/>元素。譬如,它会为上面的前4个属性(是字符串和整数类型)生成<input type=”text”/>元素,会为最后的那个“IsActive” 属性生成<input type=”checkbox”/>元素,因为这个属性是布尔值类型。
除了支持简单的数据类型外,Html.EditorFor()辅助方法还允许你传递给它拥有多个属性的比较复杂的对象。在默认情形下,它会对对象的所有公开属性进行循环,输出<label>, <input/> 元素,以及它能找到的每个属性的任何合适的验证消息。例如,我们可以重写上面的视图,对Customer对象只做单个Html.EditorFor()调用,从概念上来说输出跟上面一样的标识:
强类型的辅助方法允许你在Customer视图类的属性上饰以[DisplayName]特性,来控制为每个属性输出的标签字符串(例如:不是用“IsActive”作为标签文字,我们可以加一个[DisplayName(“Is Active Customer:”)]特性)。
你也可以加一个[ScaffoldColumn(false)]特性,来表示,在象上面把一个复杂的对象传给Html.EditorFor()那样的场景下,某个特定的属性完全不应该显示出来。
UI 辅助方法模板化支持Html.EditorFor() 和 Html.DisplayFor() 辅助方法对显示标准的数据类型以及含有多个属性的复杂对象有内置的支持。就象上面说的,它们还支持通过在视图模型上施加象[DisplayName]和 [ScaffoldColumn]特性这样的基本的定制机制。
但经常地,开发人员想要能够进一步定制UI辅助方法的输出,对生成的东西要有完全的控制。Html.EditorFor() 和 Html.DisplayFor()辅助方法通过一个模板化机制支持这个要求,这个机制允许你定义外部的模板,替换原先的,完全控制显示的输出。更棒的是,你还可以在每个数据类型/类的基础上定制要显示的内容。
在第一个预览版中,你可以在\Views\[控制器名称]目录下(如果你想要定制某个特定的控制器所用视图的显示的话)或在\Views\Shared目录下(如果你想要定制一个应用中所有视图和控制器的显示的话)加一个“EditorTemplates” 或者 “DisplayTemplates” 子目录。
然后你可以往这些目录中加分模板(partial template)文件,针对个别数据类型或者类来定制显示输出。例如,在下面,我在\Views\Shared目录下加了一个EditorTemplates子目录,在其中加了三个定制的模板文件:
上面的“Customer.ascx”模板表示我想要定制在调用Html.EditorFor()时其参数为Customer对象时的输出(例如,我可以定制Customer属性的精确顺序和布局)。上面的“DateTime.ascx” 模板表示我想要定制在调用Html.EditorFor()时其参数为DateTime属性时的输出(例如,我也许想要使用JavaScript的日历控件,而不是普通的文本框)。我也可以在目录中加一个“Object.ascx” 模板,如果我想要替代所有对象的默认显示的。
除了在每个类的基础上定制输出外,你还可以在目录中加“具名模板(named templates)”。一个常见的场景也许是 “CountryDropDown”模板,它处理字符串数据类型,但不是提供标准的文本框,而是显示一个用户可以选择的列出了国家名称值的<select>下拉框。下面是这个编辑器模板的一个例子:
然后,我们可以在调用Html.EditorFor()辅助方法时,把上面这个模板的名称作为参数传给它,明确地表示我们想要使用这个模板。例如,在下面,除了指定Country属性的lambda表达式外,我们还指定了在显示时要使用的编辑器模板的名称:
或者,你也可以在你的ViewModel属性和类型上指定“UIHint”特性。这允许你在单一一个地方指定要使用的默认编辑器或者显示器模板,然后在整个应用的所有视图中使用指定的模板(而不必显式地将这个名称作为参数传给Html.EditorFor)。
下面是一个如何使用UIHint特性来表示Customer.Country属性(字符串类型)应该在默认情形下显示时使用CountryDropDown模板的例子:
一旦在我们的视图模型上设置上述特性后,在使用Html.EditorFor()显示那个属性时,我们就不再需要显式指定模板名称了。现在,在/Customers/Create URL上点击刷新时,我们的Country属性就会显示为一个下拉框,而不是一个标准的文本框:
其他酷特性ASP.NET MVC 2第一个预览版还包含了若干个虽小但是很妙的特性。我最喜爱的几个包括:
新的[HttpPost]特性
在 ASP.NET MVC中,把一个URL的处理分成2个action方法的做法是非常常见的,其中一个处理GET请求,另一个处理POST请求。
在ASP.NET MVC 1中,你使用[AcceptVerbs(HttpVerbs.Post)]特性来表示action方法的“Post”版本:
在ASP.NET MVC 2中这依然工作,但你现在也可以利用更简洁的[HttpPost]特性来做同样的事情:
默认参数值
处理可省参数在web场景中是司空见惯的事。在ASP.NET MVC 1中,处理可省参数一般有2个做法,通过注册定制的路径规则,在其中指定默认的值,或者将某个action方法的参数标记为nullable,然后在action方法中添加代码处理该参数是否是null(如果是null就提供默认值)。
ASP.NET MVC 2第一个预览版现在支持在action方法的参数上饰以System.ComponentModel命名空间下的DefaultValueAttribute。这允许你在某个参数不在请求值中时指定ASP.NET MVC应该传给action方法的参数值。例如,下面是一个我们可以如何处理 /Products/Browse/Beverages 和 /Products/Browse/Beverages?page=2 URLs的例子,如果“page”参数不是查询字符串的一部分时,其值为“1”:
VB今天就允许你直接在语言中指定默认的参数值(而不必象上面那样显式指定DefaultValue特性),VS2010中的C#语言也将支持可省参数的默认值,将允许我们把上面的代码简化成:
这应该会使处理默认/可省场景变得非常地干净利落。
绑定二进制数据
ASP.NET MVC 2的第一个预览版还加了支持绑定base64编码的字符串值到类型为byte[]和System.Data.Linq.Binary的属性。现在还有2个可以接受这些数据类型的重载的Html.Hidden()版本。在你想要在应用中启用并发性控制,在表单中来回传送数据库行记录的时间戳(timestamp)值的场景下,这会非常有用。
结语点击这里下载包含一个ASP.NET MVC 2项目的.zip文件,该项目实现了我在上面示范的样例。
今天的ASP.NET MVC 2版本还只是第一个预览版,将来的预览版中将包括更多的特性,开发团队期待在如何改进和增强功能方面得到许许多多的反馈。
有规律地发布这些预览版的目的是想帮助确保这个反馈过程是开放的,任何想参与的人都可以轻易地参与。请在www.asp.net的ASP.NET MVC论坛上发贴提反馈,建议或者贴出你遇到的问题等。 你也可以从Phil Haack的MVC2贴子 和 Phil和 Scott Hanselman在Channel9录制的关于第一个预览版的录像中了解这个预览版的详情。
希望本文对你有所帮助,
Scott
附注: 最近我一直在使用Twitter发短贴和共享链接。你可以在Twitter上http://www.twitter.com/scottgu (@scottgu是我的twitter名)跟随我。
标签: ASP.NET, .NET, Community News, MVC推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- 同名函数的 带 params 参数 与 不带 params 参数的执行优先级
- SharePoint 2010 Technical Preview “半公开”发布
- 编写强类型帮助函数的另一个选择
- Chrome OS和Android的背后
- [临时]读者调查问卷
- Connection Pool Timeout 与 Connect Timeout = 0
- SharePoint磁盘容量规划
- 托管代码 (managed code)和非托管代码 (native code) 的互操作性 (interoperability) – Part I
- 将页面内容输出到字符串中
STM.NET发布
[原文发表地址]:STM.NET on DevLabs
[原文发表时间]:Monday, July 27, 2009 2:20 PM
今天我们在MSDN DevLabs发布了STM.NET。STM.NET是.NET Framework 4 Beta 1的增强版本的实验级产品。STM.NET将为C# 程序员提供了软件事务内存功能。
事务内存技术的目标是提供事务性语义来读写内存,由此将开发人员从并行程序的繁杂工作中解放出来。这样开发人员在创建多核应用程序的时候,可以集中力量开发应用逻辑,而不必再担心细粒度锁定(fine-grained locking)或多线程应用中的同步,也不再纠结于内存I/O的细节。
创建事务
利用STM.NET可以将一段代码声明为原子(atomic)操作,然后只需编写一个包含这段代码的函数或lambda表达式,将它传递给委托变量Atomic.Do。就像数据库事务中的SQL代码一样,这一段代码会独立于其它事务处理代码模块块。如果它在执行过程中产生错误,整个事务会自动回滚,您不需要做任何特定的锁定操作。
它是如何工作的?
.NET Framework的实时编译器会找到您声明的原子代码,重写这段代码让它使用事务内存。这样做的好处是,大部分已有的.NET代码不需要做任何改动,包括那些使用锁定的代码。STM.NET还提供了与系统事务处理(System.Transactions)的集成,在此基础上您可以协调原子的内存操作和已有的事务资源管理器(比如MSMQ)。
STM.NET 的另一大优点是它与Visual Studio工具的集成。无论你的事务性变量出现在Atomic.Do代理之内还是之外,您都能通过STM.NET在Visual Studio 2008调试器中查看其变量的值。
你可以从这里下载STM.NET,通过项目的论坛告诉我们你的想法和使用的感受。更多 STM.NET 的精彩内容在STM.NET的团队博客。
Namaste !
推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- VS 2010 和 .NET 4 系列
- LIDNUG:星期二早晨跟我在网上聊天
- 观止之读后感
- 关于最近Visual Studio的ATL更新
- 《Microsoft Office SharePoint Server 2007 管理员指南》发布
- 工作上的些许变化
- 【翻译】Code Only增强
- 八卦 Lisp 简史
Silverlight 3 发布了
【原文地址】Silverlight 3 Released
【原文发表日期】 Friday, July 10, 2009 9:35 AM
今天,我们正式发布了Silverlight 3的最终版本。
Silverlight 3特性Silverlight 3是个重大更新,提供了成堆的新特性和功能。其中一些新的Silverlight 3运行时功能包括:
高清媒体Silverlight 3现在支持硬件图形加速,允许将视频和图像组合的负载转移到GPU上去。这可以显著地降低计算机的CPU使用率,允许在老一点的低端机器上播放HD视频。你现在可以在web上发布和播放1080p的高清视频体验。
Silverlight 3包含了对H.264视频,AAC 音频和MPEG-4内容的新媒体编解码器(codec)支持,这允许你轻松地流式传送和播放使用了这些标准的媒体。Silverlight 3还包含了原始比特流(raw bitstream)音频/视频 API,这些API允许你以任何.NET语言创建另外的编解码器(codec),以支持播放任何别的媒体格式。Silverlight 3 还加了各种别的媒体功能,允许更好的日志记录(在媒体分析和以广告赚钱的场景下),提供在播放长格式的视频内容时禁止屏幕保护的能力,允许内容保护等。
IIS 媒体服务是个免费的服务器产品,与Silverlight相辅相成,提供了在HTTP上高效流式传送媒体的功能。它允许使用“平滑流式传送(smooth streaming)”来发送按需和现场直播的HD视频,平滑流式传送是个适应性流式传送算法,可以针对客户端的网络状况和CPU功能,以优化了的比特率(bitrate)发送视频。去看一下 这个示范 ,看一个在实战中使用Silverlight做平滑流式发送的好例子。
Silverlight中的HD支持,辅之于IIS 媒体服务的平滑流式传送支持,可以在web上促成显著提高的视频体验。就上个星期,我们就有多个客户使用Silverlight和平滑流式传送(上达3MBits)广播了多个HD活动,这些活动包括:温博尔顿网球赛(Wimbledon),环法自行车赛(the Tour de France), AVP职业排球赛(AVP Volleyball), 以及 迈克尔.杰克逊纪念活动(the Michael Jackson Memorial Service)。
沉浸式图形(Immersive Graphics)Silverlight 3新的GPU加速功能,可以促成更丰富和更沉浸的图形体验。
Silverlight 3还加了新的透视3D(perspective 3D)支持,可以用于图形元素,视频和控件。Silverlight 3还包含了新的位图和像素API,以及允许你创建和施用于任何图像,视频元素或者控件的自定义的像素着色(pixel shader)效果(譬如模糊-blur,阴影-dropshadow,漩涡-swirl等)。
脱离浏览器的支持Silverlight 3还允许应用在浏览器外运行,而且可以离线。用户可以很安全地在他们的机器上安装web应用,在桌面上,起始菜单和任务栏中创建快捷启动(同时支持Windows和Mac)。
Silverlight中新的网络检测支持允许开发人员监测机器的网络状态,在他们应用的离线和在线模式间转换。Silverlight 3还包含了自动更新应用的机制, 这样,在新的应用版本在原始web服务器上部署之后,安装了该应用的客户机可以自动更新。
应用开发Silverlight 3 包含了成堆的新应用开发功能。
Silverlight 3运行时/SDK以及Silverlight工具包现在包括100个左右的UI控件,可以促成常见的场景(布局,数据,作图,子窗口等等),同时还提供完整的样式化和模板定制支持。
Silverlight 3还允许更丰富的数据绑定功能,支持控件间元素至元素(Element to element)的绑定,添加了控件的验证出错模板支持(允许更棒的错误消息显示)。网格控件(DataGrid)支持分层数据(Hierarchical data)的绑定,新的DataForm控件可以促成更棒的主/从场景。Silverlight 3 现在还提供了保存文件对话框(SaveFileDialog)的支持。
Silverlight 3包含了新的导航框架,允许深度链接(deep-linking),以及与浏览器的前进/倒退按钮的集成。这还促成了搜索引擎优化(SEO)的支持,这样Silverlight应用的内容可以被搜索引擎(包括谷歌, 必应 和 雅虎)编入索引。Silverlight 3还支持在客户端缓存程序集,在多个应用间重用这些程序集(减少了下载大小,改进了应用的启动时间)。
Silverlight 3包含了更好的文字显示和字体支持。使用Silverlight 3显示的文字,比早先版本更加清晰,应用现在还可以访问本机字体。Silverlight 3的样式化系统现在还支持合并的资源字典,BasedOn样式继承支持,以及样式可以重置任何次数的功能。Silverlight 3还添加了更丰富的可访问性(accessibility)支持,是第一个提供了可访问所有系统颜色的浏览器插件,允许半盲的人使用熟悉的操作系统控件为方便阅读做类似高对比度颜色方案这样的变动。
Silverlight 3包含了更丰富的网络支持,现在支持跨网络的WCF出错消息,服务器端的push双向支持也比以前更容易配置了,现在还支持负载的二进制XML序列化。新的.NET RIA服务框架(现在已经提供go-live许可)可以被用来轻松地建造跨越客户端和服务器端的多层数据应用。.NET RIA服务允许你编写验证代码一次,然后在你应用的客户端和中间层上施用。
Silverlight 3的Visual Studio 2008工具今天,我们还发布了在VS 2008 和 Visual Web Developer 2008 Express免费版本上支持Silverlight 3开发的免费工具。 VS 2008 Tools for Silverlight提供了对Silverlight 3应用的项目, intellisense,编译,和调试支持。下一个版本的Visual Studio, VS 2010, 将提供一个可以完全交互的Silverlight WYSIWYG设计器(包括设计器中的数据绑定支持)。
点击这里下载VS 2008 Tools for Silverlight (同时安装 SL3 的开发人员运行时和SDK), 点击这里 下载Silverlight 工具包(内含另外的控件)。
Expression Studio 3今天,我们还发布了 Expression Blend 3的RC版本(包括了Sketchflow),提供了对Silverlight 3应用和项目的丰富编辑。
你可以在这里下载Expression Blend 3 + Sketchflow RC版本。
Expression Blend 3 是个重大更新,提供了极其丰富的工具支持。其中的一些改进包括:
- Sketchflow: SketchFlow 极大地方便了创建原型草案(prototypes),试验动态用户体验,融入客户反馈等。如果你还没有看过或试过的话,你一定要试一下。它提供了一个创建以用户为中心优秀应用的改变格局(game changing )的新方式。
- Intellisense: Blend 3 包括了对C#, VB 和 XAML intellisense 支持。你现在可以在Blend中编写代码和事件处理器,而不必转换到VS。
- 行为: Blend 3 包括了行为支持,将复杂的设计交互封装成可重用的组件,然后可以在设计表面上直接施用于一个控件。这允许设计师不用编写代码就可以很快地将功能和行为加到应用中去。
- Adobe Photoshop 和 Illustrator 导入: Blend 3现在还提供对导入Photoshop 和 Illustrator文件的内置支持。作为导入过程的一部分,你可以查看和挑选单独的Photoshop层来导入,对层进行定制和重新分组,允许Photoshop/Illustrator元素在XAML中保持它们原先的格式:包括层的位置,可编辑的文字和字体设置,以及矢量元素XAML转换等。
- 样品数据: Blend 3添加了设计时样品数据的支持,这将方便模拟连接数据的应用,不需访问实际数据,就可以查看它们的观感。你可以生成样品数据或者从XML文件中导入样品数据,这些数据可在设计时为artboard上的所有控件所用。你可以定制你的样品数据的细节,你可以在使用样品数据和运行时使用实际数据间轻松转换。
- TFS: Blend 3 现在包含了对Team Foundation Server (TFS)的支持, 允许你使用源码控制和参与项目,,Blend与 Visual Studio共享同样的项目和解决方案格式,允许VS 和 Blend在同一个项目上工作,促成它们间的无缝编辑。
- 其他的改进: 另外的改进包括改进了的动画和缓冲函数支持,3D转换支持,视觉效果支持,和改进了的视觉状态管理设计器。
Christian Schormann 撰有一个精彩的博客贴子,对Expression Blend 3作了详述。
Expression Studio 3的最终版本(包括Blend + Sketchflow, Web, Encoder 和 Design 版本)将在30天内发布。Expression Studio 3将成为MSDN Premium以及更高订阅的一部分(即,MSDN Premium的客户不用另外花钱就可以得到Expression Studio的所有产品)。Expression Studio 3也将单独发行,售价$599美元(从早先Expression版本以及竞争产品的升级可以得到折扣)。
结语今天的发布是我们Silverlight系列产品的重大更新,在Silverlight 2正式发布之后的短短的9个月内就告完成了。
你可以在下面的网站上了解Silverlight 3和相关工具的详情:
- www.silverlight.net (教程,下载和你可以得到帮助的论坛)
- expression.microsoft.com (Expression社区主页)
- www.microsoft.com/silverlight (Silverlight主页,这里有一些V3功能的示范)
希望本文对你有所帮助,
Scott
【译注】 因为工作繁忙,翻译一拖至今,抱歉万分! 标签: Visual Studio, .NET, Community News, Silverlight推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- 同名函数的 带 params 参数 与 不带 params 参数的执行优先级
- SharePoint 2010 Technical Preview “半公开”发布
- 编写强类型帮助函数的另一个选择
- Chrome OS和Android的背后
- [临时]读者调查问卷
- Connection Pool Timeout 与 Connect Timeout = 0
- SharePoint磁盘容量规划
- 托管代码 (managed code)和非托管代码 (native code) 的互操作性 (interoperability) – Part I
- 将页面内容输出到字符串中
Silverlight3 新功能
[原文地址]:Silverlight 3
[原文发表时间]:Wednesday, April 29, 2009 7:37 PM
昨天,我宣布了Silverlight 3和Expression Blend的发布候选版本发布的消息。
Silverlight 3的新功能和改进包括:支持在浏览器外运行Silverlight应用程序, H.264/AAC/MP4媒体播放, GPU的支持,像素API包括像素着色器,三维透视, Silverlight的应用程序之间的本地信息通信,经过改进的业务对象框架,搜索引擎优化的支持和更好的文字的质量等。通过和不断创新的Visual Studio和Expression Blend相结合使用, Silverlight的3使得. NET的开发人员能够创建最前沿的富互联网应用程序和媒体体验。
今天,我想给大家深入介绍一下Silverlight 3的几个新功能。
三维透视
在Silverlight中对三维透视的支持允许开发者使用的2D内容创建的3D体验。三维透视也是一种更好地利用屏幕空间的好方法。让我们来看一个简单的图像浏览应用程序如何使用三维透视改善外观并更好地利用屏幕空间。不同于一次只显示一个影像,我们会展示一个全分辨率的主要图像和其他一些不同角度的透视的影像。
为了对图像进行三维投影,您需要设置图像的Projection 属性为PlaneProjection 。PlaneProjection提供的一套属性将使得元素被视如三维空间中的形状。将RotationY属性设为70即沿Y轴或叫垂直轴将对象旋转70度。这将使得经过旋转的元素看起来像是垂直于屏幕。下一步,我们要把这个元素往后并往右移,以腾出空间给其他的图像。为达到这一目的,我们要对GlobalOffsetX和GlobalOffsetZ属性进行设置。三维投影元素的输入和事件如预期般运作,所以经三维投影的DataGrid或文本框将具有普通控件完全相同的功能。我们将继续并添加其他4个图像和实施略有不同的角度透视转换以完成这个程序。通过设置不同的GlobalOffsetX属性值将把这些图像移动到左侧或右侧。
这就是最终的结果:
数据绑定的改进
ElementName绑定允许开发人员在XAML中将一个UIElement绑定到另一个上,而不需要写事件处理程序。在Silverlight 3的Binding类中有一个新的属性叫ElementName 。当ElementName被设置后,绑定引擎会使用指定的元素作为数据来源进行绑定。Path属性是指UIElement绑定的数据源的属性。如果ElementName指向DependencyProperty,绑定引擎会侦听DependencyProperty的变化并相应更新绑定。这里有一个XAML片段,展示了一个滑杆如何使用ElementName绑定来控制中央图像的不透明度:
上述XAML的显示以下界面。移动滑块改变蓝龙的图像从完全透明到完全不透明:
Out of Browser支持
Silverlight 3的Out of Browser支持使开发人员能够创建在浏览器之内或者之外都能运行的Silverlight的应用程序。为了使我们的应用程序能在浏览器外运行,需要修改应用程序的AppManifest.xml文件。在Visual Studio中,此文件位于Solution explorer中属性节点之下。在AppManifest.xml ,添加如下:
当您运行该应用程序,您会发现一个右键菜单会多一个新的选项里面写着“安装我的Silverlight的应用程序到这台计算机... ”在下方的图片,注意右键菜单的左下角:
单击该菜单选项后,您会得到一个安装此应用到你的机器的选项。浏览器外的应用看起来就像这样:
现在您可以关闭浏览器版本的应用程序而运行浏览器外的应用程序版本。如果您打开“开始”菜单,您可以找到一个启动浏览器外的应用程序版本的快捷方式。即使在没有网络连接的情况下,您也可以启动应用程序。
这些是Silverlight 3的部分新功能。你可以在这里找到更多的资料。
Namaste!
推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- VS 2010 和 .NET 4 系列
- LIDNUG:星期二早晨跟我在网上聊天
- 观止之读后感
- 关于最近Visual Studio的ATL更新
- 《Microsoft Office SharePoint Server 2007 管理员指南》发布
- 工作上的些许变化
- 【翻译】Code Only增强
- 八卦 Lisp 简史
在胡夫金字塔度过的美丽夜晚 – 记微软2009年度“创新杯”颁奖礼
[原文地址]:An evening at the Giza Pyramids - Imagine Cup '09
[原文发表时间]:Tuesday, July 07, 2009 2:59 PM
今天早些时候,我参加了微软2009年度的“创新杯”颁奖礼。
这次活动是在胡夫金字塔下举行,意义可谓深远。因为,胡夫金字塔是远古工程学的伟大成就之一。
想象一下,你今天看到的这个金字塔是古埃及人花费了无数个星期,无数个月和无数年的时间,并透过细致的规划才最终建立起来的。这不是一个人能单独修建的… …它需要大量的协作,无数的人工和紧密的团队合作。现在回想起来,仍让我们觉得有些难以置信。其中最让我们觉得不可思议的是,这些修建于4500年前的金字塔拥有在远古时期都堪称精确的结构设计。直到今天,人们还在质疑,古埃及人是如何修建起这些由巨石组成的庞然大物。
7年前,首届“创新杯”正式启动。在2003年,来自11个国家和地区的1000名学生参加了这个活动。而今年,2009年,这个活动已经吸引了超过30万名来自全世界100多个国家和地区的学生。过去7年,我们一路走来,不断成长。“创新杯”已成为学生们把他们的好点子转换成改变世界的力量,并展示他们的热情、专注和才能的一个广阔舞台。
我个人也被学生们所展示出来的创新精神,热情和想推动这个世界向更美更好的方向发展的愿望所深深感动。对于创新的渴望引领出突破性的创意。在将来,这些都会让我们受益匪浅。此情此景又让我不禁回想起去年“创新杯”的颁奖礼。
去年,一个来自爱尔兰的学生组合运用嵌入式开发,建立了一个全新而高效的模型,帮助把柴油转换成生物燃料。稍后,他们决定把这个主意付诸行动。他们租用了一辆大卡车,灌入他们自己研制的燃料,驾驶着它从爱尔兰开到“创新杯”颁奖礼现场 –— 巴黎。在行驶行使过程中,他们的卡车不幸在英法海底隧道抛锚了。不过,那不是因为燃料的问题,而是一起事先没有预料到的机械故障。当时,他们被迫停下来,既没有足够的现金,也没有车辆保险可用来支付卡车修理的费用。一个棘手的问题随之出现在他们面前,“我们能否按时赶到比赛现场,还是会与之失之交臂?”最后,他们决定致电给当地的ADE(Academic Developer Evangelist),告知此事。后者成功地帮助他们找到帮手,修复了卡车。最后,他们驾驶着那辆卡车,按时赶到了颁奖礼现场,并赢得了第二名的好成绩。在整个过程中,这些学生表现出强烈的想要解决问题的决心,并亲身告诉大家有了科技和软件每个人都可以成就一些事情。这对我们所有人来说,都是宝贵的经验一课。
推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- VS 2010 和 .NET 4 系列
- LIDNUG:星期二早晨跟我在网上聊天
- 观止之读后感
- 关于最近Visual Studio的ATL更新
- 《Microsoft Office SharePoint Server 2007 管理员指南》发布
- 工作上的些许变化
- 【翻译】Code Only增强
- 八卦 Lisp 简史
Silverlight 3和Expression 3发布
[原文发表地址] Launching Silverlight 3 and Expression 3!
[原文发表时间] Friday, July 10, 2009 11:45 AM
今天我很高兴地宣布Silverlight 3、Expression Blend 3 RC版本和SketchFlow发布了。此外,Expression 3的全系列产品也将于30天内发布。
在第3版中,Silverlight为富互联网应用程序的关键领域提供了很多创新和有益的功能,包括:
- 支持真正的高清晰视频
- 改进了对商业应用支持,包括数据验证和元素对元素的数据绑定
- 提供更深层渲染控制的像素着色引擎
- 在Silverlight的工具包中提供了90多个控件和主题,其中不少还包括其源代码和单元测试
此前,我曾介绍过SketchFlow。SketchFlow已经引发了设计界的讨论,改变了对既定的流程和工具的想法,因为它提供了一种从原型到产品化的工作流程,将草图转化为客户演示、原型和完整的应用程序。
我们的客户群正在不断增加——最近,Silverlight帮助向全世界展示了2009年罗兰加洛斯法国网球公开赛和2009年温布尔顿网球公开赛。在下一个冬季,2010年冬季奥运会将再次提供高清晰视频的详细赛事报道。美国大陆航空公司正在使用Silverlight来改善其客户服务的体验。MGM公司正在使用Deep Zoom功能建设星际之门官方网站,这使得粉丝们可以沉浸在有史以来最详尽的电视系列中。
今天,NBC体育宣布他们将在体育特许节目中,使用Silverlight作为其提供在线高清晰视频的主要技术。
请前往seethelight.com体验最新发布的内容,并随时到www.microsoft.com/Silverlight关注最新的Silverlight的发展动态。
全新设计的Expression社区网站有更多关于Expression 3的信息,帮助您与社区联系,更好的了解和学习Expression:
推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- VS 2010 和 .NET 4 系列
- LIDNUG:星期二早晨跟我在网上聊天
- 观止之读后感
- 关于最近Visual Studio的ATL更新
- 《Microsoft Office SharePoint Server 2007 管理员指南》发布
- 工作上的些许变化
- 【翻译】Code Only增强
- 八卦 Lisp 简史
7月3日在英国瑞丁的ASP.NET MVC讲座
【原文地址】ASP.NET MVC Talk in Reading UK July 3rd
【原文发表日期】 Thursday, July 02, 2009 1:11 AM
今明两天我将在英国,我是在从这个星期两天的印度之行的回国途中,准备在此做2个技术讲座。
第一个讲座将在今晚的伦敦用户组织的活动上,我将讲演Silverlight 3。不幸的是,这个活动的注册已经超员了,所以,如果你还没有注册的话,等下次我来时再光临吧。
第二个讲座将在明天(星期五)从下午1点-4点在瑞丁(Reading)的微软设施举行,是关于ASP.NET MVC的。上个星期刚宣布该活动不久,它的注册很快就超员了。但这个星期,感谢我们的主办人,他们找到了一个大一点的房间,所以又多出了120个座位。
如果想参加的话,你可以在今天下午4点前注册参与这个免费讲座。但要快哟,因为只剩下43个座位了(在我刚开始撰写这个博客贴子时还有57个座位)。
希望在那里看到你们,
Scott
标签: ASP.NET, .NET, Talks, Community News推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- 观止之读后感
- VS2010中VB和C#语言的增强
- 关于最近Visual Studio的ATL更新
- 《Microsoft Office SharePoint Server 2007 管理员指南》发布
- 工作上的些许变化
- 从无到有快速创建完整的Web应用程序
- 【翻译】Code Only增强
- 八卦 Lisp 简史
- 【翻译】Entity Framework 特性CTP全程示范: Code Only
- 【翻译】在Entity Framework 4.0中使用 Repository 和 Unit of Work 模式
Microsoft BizSpark:继续为15000多个创业公司服务!
[原文发表地址] Microsoft BizSpark: Serving 15,000 startups and counting!
[原文发表时间] Friday, June 19, 2009 11:15 PM
8个月之前,微软对外公布了Microsoft BizSpark的项目。这个项目旨在帮助创业初期的公司,通过提供免首付的微软软件、技术支持,以及可视度获得成功。
今天,我很高兴地宣布,迄今为止,已经有15000多个创业公司加入了BizSpark的项目。
参与的公司获得功能完整的微软平台及开发工具,比如Windows Server,SQL Server,Visual Studio和Expression Studio。BizSpark在99个国家中实施,并不要求独家经营权。许多开源的独立软件开发商正利用BizSpark测试他们应用程序的互通性,或是增加他们所能支持的客户端平台数量。
这15000个参与的公司所参与创新的领域包括社群网络,软件服务,保健,教育,移动,娱乐,以及财经。这些创业公司正在Windows的平台上成功的构建着他们的应用程序。他们的名字包括:ZocDoc,Tweba,SquareClock,Eduify,StackOverflow,Sobees,MixedInKey,Develomatic。
这里有一些最近加入BizSpark项目的富有创新精神的公司。
在2008年12月看过Microsoft Surface之后,Nicolas Chaillan激起了灵感,想创造after-mouse,为Windows7和Surface构建可定制的触觉用户体验。After-mouse使用WPF和Silverlight,为在欧洲及其它地区的旅行社,零售商,房产商和医院构建多点接触的用户体验。BizSpark的产品许可证让after-mouse可以使用微软的技术创建宿主解决方案。
下图中,after-mouse的酒吧和餐馆应用程序可以让客人直接在餐桌上为晚餐点单。
Curse是一家坐落于硅谷的大型多玩家在线游戏或MMO的门户社区。该网站为MMO游戏提供论坛、wiki、评论、下载、博客、录像以及其他资源。Curse的重点在于游戏玩家生成的内容,并允许玩家创建他们自己的页面。Curse包含了World of WarCraft,StarCraft和Age of Conan的门户网站。
现在Curse已经拥有了140多万用户,并且此数目还在快速增长中。他们的网站使用了三台IIS7的web服务器和一个运行SQL Server 2008的数据库服务器。Curse的桌面客户端从.NET web服务中获得数据。该.NET web服务用C#编写,并运行在两台IIS7 web服务器上。Curse的CEO曾说:“我们的成功大部分归功于微软技术的性能和稳定性,以及使用微软开发工具所提供的生产力。我们将继续依然只使用微软的技术。我们正在使用WPF开发下一代的Curse客户端版本,并用ASP.NET MVC构建公共宿主服务。”
Lokad,一个由5人组成,创建于2007年的法国创业公司,向零售业、制造业,和呼叫中心行业提供在线业务预测和统计数据。将你的历史数据,如销售、现金流、呼叫数量、客户要求等,发送给Lokad,他们会把预测结果发送给你。Lokad的数学家团队使零售公司可以用最少的投资使用到顶尖水平运作的业务预测。Lokad的网络应用程序使用的是.NET 3.5,并使用LINQ技术和SQL Server中的数据进行交互。除此之外,Lokad是第一个在他们的产品开发环境中使用Windows Azure服务的独立软件供应商。
看到这些创业公司使用微软的平台和工具进行创新的工作着实令人兴奋。
欲了解更多关于BizSpark,以及如何加入的信息,请访问BizSpark on Startup Zone。
Namaste!
推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- VS 2010 和 .NET 4 系列
- LIDNUG:星期二早晨跟我在网上聊天
- 观止之读后感
- 关于最近Visual Studio的ATL更新
- 《Microsoft Office SharePoint Server 2007 管理员指南》发布
- 工作上的些许变化
- 【翻译】Code Only增强
- 八卦 Lisp 简史
Expression Web 3
[原文发表地址] Expression Web 3
[原文发表时间] Friday, June 05, 2009 11:12 PM
随着网络在为全世界消费群体创造和提供用户体验和应用程序的过程中,发挥着越来越中心的作用, 为网页设计师提供一个符合现代网页标准的工具就显得十分的重要。
在今年早些时候的MIX’09,我们发布了Expression Web SuperPreview for Internet Explorer的预览版。这工具旨在帮助网页设计师检测网页布局在不同版本浏览器中是否存在问题。SuperPreview将作为Expression Web 3的一个功能,并且会提供对SuperPreview for Internet Explorer的免费下载。我们现在正在对Expression Web 3做发布之前的最后准备工作,在2009年的夏天你们就可以用上它了。
现在,让我们来快速浏览一下包含在Expression Web 3里面的新功能,其中就包括SuperPreview。
SuperPreviewSuperPreview是一个用来观察网页在不同的浏览器中的显示效果,并帮助检测发生显示异常的原因的工具软件。我们意识到客户有权选择他们喜欢的浏览器 – 网页设计师也同样如此。但是,同一个网页在不同浏览器中的渲染效果往往并不完全一致的。所以,测试网页在不同的浏览器中的显示效果,可以用来保证兼容性和设计的保真度,这是非常重要的。
SuperPreview可以显示一个网页在不同的浏览器中撞在后所看到的效果。包括IE6、IE7、IE8 和Firefox 3。你可以把网页并排放着看,或者可以覆盖着看,并且可以利用尺子,向导和缩放工具条来精确地定位网页布局的不同点。你甚至可以把页面覆盖在Photoshop图片上来验证该页面在视觉上跟原图接近与否。下面,你可以看到Firefox 3 和IE6所产生的非常小的渲染效果的区别是怎么影响到你的网页看上去的效果的。
自从我们在MIX’09宣布SuperPreview之后,我们又添加了很多新功能。现在你可以通过查看HTML的Document Object Model (DOM)来看到在每一个浏览器中你的页面。当你点击任何渲染中的视觉元素时,他们会在DOM中显示被选中。
当你选择一个HTML的元素,Expression Web也会显示一个小的提示。比如大小,到左边的距离以及到顶端的距离。当这些数值跟它们的设定值不一样的时候,这些不同会被突出显示。在下面这个例子里,左边距离、顶端距离和高度值由于有差异而用被红色的字体高亮显示。
你可能会经常想要在不同的分辨率下来预览你的网页,保证你的客户在每一种屏幕显示率下都得到同样好的用户体验。你可以选择目前的浏览器渲染分辨率,或者利用浏览器的size选项任意输入一个分辨率。
最后,如果你在开发一个ASP.NET或者PHP网页应用,你要预览一个ASPX或者PHP文件,SuperPreview会调用一个ASP.NET或者PHP来渲染网页。显示这个页面在不同的浏览器中应该具有的显示效果。
快照浏览当你想用复杂的工具来验证你的网页在你想要的多个浏览器中的显示是否正确,SuperPreview是一个很有用的功能。然而,当你设计一个页面的时候,你也许想要快速的看一个你的页面在其它的浏览器中是怎么样子的。
快照预览是用来显示本地HTML,ASPX或者PHP页面的浏览器预览,并且实时修正你的脚本,这样无需加载到实际的浏览器来验证你的脚本修正辩护,可以节省时间和精力。
快照预览板可以拖动并固定在Expression Web 3的任何地方 – 你甚至可以让它浮动在你的第二显示器。在该预览板的左上角,你可以选择在快照浏览中渲染所要的浏览器。快照浏览可以基于你所选择的浏览器来保真地渲染显示。此功能运用了SuperPreview技术,使用了所选浏览器的真正的渲染引擎,所以渲染是完全精确的。
利用SFTP 或者 FTPS发布我们承认网页是多样化的,所以网页设计师需要一个标准兼容的工具来支持尽可能多的发布标准。Expression Web 3支持利用WebDAV,FTP,SFTP,或者FTPS到多个目的地的网站,并且提供实时的发布进度状态。Expression Web 3也支持一个网站发布到多个目标以及多个渠道的文件传输来提高速度性能。
Photoshop PSD有了Expression Web 3,当我们工作于Photoshop文件的时候,已经极大地提高了工作流和容量能力。当你输入一个PSD文件,你可以选择你想要输入的那个层到你的网页。在该层被存于Expression Web 3之前,你可以把该层以JPG、PNG或者GIF的形式存档,并且扩展该图像。如果源文件被改变,Expression Web 3会提示你去更新。
Silverlight 视频Expression Web 3允许你快速编码和插入Silverlight视频到你的网页中,Expression Encoder 3提供不同标准的编码和转译功能。你甚至可以选择从不同的视频播放器皮肤(skins),来最好的配合你的网页图像. Expression Encoder 3支持高质量的VC-1和H.264 Silverlight视频流媒体。
其它在Expression Encoder 3中的提高和更新包括对于Team Foundation Server 源代码控制的支持,以及Deep Zoom Composer来制作任意大的缩放图像。
想得到更多信息, 请访问Expression Web Team Blog.
Namaste!
推荐文章
- 博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫
- VS 2010 和 .NET 4 系列
- LIDNUG:星期二早晨跟我在网上聊天
- 观止之读后感
- 关于最近Visual Studio的ATL更新
- 《Microsoft Office SharePoint Server 2007 管理员指南》发布
- 工作上的些许变化
- 【翻译】Code Only增强
- 八卦 Lisp 简史

