本周ASP.NET英文技术文章推荐[03/23 - 04/05]:C#、Visual Studio、MVC、死锁、Web 2.0 API、jQuery、IIS7、FileUpload
摘要
本期共有9篇文章:
- 提高C#和Visual Studio 2008生产力的10个技巧
- ASP.NET MVC Action过滤器:缓存和压缩
- 程序停止工作及其解决方法:第一部分:死锁
- 调用Digg、Flickr、Facebook、YouTube、Twitter、Live Services、Google和其他Web 2.0 API的C#及VB.NET类库
- 使用jQuery调用ASP.NET的JSON Web Service
- ASP.NET MVC框架:第二部分:测试
- IIS7的新模块:日志报表、数据库管理等
- 给ASP.NET 2.0 FileUpload控件添加过滤功能
- OnLoad?Page_Load?还是Load事件?
[1] 10 Tips to Boost Your Productivity with C# and Visual Studio 2008 (提高C#和Visual Studio 2008生产力的10个技巧)
此类文章相对来说比较泛滥,而且均冠以“10大”之类的标题。不过偶尔看一下,可能还是会有所帮助,毕竟不要花费太多时间:
- Learn Key Bindings
- Generate XML Comments with GhostDoc
- Auto-Implement Properties
- Refactor
- Add Commands to Visual Studio 2008
- Speed up Compilation with Project Configuration
- Let Visual Studio Generate Unit Test Code
- Use Interface-Driven-Design
- Make a Mockery of Dependencies
- Data Drive Unit Tests
其中第5条Add Commands to Visual Studio 2008中介绍的那个小工具非常不错,节省了不少时间。
[2] ASP.NET MVC Action Filter - Caching and Compression (ASP.NET MVC Action过滤器:缓存和压缩)
作者给出了ASP.NET MVC中的两个Action过滤器,让我们能够很方便地添加缓存和压缩支持。
其中的缓存过滤器只要这样为方法添加属性即可:
[CacheFilter(Duration = 60)]
public void Category(string name, int? page)
而压缩的使用方式也非常类似:
[CompressFilter]
public void Category(string name, int? page)
[3] Hangs and how to solve them - part 1 - Deadlocks (程序停止工作及其解决方法:第一部分:死锁)
文章本身没有太多的详细介绍,不过最后给出的一系列链接倒是非常的不错,绝对是系统了解死锁相关问题的好资源:
- Deadlock (critical sections)
- Deadlock (executive resources)
- Deadlock (mixed objects)
- Deadlock (LPC)
- Deadlock monitor
- No More Hangs- Advanced Techniques To Avoid And Detect Deadlocks In .NET Apps
- Detecting Deadlocks in Multithreaded Win32 Applications
- Under the Hood -- MSJ, January 1996
[4] C# and VB .NET Libraries to Digg, Flickr, Facebook, YouTube, Twitter, Live Services, Google and other Web 2.0 APIs (调用Digg、Flickr、Facebook、YouTube、Twitter、Live Services、Google和其他Web 2.0 API的C#及VB.NET类库)
很多Web 2.0都提供了专门的API供其他程序调用,自然也有一些类库对这些API进行了封装。本文就列出了这样几个流行的Web 2.0网站的调用类库,例如调用Flickr,只要使用如下语法即可:
PhotosSearchOptions options = new PhotosSearchOptions();
options.Tags = "blue,sky";
options.Extras |= PhotoSearchExtras.DateTaken | PhotoSearchExtras.OriginalFormat;
Photos photos = flickr.PhotosSearch(options);
[5] Using jQuery to Consume ASP.NET JSON Web Services (使用jQuery调用ASP.NET的JSON Web Service)
ASP.NET AJAX的客户端类库内建了对调用ASP.NET的JSON Web Service的支持,不过只要“模拟”出同样的请求,任何的JavaScript客户端类库都能够一样调用。
这篇文章就介绍了使用jQuery调用ASP.NET的JSON Web Service的方法,其实并没有任何技巧可言:
$(document).ready(function() {
$.ajax({
type: "POST",
url: "RSSReader.asmx/GetRSSReader",
beforeSend: function(xhr) {
xhr.setRequestHeader("Content-type",
"application/json; charset=utf-8");
},
dataType: "json",
success: function(msg) {
// Hide the fake progress indicator graphic.
$('#RSSContent').removeClass('loading');
// Insert the returned HTML into the <div>.
$('#RSSContent').html(msg.d);
}
});
[6] ASP.NET MVC Framework – Part 2: Testing (ASP.NET MVC框架:第二部分:测试)
似乎MVC框架中对测试的关注程度非常高,最近好多文章都在介绍这个东西。这篇文章也是一步步地给出了通常的使用方法,从为什么要测试到如何测试。
下面就是对某个Controller进行测试的代码:
[TestMethod]
public void AboutOverride()
{
HomeControllerForTest controller = new HomeControllerForTest();
controller.About();
Assert.AreEqual("Index", controller.SelectedViewName,
"Should have redirected to Index");
}
[7] New Log Reporting, Database Management, and other cool admin modules for IIS 7 (IIS7的新模块:日志报表、数据库管理等)
Scott的一篇文章,其中介绍了花哨的IIS7中的另一些管理模块。例如这个日志报表:
不过实际上,我还是觉得从前的IIS 6界面比较顺眼,使用了IIS 7的时间也不短了,还是没有搞清楚某些功能在什么地方…………
[8] Adding Filter Action to FileUpload Control of ASP.NET 2.0 (给ASP.NET 2.0 FileUpload控件添加过滤功能)
所谓过滤功能,其实就是只允许上传某类扩展名的文件。不过实际上HTML中并没有此类内建的支持,因此若想实现此类功能,还是要靠客户端的JavaScript和服务器端自定义的验证逻辑配合。当然,个人感觉最好的方法还是使用专门的Flash上传控件。
[9] OnLoad vs. Page_Load vs. Load event (OnLoad?Page_Load?还是Load事件?)
若想在Page加载时执行某些自定义操作,既可以覆写页面的OnLoad方法,也可以在默认的Page_Load中直接添加,还可以监听页面的Load事件,那么三者之间有什么区别呢?应该如何挑选呢?
本文就从性能、编程风格、代码一致性、是否面向对象等各个方面对上述三种方法进行了比较……