RSS 2.0 Feed
2007-04 Entries
摘要:【原文地址】IIS 7.0 Beta3 Ships with a Go-Live License【原文发表日期】 Saturday, April 28, 2007 6:33 PM 这个星期,我们发布了作为Windows Longhorn服务器产品一部分的IIS 7.0 Beta 3。IIS 7.0是IIS历史上最大的发布,给微软web服务器带来了许多重大的改进。这篇文章和这个博客贴子列出了它提供的几个重大改进。 新 IIS 7.0 Beta3 特性 这个星期的IIS 7.0 Beta3版本引进了很多远远超出了Windows Vista中的IIS 7.0版本的新的特性和功能,这些特性包括: Web Farm共享的配置:你现在可以配置你的web服务器们为无状态的,对整个web farm集中所有的配置,代码和内容,这使得扩展(scale out)和管理容易之极。在这里了解如何使用这个新特性的详情。 委派的远程管理:你现在可以使用IIS7管理工具通过HTTP/SSL来远程管理web服务器。服务器管理员现在可以关闭设置和把设置管理"委派(delegate)"给网站管理员,对谁能管理机器上的网站提供了更精细(fine-grained)的控制(对租借主机的情形尤其理想)。 自动的应用池隔离:IIS 7.0极大地方便了对web服务器上应用池工作进程的供给(provision)和隔离(isolate)。这对租借主机的情形,以及那些你需要在应用间完全隔离和sandboxing的企业情形来说是非常理想的。 对PHP和其他扩展内置的FastCGI支持:除了提供丰富的.NET扩展性外,IIS 7.0现在提供了对FastCGI扩展的支持,使得使用象PHP那样的动态web服务器框架容易之极。 新的FTP服务器:新的IIS7 FTP服务器现在添加了对使用FTP/SSL进行安全发布的支持,对主机头信息(host header)FTP的支持,对集成的管理工具的支持,和对可插拔的(plugable)认证的支持(使用跟ASP.NET成员系统一样的提供器模型)。 一定要去读一下Bill Staples这里的博客贴子,了解上面所有这些特性的细节。 IIS 7.0 Go Live 许可 经过实验室几个月的压力测试,我们认为IIS7现在已经可以用做更广的客户部署了。为促进这个,微软现在给IIS7和Windows服务器Longhorn Beta3版本提供一个特别的Go-Live许可。这允许你立刻把IIS7服务器部署到生产性的环境里去(注:我们已经把www.microsoft.com部署到该版本上了). 你可以在这里了解IIS7 go-live许可,以及如何免费下载Windows服务器Longhorn Beta3版本的详情。 或者,你也可以去几个已经部署了IIS7 Beta3的web主机供应商那里登记一个免费的IIS7 Beta主机帐号。你可以在这里了解他们的免费IIS7服务的细节。 希望本文对你有所帮助, Scott 标签: ASP.NET, .NET, IIS7, 社区新闻 (Community News)...[阅读全文]

posted @ | Feedback (9) | Filed Under [ ASP.NET .NET IIS7 Community News ]

