RSS 2.0 Feed
2007-10 Entries
摘要:【原文地址】Optimizing the Silverlight Install Experience 【原文发表日期】 Tuesday, October 30, 2007 2:44 AM 当你开始在你的网站或应用中使用Silverlight时,有个要考虑的很重要的东西是,确保你对“万一用户还没有安装Silverlight”的情形有对策。从理想的角度来说,你需要确保安装Silverlight的体验与你网站或应用的整体用户体验天衣无缝地相结合。 Silverlight“间接安装”体验 在默认的情形下,当你使用Silverlight.js库来在页面里装载Silverlight控件时,它会自动检测出Silverlight是否已经安装在访问你网站的用户机器之上,如果没有,它就会通过Silverlight.js自动注入你的页面的安装图案来提示用户安装。 这个默认的安装选项是我们称之为“间接安装”的选项,因为当用户点击安装链接时,它会自动打开一个新的窗口,里面显示了Microsoft.com的Silverlight用户使用协议以及下载页面。 间接安装选项的好处是它可以在任何网站上工作(不需要自定义的JavaScript)。但其缺点是,访问你网站的人最终被转到了另外的页面上去安装Silverlight,与你网站其他部分的整体用户体验的结合性感觉不是很好。 Silverlight“直接安装”体验 Silverlight还支持另一个我们称之为“直接安装”的选项,你可以把Silverlight的安装整合到你的网站上,建造出更为沉浸,更加用户友好的体验。 当还没有安装Silverlight的用户点击Silverlight安装图案时,你可以编写代码从Microsoft.com直接下载Silverlight安装文件,然后启动安装程序。当安装程序结束时,然后你就可以刷新HTML网页,立刻显示你网站上的Silverlight内容(用户不需要转换页面或手工点击刷新按钮)。在宽带网络连接上,整个过程要花的时间少于20秒,用户体验感觉结合性非常好。 Silverlight安装体验白皮书和例程 今天早些时候,我们发表了一个白皮书,和几个样例脚本,按部就班地演示如何在你的网站上建造Silverlight“直接安装”体验。你可以在这里下载。你可以在Tim Sneath这里的博客贴子里了解更多的详情。 白皮书和样例脚本示范了如何促进直接安装体验,以及如何设计网站的HTML界面以鼓励用户很自然地点击安装链接。 Silverlight书籍 想进一步了解如何使用Silverlight 1.0打造酷媒体和丰富交互体验的应用,去阅读一下目前刚发行的这些Silverlight 1.0新书:     希望本文对你有所帮助, Scott   标签:.NET, Community News, Silverlight...[阅读全文]

posted @ | Feedback (3) | Filed Under [ .NET Community News Silverlight ]

摘要:【原文地址】Important Notice: VS 2008 Beta2 VPC Images Expiring on Nov 1st 【原文发表日期】 Monday, October 29, 2007 9:18 PM 这个月早些时候,我们发现今年夏天作为VS 2008 Beta2一部分发布的 VPC(Virtual PC) images里面的操作系统很不幸地将于今年11月1日过期。 单独下载的 VS 2008 安装包则没有这样的问题,只有预制的VPC images才有这样的问题。所以,如果你是在自己的操作系统上安装的VS 2008 ,那么你不会有什么问题的。 但如果你使用的是Beta2的 VPC images,那么你应该在11月1日之前取出保存在其中的所有的数据,之后操作系统就停止工作了。 今天,我们在这里重新发布了你可以下载和使用的VS 2008 Beta2 VPC image(没有过期设置)。 对此我们非常抱歉, Scott 标签: ASP.NET, Visual Studio, .NET...[阅读全文]

posted @ | Feedback (5) | Filed Under [ ASP.NET .NET Visual Studio ]

