代码改变世界

随笔分类 -  06. 项目扩展

为ASP.NET MVC扩展异步Action功能(下)

2009-02-04 09:04 by Jeffrey Zhao, 16060 阅读, 收藏, 编辑
摘要: 续上篇:异步请求处理是ASP.NET 2.0中引入的高级特性,它依托IO Complete Port,对于提高IO密集型应用程序的吞吐量非常重要(详见原理描述和性能测试)。但是目前ASP.NET MVC框架缺少异步Action功能,这也就是老赵经常挂在嘴边的那个“目前ASP.NET MVC所缺少的非常重要的功能”。我在春节休假期间仔细思考了一下这方面的问题,得出了一个相对不错的扩展:完整,方便,并且非常轻巧——核心逻辑代码只有200行左右,这意味着绝大部分功能将会委托给框架中现成的内容,确保了扩展的稳定,高效并且拥有较好的向后兼容性。 阅读全文

为ASP.NET MVC扩展异步Action功能(上)

2009-02-02 09:22 by Jeffrey Zhao, 26798 阅读, 收藏, 编辑
摘要: 异步请求处理是ASP.NET 2.0中引入的高级特性,它依托IO Complete Port,对于提高IO密集型应用程序的吞吐量非常重要(详见原理描述和性能测试)。但是目前ASP.NET MVC框架缺少异步Action功能,这也就是老赵经常挂在嘴边的那个“目前ASP.NET MVC所缺少的非常重要的功能”。我在春节休假期间仔细思考了一下这方面的问题,得出了一个相对不错的扩展:完整,方便,并且非常轻巧——核心逻辑代码只有200行左右,这意味着绝大部分功能将会委托给框架中现成的内容,确保了扩展的稳定,高效并且拥有较好的向后兼容性。 阅读全文

Fast Reflection Library

2009-02-01 09:25 by Jeffrey Zhao, 19141 阅读, 收藏, 编辑
摘要: 这是我在CodePlex上创建的一个项目,它的网址是http://www.codeplex.com/FastReflectionLib,使用Microsoft Public License (Ms-PL),您可以随意在自己的产品中使用它的全部或部分代码。这个项目用到了我在《方法的直接调用,反射调用与Lambda表达式调用》和《这下没理由嫌Eval的性能差了吧?》两篇文章里用到的做法,并加以提炼和扩展发布的项目——随便搞搞,留个印记,也供以后参考。 阅读全文

StyledAutoComplete - 支持丰富样式的自动补全

2007-06-12 18:15 by Jeffrey Zhao, 7590 阅读, 收藏, 编辑
摘要: 几个月前,我扩展了Atlas CTP时期的的AutoCompleteBehavior,到了ASP.NET AJAX正式版之后这个扩展自然就不能用了。其实这段时间内有不少朋友问我该如何做到像Google Suggest那样带丰富样式的自动补全功能,但是由于各种原因,我没有深入地研究它,更别提对它的扩展了。最近手头正好有些时间,也就逼迫自己耐着性子读了读AutoCompleteBehavior的代码,并作了这个扩展。 阅读全文

让UpdatePanel支持文件上传(5):支持页面重定向的HttpModule

2007-04-12 11:51 by Jeffrey Zhao, 8440 阅读, 收藏, 编辑
摘要: 在最后,我们还必须编写一个HttpModule来支持异步刷新时页面的重定向。 阅读全文

让UpdatePanel支持文件上传(4):数据传输与解析机制

2007-04-11 15:02 by Jeffrey Zhao, 6438 阅读, 收藏, 编辑
摘要: 现在就要开始整个项目中最有技巧的部分了。如果我们的组件需要在多种浏览器中正常的运行,我们必须好好考虑一下发送和解析数据的方式。如果我们把这部分的机制完全交给ASP.NET AJAX原有的行为来执行,则会遇到问题。 阅读全文

让UpdatePanel支持文件上传(3):客户端组件

2007-04-06 10:10 by Jeffrey Zhao, 5447 阅读, 收藏, 编辑
摘要: 我们的UpdatePanelIFrameExecutor继承了WebRequestExecutor,因此需要实现许多方法和属性。但是我们事实上不用完整地实现所有的成员,因为客户端的异步刷信机制只会访问其中的一部分。 阅读全文

让UpdatePanel支持文件上传(2):服务器端组件

2007-04-05 11:55 by Jeffrey Zhao, 6611 阅读, 收藏, 编辑
摘要: 我们现在来关注服务器端的组件。目前的主要问题是,我们如何让页面(事实上是ScriptManager控件)认为它接收到的是一个异步的回送?ScriptManager控件会在HTTP请求的Header中查找特定的项,但是我们在向IFrame中POST数据时无法修改Header。所以我们必须使用一个方法来“欺骗”ScriptManager。 阅读全文

让UpdatePanel支持文件上传(1):开始