摘要:【原文地址】Javascript Intellisense in Visual Studio "Orcas" 【原文发表日期】 Tuesday, April 24, 2007 12:24 AM 2月份时,我写了一个博客贴子,题目叫我的“Orcas初览”讲座。它对随Visual Studio Orcas而来的一些很酷的web开发特性提供了一个很好的总结。如果你还没机会读的话,我建议你在这里看一下。 其中一个殷切期盼的特性是Visual Studio Orcas对客户端Javascript Intellisense的支持(这个特性在免费的Visual Web Developer Express版本中也工作)。 如果你以前曾为手工键入Javascript感到烦恼的话,你肯定会为Orcas的这个特性感到惊喜。Visual Studio现在.aspx 文件,.htm 文件以及外部的.js 文件中提供完整的Javascript Intellisense完成。它对普通的Javascript代码提供了Intellisense ,还对新的ASP.NET AJAX 客户端Javascript框架和用它编写的Javascript代码提供了丰富的支持。 你可以在这里VS Web 工具团队撰写的这2篇综述性贴子里读到关于一些Visual Studio Orcas Javascript 特性的细节: Visual Studio Orcas中的JavaScript Intellisense Visual Studio Orcas中的JavaScript调试 就象Wally 最近在博客里提到的,VS Orcas中的Javascript Intellisense支持之酷处在于,它是设计来开箱即可用(just work out of the box)的。这意味着,你不需要对你的Javascript文件运行什么工具来建立Intellisense提示,你也不用以某种方式来修饰你的Javascript。如果你在外部Javascript文件中建有一个标准的Javascript函数或原型类型,那么你在Visual Studio中使用它时,就应该自动得到Intellisense完成。 可选用的Javascript文档注释 Visual Studio还允许你可选择地在你的代码/库中添加文档注释,来进一步帮助Intellisense 引擎,以及允许开发人员提供文档注释,VS Intellisense引擎可以收集这些注释,用作摘要注释和类型描述/验证检查。 譬如,如果你把这个XML摘要注释加到你的代码里去的话: Visual Studio 会自动显示摘要的细节,以及在健入参数值时提供行内的帮助: Javascript文档注释的格式 ASP.NET团队的Bertrand Le Roy最近写了一篇精彩的博客贴子,详细讨论了ASP.NET AJAX 和Visual Studio Orcas两者都使用的文档摘要注释的格式。此外,该贴子还详细讨论了: 如何给类,方法,参数添加摘要细节 如何本地化Javascript中的文档 如何表示一个外部Javascript 文件需要或引用另一个外部Javascript 文件,然后在使用前一个外部JavaScript文件时,让它的Javascript Intellisense认为另外(文件中)的方法和类型在当前的范围内(in-scope)(这在随便什么时候使用任意AJAX框架库时都会非常有用) 我强烈推荐你去这里读一下他的博客贴子。 ASP.NET AJAX......[阅读全文]

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

摘要:【原文地址】Public Hotfix Patch for VS "Index was outside the bounds of the array" Publish Website Issue 【原文发表日期】 Monday, April 23, 2007 11:31 PM 2个星期前,我在博客里提到我们发布了一个修复一些ASP.NET 2.0编译问题的公开hotfix补丁。你可以在我这里的贴子里了解该补丁的情况。 在那个贴子的评论部分,几个人问到了他们在Visual Studio SP1中遇上的一个问题,是在使用“发布网站” 命令发布一个在内置的ASP.NET 开发 Web 服务器中配置"/"为其虚拟路径(这是个我曾在以前的技巧/诀窍贴子讨论过的非常酷的技术)的web项目时出现的。 具体地说,安装了VS 2005 SP1的人报告说,在发布时遇上了“Index was outside the bounds of the array(索引超出了数组界限)”的出错信息: 很不幸,这是个VS 2005 SP1中出现的回归缺陷(regression bug,【译注】regression bug是指以前正常工作的软件功能在程序改动后不再工作了)。 好消息是,我们刚刚发布了一个针对这问题的公开的hotfix,你可以在这里直接下载。Omar Khan 在这儿MSDN 上的WebDevTools博客上贴出了有关这个问题和补丁的更详细的情况(我建议你订阅这个博客)。 重要注意事项:有不少人有时问我,他们是否应该主动安装QFE HotFixes(在他们遇上问题之前)。我总是建议别这么做,因为QFE hotfixes只经过有针对性的测试以确认解决了一个特定的问题,但并不经过整个产品的end to end sign-off (从头至尾,每一步都有签名同意,没问题才放行)。因此,我建议你只在你遇上上面这些针对性的问题时,你才施用它。 如果你在安装补丁时有什么问题,或在安装后你还看到同样问题的话,你需要联系微软产品支持,他们可以帮你进一步调试问题。微软产品支持的电话是免费的,假如是针对产品的缺陷的话(无论是QFE HotFix请求还是你遇上的产品缺陷)。你可以在这个网页上找到如何联系微软产品支持的细节(该网页允许你按国家来查询本地电话号码)。 希望本文对你有所帮助, Scott 标签: ASP.NET, Visual Studio, .NET, 社区新闻 (Community News)...[阅读全文]

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