摘要:【原文地址】October 25th Links: ASP.NET, ASP.NET AJAX, Visual Studio, Silverlight and IIS 7.0【原文发表日期】 Thursday, October 25, 2007 1:35 AM 这是我的链接系列的最新篇。也请参阅我的ASP.NET 技巧,诀窍和教程网页里我以前写的众多很受欢迎的文章的链接。 ASP.NET 在ASP.NET 2.0中发送邮件:答复地址,发送优先设置和要求阅读收据的问题: Scott Mitchell写了一篇非常有用的文章,描述如何使用.NET 2.0和ASP.NET 2.0中的一些高级的email特性。 改进超宽GridView的显示: Matt Berseth写了一篇很好的文章,示范如何添加一些非常酷的CSS和AJAX效果来改进ASP.NET GridView控件的可读性。也请参阅他写的关于自定义样式的补充性文章。 清除中止活动的匿名用户: ASP.NET2.0支持一个特性叫“匿名用户”,该特性允许你跟踪和储存访问你网站的匿名用户的数据(参阅K. Scott Allen这里的文章了解相关原理)。Omar Al Zabir发表了一个很有用的文章,描述如何周期性地清除匿名用户数据以免占据你的数据库。 ASP.NET AJAX Yahoo界面风格的AJAX进度条:Matt Berseth写了一篇很棒的文章,描述如何使用ASP.NET AJAX来实现Yahoo界面风格的AJAX进度条。 支持多列Widget拖放之ASP.NET AJAX Extender: Omar Al Zabir写了一篇精彩的博客贴子,描述他是如何建造一个ASP.NET AJAX Extender来允许门户界面场景下的拖放支持的。 给ASP.NET AJAX控件工具包中日历控件设置主题: Matt Berseth写有一篇很好的文章,是关于如何定制ASP.NET AJAX 控件工具包里提供的AJAX日历控件的外观的。 你会犯这3个常见的ASP.NET AJAX 错误吗?: Dave Ward写了一篇精彩的文章,详细解释了人们在使用随ASP.NET AJAX发布的<asp:updatepanel>控件时常犯的几个错误。 Visual Studio 加快Visual Studio 2005的运行速度: 这里有几个非常有用的建议,关于如何加快VS 2005 IDE环境的速度的。至于其他的性能建议,请参考我这里和这里的老贴子。 VS2008现在包括SQL数据发布向导: 我们往VS 2008最终版中添加的一个Beta2后特性是在Visual......[阅读全文]

posted @ | Feedback (7) | Filed Under [ ASP.NET .NET IIS7 Visual Studio Atlas Silverlight Link Listing ]