2007-04-04 12:16 by Jeffrey Zhao, 16107 阅读, 收藏, 编辑
摘要: UpdatePanel从一开始就无法支持AJAX的文件上传方式。Eilon Lipton写了一篇文章解释了这个问题的原因。文章中提供了两个绕开此问题的方法。不过,我们为什么不使UpdatePanel兼容FileUpload控件(<input type="file" />)呢?如果可以这样,一定能够受需要使用UpdatePanel上传文件的用户欢迎。 阅读全文

UpdatePanel终于可以上传文件了!

2007-03-26 20:23 by Jeffrey Zhao, 38269 阅读, 收藏, 编辑
摘要: UpdatePanel终于可以上传文件了!我们要做的,只是在页面上添加一个控件而已。 阅读全文

ModalUpdateProgress控件

2007-03-26 02:33 by Jeffrey Zhao, 8760 阅读, 收藏, 编辑
摘要: 在之前的一篇文章中,我谈了如何在页面中“轻量级地”实现了模态的UpdateProgress。这次,我带来了一个“重量级”的实现:ModalUpdateProgress控件。 阅读全文

可能是最漂亮的非静态Page Method解决方案

2006-12-28 13:38 by Jeffrey Zhao, 8142 阅读, 收藏, 编辑
摘要: 在我前一片文章《浅谈实例Page Method到静态Page Method的移植》中,我提到了两种属于work around的解决方案,的确有效,如果可以的话我也建议尽可能地改成那样,尤其是第一种“在客户端获得参数信息”的做法,性能很高,值得推荐。不过从“技术”方面来考虑,这两个做法都不如现在这种来得漂亮。我尝试着实现了一个HttpModule,只要使用了它就能轻松使用原来的“非静态Page Method”了,这几乎完全解决了ASP.NET AJAX中无法使用非静态Page Method的问题,CTP时期程序的移植也变得再容易不过。 阅读全文

InteWidgetTookit现有三个控件的使用方法

2006-12-02 23:07 by Jeffrey Zhao, 3398 阅读, 收藏, 编辑
摘要: 在我之前的文章《我的开源项目:InteWidgetTookit》里,对InteWidgetToolkit进行了的简单介绍。现在我已经开始使用CodePlex进行开发和管理,它的地址是:http://www.codeplex.com/InteWidget,欢迎感兴趣的朋友关注。在之前的基础上,我改进了基于Dojo开发Extender所以使用的DojoExtenderControlBase与BaseScripts.js,现在使用它们开发基于Dojo的Extender只需简单地在服务器端编写一个类,使用CustomAttribute进行一些标记即可,几乎不要写任何客户端代码,并且能够在UpdatePanel中执行。现在我基于Dojo简单地开发了三个不同类型的Extender:ColorPalatteExtender、TooltipExtender和SplitContainerExtender。这次我将描述一下它们的使用方式。 阅读全文

我的开源项目:InteWidgetTookit

2006-11-27 20:03 by Jeffrey Zhao, 4608 阅读, 收藏, 编辑
摘要: “InteWidgetToolkit”很明显是一个Toolkit,也就是工具包。“Inte”是“Integrate”的缩略。而Widget的含义则是“小工具”。其实这个名字的本意是“一个集成第三方脚本类库中Widget的ASP.NET AJAX工具包”,但是目前的决定是“一个集成第三方脚本类库的ASP.NET工具包,提供了各种Widget”。InteWidgetToolkit的目的是提供各种控件,目前想法是以Extender的方式为主,但是不排除今后会加入普通WebControl的类型。目前第三方脚本控件暂且定位在Dojo和Yahoo! UI Library。 阅读全文

出于对Atlas自带AutoCompleteBehavior的不满,自定义了一个支持模版的AutoCompleteBehavior

2006-10-20 03:05 by Jeffrey Zhao, 3110 阅读, 收藏, 编辑
摘要: AutoCompleteBehavior只能作出最简单的提示,其它什么功能也没有。无法设置样式,无法自定义信息,这就是我们想要的功能吗?这就是所谓的“桌面级”体验吗?很显然,这远远不够。豪不夸张地说,我是怀着对于AutoCompleteBehavior的强烈不满(其实这是前几天我在向别人介绍Atlas时被人Challenge的结果),决定自定义一个加强的AutoCompleteBehavior,不过其实唯一的增强也就是提供了用户自定义模版的能力。 阅读全文

Book List Gadget for Windows Live Spaces - Usage Instructions

2006-10-08 16:30 by Jeffrey Zhao, 1224 阅读, 收藏, 编辑
摘要: An advanced book list for Windows Live Spaces. 1. The text to show can be given by the owner or from Amazon if ISBNs are provided. 2. All the texts will link to some place - if you need them to do so. 3. The format of texts can be defined by the ower by 'template'. 4. The owner can give a title to the book list. 5. The owner can set the position of images - left or right. 6. The details can be show/close by a switch for each book. 阅读全文

一个我在研究Atlas Control Toolkit时做的尝试:ImageGalleryExtender

2006-09-21 07:37 by Jeffrey Zhao, 2635 阅读, 收藏, 编辑
摘要: ImageGalleryExtender是我在研究Atlas Control Toolkit代码时的一个尝试。这个Extender的作用是能够轻松地制作一个相册浏览的功能。 阅读全文