摘要:【原文地址】New "Orcas" Language Feature: Query Syntax 【原文发表日期】 Saturday, April 21, 2007 2:12 上个月我开始了一个贴子系列,讨论作为Visual Studio和.NET框架Orcas版本一部分发布的一些新的VB和C#语言特性。下面是该系列的前三篇贴子的链接: 自动属性,对象初始化器,和集合初始化器 扩展方法 Lambda表达式 今天的贴子要讨论另一个基础性的新语言特性:查询句法(Query Syntax)。 什么是查询句法(Query Syntax)? 查询句法是使用标准的LINQ查询运算符来表达查询时一个方便的声明式简化写法。该句法能在代码里表达查询时增进可读性和简洁性,读起来容易,也容易让人写对。Visual Studio 对查询句法提供了完整的intellisense和编译时检查支持。 在底下,C#和VB编译器则把查询句法的表达式翻译成明确的方法调用代码,这样的代码利用了Orcas中的新的扩展方法和Lambda表达式语言特性。 查询句法的例子: 在我以前的语言系列贴子里,我示范了你可以象下面这样声明一个Person类: 然后我们可以使用下面这样的代码,用一些个人信息来生成一个List<Person>集合实例,然后使用查询句法来对该集合做一个LINQ查询,只取出那些姓(last name)的首字母为G的人,按名字(first name)来排序(升序): 上面查询句法的表达式在语意上与下面明确使用LINQ扩展方法和Lambda表达式的代码是等同的: 使用查询句法方法的好处是,结果会是稍微容易读写些,这在表达式变得更繁复时尤其如此。 查询句法 - 理解from和select子句: 在C#中,每个查询表达式的句法从from子句开始,以select或group子句结束。from子句表示你要查询什么数据。select子句则表示你要返回什么数据,且应该以什么构形返回。 譬如,让我们再来看一下我们对List<Person>集合的查询: 在上面的代码片段里,"from p in people"表示了我要对"people" 这个集合做一个LINQ查询,我将用参数"p"代表我正查询的输入序列的每个项。我们将参数命名为"p" 这个事实是无关紧要的,我完全可以很容易地将其命名为"o", "x", "person"或我想要的任何名字。 在上面的代码片段里,语句结尾的"select p"子句表示,作为查询的结果,我要返回一个Person对象的IEnumerable序列。这是因为"people"集合包含了Person类型的对象,而参数p则代表了输入序列中的Person对象。因此,该查询句法表达式的结果数据类型是IEnumerable<Person>。 假如不是返回Person对象,我想返回该集合中的人的名字,我可以把查询改写成这样: 注意上面我不再说"select p",而是说"select p.FirstName"。这表示我不想返回一串Person对象,而是想返回一串字符串,由Person对象的FirstName属性(该属性是个字符串)填充而来。 因此,该查询句法表达式的结果类型是 IEnumerable<string>。 针对数据库的查询句法的例子 LINQ的妙处在于,我可以针对任何数据类型使用完全一样的查询句法。譬如,我可以使用Orcas提供的新LINQ到SQL对象关系映射器支持,对SQL服务器的Northwind数据库进行建模,生成下面这些类(请观看我这里的录像来学习该如何实现): 在上面定义好类模型之后(以及它与数据库间的映射关系),然后我就可以写个查询句法的表达式取出那些单价大于99元的产品: 在上面的代码片段里,我表示我要对NorthwindDataContext类的Products表进行一个LINQ查询,NorthwindDataContext类是由Visual Studio Orcas的ORM设计器生成的。"select p"表示我要返回匹配我的查询的一串Product对象,因此,该查询句法表达式的结果数据类型是IEnumerable<Product>。 就象前面List<Person>查询句法的例子一样,C# 编译器会把我们的声明式查询句法翻译成明确的扩展方法调用(使用Lambda表达式作为参数)。在上面的LINQ到SQL的例子的情形下,这些Lambda表达式会被转化成SQL命令,然后在SQL服务器上做运算(这样,只有那些匹配查询条件的Product记录行会返回到我们的应用中)。促成这个Lambda->SQL 转化的机制的细节可见于我的Lambda表达式博客贴子的"Lambda表达式树"部分。 查询句法 - 理解where和orderby子句: 在一个查询句法表达式开头的"from" 子句和结尾的"select"子句之间,