摘要:【原文地址】ASP.NET MVC Framework 【原文发表日期】 Sunday, October 14, 2007 10:41 PM 过去的几年里,很多人要求ASP.NET的一件事情就是对使用基于model-view-controller(模型-视图-控制器,简称MVC)架构来开发web应用的内置支持。 上个周末在Austin举行的Alt.NET大会上,我首次对我的团队正在开发的新ASP.NET MVC 框架作了一个公开的演示。你可以在Scott Hanselman这里的博客上观看我的讲座的录像。 我们将在今年稍后发布该框架的一个公开预览版,然后在明年的上半年将它作为完全支持的ASP.NET特性推出。 模型-视图-控制器(MVC)框架是什么东西? MVC是个将一个应用的实现分成三个组件角色的框架技术:模型,视图和控制器。 在基于MVC的应用里,Model(模型)是负责保持状态的应用组件。这个状态通常都持久于数据库之中(譬如,我们也许会有一个Product(产品)类用来代表SQL中的Products数据表中的订单数据)。 在基于MVC的应用里,View(视图)是负责显示用户界面的组件。这个UI通常是使用模型数据来创建的(譬如,我们也许会生成一个Product"编辑"视图,根据当前Product对象的状态,显示文本框,下拉框和复选框等)。 在基于MVC的应用里,Controller(控制器)是处理用户交互,操作模型和最终选择用哪个视图来显示UI的组件。在MVC应用中,视图只是用来显示信息而已,是控制器来处理和回应用户的输入和交互的。 使用MVC方法的一个好处是,它有助于促进应用中模型,视图,控制器间的关注的清晰分离。保持关注的清晰分离使得对应用的测试极其容易,因为不同应用组件间的契约的定义和表达是更明确的。 MVC模式也有利于促进红/绿式测试驱动的开发 (TDD),通过它,你可以在你实际编写应用代码本身之前首先实现自动化的单元测试,这些单元测试定义和核实了新代码的需求。 ASP.NET MVC 框架的一些简要细节 在几个星期后,相关代码可以下载之后,我将写一些关于这个新的ASP.NET MVC 框架的深入性的教程贴子(与此同时,想进一步了解它的最佳方式是观看我的Alt.net讲座的录像): 这里是关于ASP.NET MVC 框架的一些简要细节: 它将促进清晰的关注分离,可测试性,和TDD。MVC框架中的所以核心契约都是基于接口的,可以轻易地通过mock来模拟(包括基于接口的IHttpRequest/IHttpResponse这些基本的东西)。你可以不用在ASP.NET进程中运行控制器(这使得单元测试很快),就单元测试你的应用。你可以使用你想使用的任何单元测试框架来做单元测试,包括NUnit, MBUnit, MS Test等等。 这个框架具有高度的可扩展性和可插拔性。MVC框架中所有的东西都是这样设计的,它们可以被轻易地替换掉或者定制(譬如,你可以插入你自己的视图引擎,路径转向策略(routing policy),参数序列化等等)。它还支持使用现有的依赖注入(dependency injection)和控制反转(IOC)容器模型(Windsor, Spring.Net, NHibernate等等)。 它包括一个非常强大的URL映射组件,允许你使用非常干净的URL来建造应用。URL不需要拥有文件扩展,是设计来轻松支持SEO和REST友好的命名模式的。譬如,在我上面的项目中,我可以轻松地把/products/edit/4映射到ProductsController类的Edit方法上,或者把 /Blogs/scottgu/10-10-2007/SomeTopic/ 映射到BlogEngineController类的DisplayPost方法上。 MVC框架支持将现有的ASP.NET .ASPX, .ASCX,和 .Master 标识文件当作视图模板(view template)之用(这意味着你可以轻松地使用很多现有的ASP.NET特性,象嵌套的母版页,<%= %>块 ,声明式服务控件,模板,数据绑定,本地化等等)。但是,它不使用现有的将交互返回服务器的postback模型,取而代之的是,你将把用户的所有交互转给控制器类来调度,这有助于关注的清晰分离和提高可测试性(这也意味着,在基于MVC的视图内没有viewstate或page的生命周期之说)。 ASP.NET MVC框架将完全支持象forms/windows认证,URL授权,成员/角色,输出和数据缓存,session/profile状态管理,健康监测,配置系统,以及provider架构等等现有的ASP.NET特性。 结语 如果你正在想使用MVC方式建造你的web应用的话,我认为你会发现这个新的 ASP.NET MVC 框架选项非常干净,而且容易使用。它将允许你在你的应用中很轻易地保持关注分离,而且有助于进行干净的测试和TDD。 几个星期之后,我将撰文说明新的MVC特性的工作原理,以及如何利用它们。 希望本文对你有所帮助, Scott 标签: ASP.NET, .NET, Talks, MVC   【附】 Scott Guthrie对一些评语的答复:   1. 【问】你可以在现有的ASPX,ASCX等。。。里使用声明式服务控件,假如服务控件需要ViewState和Page的生命周期才能工作的话,那么在基于MVC的视图里使用服务器控件的后果是?   【答】视图本身是标准的.aspx, .ascx, .master文件,所以还是有对应的后台(code-behind)类,你可以在其中处理控件的render事件,以把视图的markup与视图的显示逻辑干净地分开。   至于声明式控件,控件模型对建造控件而言还是一样的,区别是,你不能使用postback特性。从逻辑上说,这就象今天创建一个没有<form runat="server">的aspx网页类似。所以象<asp:repeater>以及其他的控件依旧还会工作,你要使用标准的表单提交或<a href=""> url来做post操作。   我们也会提供一些对MVC有意识的服务器控件,可以用于没有postback的视图页面里,它们将与基于控制器的逻辑很干净地集成。   2. 【问】MVC框架是否会包括在VS 2008 RTM里? 【答】 MVC框架可以在VS 2008 RTM下工作,我们将在发布VS 2008 RTM的同时,发布第一个预览版。MVC框架本身先会居于一个单独的程序集中,然后会变成.NET 3.5 SP1的一部分。   3. 【问】假如我们使用MVC框架,我们是不是又回到原地了?还是会提供给我们这些认为生命是短暂的人一些适当的好处?用个比喻,我可不想每次冲淋浴,就要重建水龙头(taps)。   【答】注意,MVC框架并不替代现有的web form模型,很明显,我们将继续完全支持并增强web form模型的功能。所有,假如你喜欢控件postback式交互的话,我大概会建议你还是继续目前的做法,使用基于MVP的模型来做测试。   而MVC模型的确在显示HTML方面给你更多的控制。但就象你注意到的,这既有好处也有坏处,好处是你有更多的控制,坏处是,控制越多,你需要照顾的东西也越多。我们将提供很好的方式来处理错误和保持表单状态,这样你就不用写些丑陋的编码来处理这些东西了。对你的界面来说,服务器控件模型还是很好地提供了非常干净的方式来封装视图辅助(view-helper)功能,而且我们将提供一套丰富的控件来辅助你。   4. 【问】Brail视图引擎有一样好处是,视图是独立于主要应用被编译的,所以假如你对视图做了改动,它可以立刻被重新编译。我假定基于DLR的视图没有被编译,但在aspx视图的情形下,改动视图是否需要重新装载应用而导致长时间的延缓呢?假如不需要的话就太好了。   【答】当.aspx网页被改动后, ASP.NET监测到其变化后,会自动为它生成一个新的程序集。那样,我们就不需要重新启动应用了。在基于DLR的.aspx网页的情形下,实际上我们根本不创建程序集,而可以在内存里对它们做编译,基于IronPython的.aspx 网页就是这样工作的。   注意,因为ASP.NET MVC框架是可以插拔的,你可以选用MonoRail Brail视图引擎来显示你的视图。所以如果你喜欢Brail模型的话,还是可以继续和新的MVC框架协同工作的。 5.【问】对MVC有意识的服务器控件能否可以从模型验证来推出自动的客户端验证(譬如通过CSS属性)?   【答】我们会研究,在可能的情况下,从模型的验证,来允许处理错误的客户端样式和客户端JavaScript错误验证。但这个不会出现在几个星期后的第一个预览版里,但这是我们近期看过的,以后会再研究。   6.【问】你是可以讨论一下MVC中DLR,动态语言,LINQ和Asp.Net futures的支持? 【答】LINQ肯定会在MVC框架内完全支持,我们也会增加DLR支持,允许你使用包括IronPython和IronRuby在内的动态语言建造视图和控制器。   7.【问】象UpdatePanel和其他依赖于postback模型的跟AJAX有关的特性将会得到什么样的支持? 【答】UpdatePanel确实使用postback,所以你无法直接在基于MVC的视图里使用那个控件。但我们将提供一个跟该控件类似功能的控件以及相关的辅助方法。它会调用控制器的一个方法,允许你非常容易地做局部更新。它将允许你非常轻松地使用ASP.NET AJAX库。在几个星期之后我会写博客讨论更多细节。   8.【问】你的讲座录像里的视图代码看上去非常危险地象是老的asp(没有.net)。monorail nvelocity也是如此。我希望你能综合两者的好处哦。   【答】有些人喜欢<%= %>模型,在alt.net大会上我演示MVC模型讲座的参与者都要我使用这种方法(所以我写了那样的代码),我也可以使用<asp:repeater>来做列表,通过code-behind来做数据绑定,这允许你更清晰地构造你的视图显示代码。   9.【问】我只是好奇,你需要对内层代码做多少改动才能使得声明式服务器控件在不使用postback模型的情形下工作?ASP.NET MVC会在没有<form runat="server">的页面上支持现有的服务器控件么?我们是否能够在同一个页面上使用多个HTML表单?   【答】我们实际上不用改动内层代码来支持MVC框架,ASP.NET 实际上已经包含大部分所需的hook了。 ASP.NET MVC框架将允许你在同一个页面里使用多个HTML表单。象<asp:repeater>和其他支持只读模式的控件完全没问题,但倚重于Postback的控件是无法支持postback操作的。   10.【问】我注意到你在ALT.NET的演示里,你从控制器里往视图里以 new {"value", "value2"}的形式传递匿名类型。我的印象是,匿名类型是无法传到一个方法的范围之外的。你能解释一下么?   【答】匿名类型是可以传到他们所在范围之外的,但类型名称是未知的(譬如,你可以以Object类型的形式传递或返回这些对象)。   我使用的辅助方法接受一个object作为可选的参数类型,然后使用IDictionary或反射获取其中的名称/数组对。所以我可以写 <%= Html.Link("Push Me", new......[阅读全文]

posted @ | Feedback (27) | Filed Under [ ASP.NET .NET Talks MVC ]

摘要:【原文地址】 Tip/Trick: Building a ToJSON() Extension Method using .NET 3.5 【原文发表日期】 Monday, October 01, 2007 10:33 PM 今年早些时候,我通过blog介绍了 C# 和 VB 语言的一项新的扩充特性"扩展方法"。 扩展方法让开发者可以向已有的 CLR 类型的公共契约中添加新的方法,而不需要子类化或重新编译原有的类型。通过这种做法,可以使很多有用的应用场景成为可能(包括 LINQ)。同时,扩展方法也可以用来非常方便地向代码中添加"语法糖"。 过去几个月,我一直在准备一些很酷的扩展方法的清单,并计划在有空的时候实现它们(不确定何时...但至少我还能从这些想法中获得乐趣)。在上述清单中有两个扩展方法的应用场景,分别是用于为任意 .NET 对象自动生成JSON (JavaScript Object Notation)或 XML 序列化字符串的。 简单场景:ToJSON() 扩展方法 假设我有一个 Person 类定义如下(注意:我使用了 自动属性的新特性来实现): 接下来,我就可以初始化一系列 Person 对象的集合,然后只需调用 ToJSON() 扩展方法,就能得到表示该集合内容的 JSON 字符串。如下所示: 这和 .NET 中内建的,Object 类的 ToString() 方法调用方式很相似 —— 只是生成的结果是表示集合内容的 JSON 格式的字符串而已。然后我们就可以在 AJAX 场景的客户端使用它: 注意:点击上图中调试器的放大镜图标,可以打开"文本视图(Text Visualizer)",能更方便的查看 JSON 序列化字符串: 接下来,这个字符串格式在客户端可以用 JavaScript 来实例化为合适的 JavaScript 对象,用于表示我的集合内容(注: ASP.NET AJAX 有一个内建的 JavaScript 库支持这些特性)。 实现 ToJSON 扩展方法 实现一个基本的 ToJSON() 扩展方法很简单。只要使用 System.Web.Script.Serialization 命名空间下的 JavaScriptSerializer 类即可,然后象下面所示的那样定义两个扩展方法。其中一个方法用于对目标对象图(object......[阅读全文]

posted @ | Feedback (2) | Filed Under [ ASP.NET .NET Visual Studio Tips and Tricks LINQ ]

摘要:【原文地址】October 8th Links: ASP.NET, ASP.NET AJAX, Silverlight, and .NET 【原文发表日期】 Monday, October 08, 2007 11:14 PM 这是我的链接系列的最新篇。也请参阅我的ASP.NET 技巧,诀窍和教程网页里我以前写的众多很受欢迎的文章的链接。 ASP.NET ASP.NET 2.0健康监测: ASP.NET 2.0引进了一个新的“健康监测”特性,允许你自动地监测和跟踪ASP.NET应用在生产性环境里的运行情况。 Scott Mitchell撰写了分成三个部分的精彩文章系列,讨论了 1) 健康监测的基础知识,2) 如何才能自动收到出错消息的电邮通知,和 3) 怎样创建和触发你自己的自定义健康事件。 创建Yahoo UI DataTable风格的GridView: Matt Berseth写了一篇很酷的文章,描述如何对ASP.NET 2.0 GridView控件进行样式化来取得一个非常好看的视觉外观。 我怎么做系列录像:创建一个自定义的成员提供器: www.asp.net网站上一个新的“我怎么做”录像,讨论了如何创建一个自定义的成员提供器。想了解如何建造ASP.NET提供器的细节的话,一定要去读一下我以前的这篇博客贴子。 我怎么做系列录像:创建一个自定义的用户信息提供器: www.asp.net网站上一个新的“我怎么做”录像,讨论了如何创建一个自定义的用户信息提供器。想了解如何建造ASP.NET提供器的细节的话,一定要去读一下我以前的这篇博客贴子。 BlogEngine.NET 1.2发布了: Mads Kristensen的团队刚发布了一个非常棒的开源博客系统 BlogEngine.NET 的更新版本。你可以在Mads这里的宣布博客贴子里读到有关详情。 ASP.NET AJAX 带多个取消按钮的ModalPopup : Matt Berseth写了一篇很好的文章,描述如何在ASP.NET AJAX 模态Popup对话框里同时支持一个取消按钮以及右上角一个用以关闭的“X”按钮。 ASP.NET AJAX 控件工具包 TabContainer 主题: Matt Berseth 的又一篇精彩文章,是关于ASP.NET AJAX TabContainer 控件的,描述你可以采用的几个很酷的视觉主题。 在XP主题的TabContainer控件中使用CSS图片精灵: Matt Berseth 示范了一个非常酷的技巧,你可以用CSS来创建图片精灵(你可以把多个图片存在单个.png文件里,然后使用偏移在页面不同的地方显示不同的图片)。 Silverlight 《Silverlight Unleashed》......[阅读全文]

posted @ | Feedback (3) | Filed Under [ ASP.NET .NET Community News Silverlight Link Listing ]

摘要:【原文地址】Releasing the Source Code for the .NET Framework Libraries 【原文发表日期】 Wednesday, October 03, 2007 9:27 AM 我的团队一直致力实现的一件事情是,能让.NET 开发人员下载和浏览.NET 框架库的源代码,并且轻松地促成对它们的调试支持。 今天我非常高兴地宣布,我们将在今年晚些时候发布.NET 3.5 和 VS 2008时,同时提供源代码。 我们将首先提供.NET 基本类库(System, System.IO, System.Collections, System.Configuration, System.Threading, System.Net, System.Security, System.Runtime, System.Text, etc), ASP.NET (System.Web), Windows Forms (System.Windows.Forms), ADO.NET (System.Data), XML (System.Xml), 和WPF (System.Windows)的源代码(内含源文件注释)。然后我们将在之后的几个月内公布其他库的代码,包括 WCF,Workflow,和 LINQ。这些源代码将在 Microsoft Reference License (MS-RL))许可下发布。 你可以通过一个单独的安装来下载.NET 框架库源代码,这允许你在本机上以任何文本编辑器来浏览。我们也将在VS 2008内提供源代码的集成调试支持。 Visual Studio 2008的集成调试支持 VS 2008的最终版将支持配置调试器从微软拥有的web服务器上动态下载.NET 框架库调试器字符以及相关的源代码的能力。你将能够配置一次性完全下载.NET 框架库调试器字符,或按需手工获取: 当你调试 .NET应用,触发你的代码中的断点时,你现在将能看到调试器call stack包含了你应用中所用的.NET 框架库类和方法的详细文件和行数信息: 在上面的截图中,你可以看到我们对GridView1.DataBind()设置了断点,之前,根本没有办法钻入这个DataBind()方法,看它是怎么实现的。 现在在VS 2008中,你将能够按F11(单步调试),在调试器中钻入.NET 框架源码实现: VS 2008将包括按需从微软自动获取相关的.NET框架库源代码文件的支持。这意味着,在我们启动调试器之前,上面的ASP.NET GridView和 BaseDataBoundControl类的源代码可以还没有安装在当前机器上。在我们按F11,单步调试进它们的实现时,VS可以自动地从微软下载相关的源代码,然后在IDE中打开。 通过动态地下载源代码文件,我们还可以确保相关的源代码文件与你机器上的.NET框架的特定版本相一致。譬如,你在机器上安装了GDR或服务包补丁,我们将保证下载与之相应的源代码文件。 除了单步调试进入.NET框架的代码外,我们还可以在call stack上往回走进入.NET框架的源代码。譬如,在上面的场景中,我也可以在call stack上双击System.Web.UI.Page 类的私有ProcessRequest 方法来浏览其实现: 我们也可以再往回走,进入mscorlib 程序集中的System.Threading.ThreadPool实现(该类控制运行我们页面的线程): 注意,在前面的2个屏幕截图中, VS 调试器的 "Locals" 和......[阅读全文]

posted @ | Feedback (26) | Filed Under [ ASP.NET .NET Visual Studio Community News ]