<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Cat in dotNET_分类_AJAX</title><id>http://feed.cnblogs.com/blog/u/22107/category/73545/rss</id><updated>2012-05-30T18:31:56Z</updated><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/category/73545.html"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/22107/category/73545/rss"/><entry><id>http://www.cnblogs.com/cathsfz/archive/2010/12/24/1916106.html</id><title type="text">Tangram 前端库通过 Github 开源了</title><summary type="text">Tangram 是百度内部一直在开发和使用的前端库之一，功能与 jQuery 、 Prototype 等库类似，主要功能是简化 DOM 操作，并且扩展 JavaScript 语言。这部分功能准确来说属于 Tangram Core ，另外一个叫做 Tangram Component 的库提供一些类似 YUI 、 Sencha 这个级别的组件。之前 Tangram 说要开源很久了，一直卡在流程上，并且也有人觉得必须把库做得足够好了才好意思拿出来开源。我个人的看法是，跟 John Resig 的一样，前端库应该从第一天开始就开源，因为就算你不开源别人也一样能看到，所以还不如开放出来接受别人的贡献。如</summary><published>2010-12-24T08:20:00Z</published><updated>2010-12-24T08:20:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2010/12/24/1916106.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2010/12/24/1916106.html"/><content type="html"/></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2010/01/30/1660004.html</id><title type="text">能承载移动 Web 应用的唯一浏览器： Mobile Safari</title><summary type="text">最近拿 iPhone 、 Android 、 Windows Mobile 这三个平台上的内置浏览器来做了一番对比，结果是只有 iPhone 的 Mobile Safari 能够承载现代化的移动 Web 应用，其他移动浏览器的设计思路还停留在上个世纪──能看网页就行，不存在移动应用一说。我用来做对比的平台是 iPhone 2.0 、 Android 2.0 、 Window...</summary><published>2010-01-30T06:02:00Z</published><updated>2010-01-30T06:02:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2010/01/30/1660004.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2010/01/30/1660004.html"/><content type="text">最近拿 iPhone 、 Android 、 Windows Mobile 这三个平台上的内置浏览器来做了一番对比，结果是只有 iPhone 的 Mobile Safari 能够承载现代化的移动 Web 应用，其他移动浏览器的设计思路还停留在上个世纪──能看网页就行，不存在移动应用一说。我用来做对比的平台是 iPhone 2.0 、 Android 2.0 、 Window...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/11/10/1599674.html</id><title type="text">我在 TechEd 2009 演讲的资源 (Silverlight &amp;amp; Ajax)</title><summary type="text">这是TechEd第二天下午的Silverlight课程资源。关于百度Hi的Silverlight实现方面的任何问题，都欢迎与我讨论。基于Silverlight的RIA架构及百度应用View more presentations from Cat Chen.这是TechEd第三天下午ASP.NET 4课程资源。与ASP.NET AJAX 4.0相关的问题可以在此讨论。建站大业，实战ASP.NET 4...</summary><published>2009-11-10T03:49:00Z</published><updated>2009-11-10T03:49:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/11/10/1599674.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/11/10/1599674.html"/><content type="text">这是TechEd第二天下午的Silverlight课程资源。关于百度Hi的Silverlight实现方面的任何问题，都欢迎与我讨论。基于Silverlight的RIA架构及百度应用View more presentations from Cat Chen.这是TechEd第三天下午ASP.NET 4课程资源。与ASP.NET AJAX 4.0相关的问题可以在此讨论。建站大业，实战ASP.NET 4...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/10/09/1579666.html</id><title type="text">十分钟内学会：控制浏览器是否缓存网页状态</title><summary type="text">Question在Firefox等浏览器中，如果你打开一个页面并进行若干操作，例如在文本框进行输入，甚至点击按钮进行Ajax操作更新页面局部，这些操作的结果都会被缓存下来。在你点击链接离开这个页面后，如果你通过后退按钮回到这个页面，你会发现它仍出于你离开时的状态，而非页面刚刚加载好后的初始状态。在一些情况下，这样的缓存方式是符合我们预期的；但在另外一些情况下，我们更希望页面恢复到初始状态，或者说让...</summary><published>2009-10-09T06:59:00Z</published><updated>2009-10-09T06:59:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/10/09/1579666.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/10/09/1579666.html"/><content type="text">Question在Firefox等浏览器中，如果你打开一个页面并进行若干操作，例如在文本框进行输入，甚至点击按钮进行Ajax操作更新页面局部，这些操作的结果都会被缓存下来。在你点击链接离开这个页面后，如果你通过后退按钮回到这个页面，你会发现它仍出于你离开时的状态，而非页面刚刚加载好后的初始状态。在一些情况下，这样的缓存方式是符合我们预期的；但在另外一些情况下，我们更希望页面恢复到初始状态，或者说让...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/08/17/1547361.html</id><title type="text">jQuery is DSL (Part 2 - jQuery)</title><summary type="text">jQuery的Internal DSL形式在上一篇文章里面，我们了解到了Internal DSL的具体形式，形如：/* Method Chaining */computer() .processor() .cores(2) .i386() .disk() .size(150) .disk() .size(75) .speed(7200) .sata() .end();然后我们在看看一段...</summary><published>2009-08-16T16:01:00Z</published><updated>2009-08-16T16:01:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/08/17/1547361.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/08/17/1547361.html"/><content type="text">jQuery的Internal DSL形式在上一篇文章里面，我们了解到了Internal DSL的具体形式，形如：/* Method Chaining */computer() .processor() .cores(2) .i386() .disk() .size(150) .disk() .size(75) .speed(7200) .sata() .end();然后我们在看看一段...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/08/10/1543266.html</id><title type="text">jQuery is DSL (Part 1 - DSL)</title><summary type="text">jQuery刚刚出来的时候，我没有太多关注它，觉得这不过是Yet Another JavaScript Library。早期的jQuery专注于DOM节点的筛选与操作，不提供众多的基础类扩展，更不提供UI组件，因此体积能够做到很小。然而，我实在看不出它和我熟悉的Prototype比有什么明显的优势——jQuery能做的各项独立的操作，Prototype都能做。后来用jQue...</summary><published>2009-08-10T15:47:00Z</published><updated>2009-08-10T15:47:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/08/10/1543266.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/08/10/1543266.html"/><content type="text">jQuery刚刚出来的时候，我没有太多关注它，觉得这不过是Yet Another JavaScript Library。早期的jQuery专注于DOM节点的筛选与操作，不提供众多的基础类扩展，更不提供UI组件，因此体积能够做到很小。然而，我实在看不出它和我熟悉的Prototype比有什么明显的优势——jQuery能做的各项独立的操作，Prototype都能做。后来用jQue...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/07/02/1515566.html</id><title type="text">让 JavaScript 轻松支持函数重载 (Part 2 - 实现)</title><summary type="text">在上一篇文章里，我们设计了一套能在JavaScript中描述函数重载的方法，这套方法依赖于一个叫做Overload的静态类，现在我们就来看看如何实现这个静态类。识别文本签名我们先来回顾一下上一篇文章中提到的Overload用例： var extend = Overload .add("*, ...", function(target) { }) .add("Boolean, *, ...", ...</summary><published>2009-07-02T07:51:00Z</published><updated>2009-07-02T07:51:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/07/02/1515566.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/07/02/1515566.html"/><content type="text">在上一篇文章里，我们设计了一套能在JavaScript中描述函数重载的方法，这套方法依赖于一个叫做Overload的静态类，现在我们就来看看如何实现这个静态类。识别文本签名我们先来回顾一下上一篇文章中提到的Overload用例： var extend = Overload .add("*, ...", function(target) { }) .add("Boolean, *, ...", ...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/07/02/1515188.html</id><title type="text">让 JavaScript 轻松支持函数重载 (Part 1 - 设计)</title><summary type="text">JavaScript支持重载吗？JavaScript支持函数重载吗？可以说不支持，也可以说支持。说不支持，是因为JavaScript不能好像其它原生支持函数重载的语言一样，直接写多个同名函数，让编译器来判断某个调用对应的是哪一个重载。说支持，是因为JavaScript函数对参数列表不作任何限制，可以在函数内部模拟对函数重载的支持。实际上，在很多著名的开源库当中，我们都可以看到函数内部模拟重载支持的...</summary><published>2009-07-02T01:18:00Z</published><updated>2009-07-02T01:18:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/07/02/1515188.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/07/02/1515188.html"/><content type="text">JavaScript支持重载吗？JavaScript支持函数重载吗？可以说不支持，也可以说支持。说不支持，是因为JavaScript不能好像其它原生支持函数重载的语言一样，直接写多个同名函数，让编译器来判断某个调用对应的是哪一个重载。说支持，是因为JavaScript函数对参数列表不作任何限制，可以在函数内部模拟对函数重载的支持。实际上，在很多著名的开源库当中，我们都可以看到函数内部模拟重载支持的...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/07/01/1514983.html</id><title type="text">写个 JavaScript 异步调用框架 (Part 6 - 实例 &amp;amp; 模式)</title><summary type="text">我们用了5篇文章来讨论如何编写一个JavaScript异步调用框架（问题 &amp; 场景、用例设计、代码实现、链式调用、链式实现），现在是时候让我们看一下在各种常见开发情景中如何使用它了。封装Ajax设计Async.Operation的最初目的就是解决Ajax调用需要传递callback参数的问题，为此我们先把Ajax请求封装为Async.Operation。我在这里使用的是jQuery，当然无...</summary><published>2009-07-01T13:59:00Z</published><updated>2009-07-01T13:59:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/07/01/1514983.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/07/01/1514983.html"/><content type="text">我们用了5篇文章来讨论如何编写一个JavaScript异步调用框架（问题 &amp; 场景、用例设计、代码实现、链式调用、链式实现），现在是时候让我们看一下在各种常见开发情景中如何使用它了。封装Ajax设计Async.Operation的最初目的就是解决Ajax调用需要传递callback参数的问题，为此我们先把Ajax请求封装为Async.Operation。我在这里使用的是jQuery，当然无...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/06/30/1514339.html</id><title type="text">写个 JavaScript 异步调用框架 (Part 5 - 链式实现)</title><summary type="text">在上一篇文章里面，我们为异步调用框架设计了一种链式调用方式，来增强异步调用队列的代码可读性，现在我们就来编写实现这部分功能的代码。调用入口链式调用存在Async.go方法和Async.chain方法两个入口，这两个入口本质上是一致的，只是Async.chain方法在调用时先不提供初始参数，而Async.go方法在调用时提供了初始参数并启动异步调用链。Async.chain = function()...</summary><published>2009-06-30T15:36:00Z</published><updated>2009-06-30T15:36:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/06/30/1514339.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/06/30/1514339.html"/><content type="text">在上一篇文章里面，我们为异步调用框架设计了一种链式调用方式，来增强异步调用队列的代码可读性，现在我们就来编写实现这部分功能的代码。调用入口链式调用存在Async.go方法和Async.chain方法两个入口，这两个入口本质上是一致的，只是Async.chain方法在调用时先不提供初始参数，而Async.go方法在调用时提供了初始参数并启动异步调用链。Async.chain = function()...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/05/09/1452875.html</id><title type="text">写个 JavaScript 异步调用框架 (Part 4 - 链式调用)</title><summary type="text">我们已经实现了一个简单的异步调用框架，然而还有一些美中不足，那就是顺序执行的异步函数需要用嵌套的方式来声明。现实开发中，要按顺序执行一系列的同步异步操作又是很常见的。还是用百度Hi网页版中的例子，我们先要异步获取联系人列表，然后再异步获取每一个联系人的具体信息，而且后者是分页获取的，每次请求发送10个联系人的名称然后取回对应的具体信息。这就是多个需要顺序执行的异步请求。为此，我们需要设计一种新的操...</summary><published>2009-05-09T15:46:00Z</published><updated>2009-05-09T15:46:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/05/09/1452875.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/05/09/1452875.html"/><content type="text">我们已经实现了一个简单的异步调用框架，然而还有一些美中不足，那就是顺序执行的异步函数需要用嵌套的方式来声明。现实开发中，要按顺序执行一系列的同步异步操作又是很常见的。还是用百度Hi网页版中的例子，我们先要异步获取联系人列表，然后再异步获取每一个联系人的具体信息，而且后者是分页获取的，每次请求发送10个联系人的名称然后取回对应的具体信息。这就是多个需要顺序执行的异步请求。为此，我们需要设计一种新的操...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/05/07/1451937.html</id><title type="text">写个 JavaScript 异步调用框架 (Part 3 - 代码实现)</title><summary type="text">在上一篇文章里，我们说到了要实现一个Async.Operation类，通过addCallback方法传递回调函数，并且通过yield方法返回回调结果。现在我们就来实现这个类吧。类结构首先我们来搭一个架子，把需要用到的似有变量都列出来。我们需要一个数组，来保存回调函数列表；需要一个标志位，来表示异步操作是否已完成；还可以学IAsyncResult，加一个state，允许异步操作的实现者对外暴露自定义...</summary><published>2009-05-07T06:54:00Z</published><updated>2009-05-07T06:54:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/05/07/1451937.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/05/07/1451937.html"/><content type="text">在上一篇文章里，我们说到了要实现一个Async.Operation类，通过addCallback方法传递回调函数，并且通过yield方法返回回调结果。现在我们就来实现这个类吧。类结构首先我们来搭一个架子，把需要用到的似有变量都列出来。我们需要一个数组，来保存回调函数列表；需要一个标志位，来表示异步操作是否已完成；还可以学IAsyncResult，加一个state，允许异步操作的实现者对外暴露自定义...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/05/07/1451200.html</id><title type="text">写个 JavaScript 异步调用框架 (Part 2 - 用例设计)</title><summary type="text">在上一篇文章里说到，我们要设计一个异步调用框架，最好能够统一同步异步调用的接口，同时具体调用顺序与实现方式无关。那么我们现在就来设计这样一个框架的用例。传递回调我们首先要考虑的一个问题是，如何传递回调入口。在最传统的XHR调用当中，回调函数会被作为最后一个参数传递给异步函数：function asyncOperation(argument, callback)在参数相当多的时候，我们可以把参数放到...</summary><published>2009-05-06T17:12:00Z</published><updated>2009-05-06T17:12:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/05/07/1451200.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/05/07/1451200.html"/><content type="text">在上一篇文章里说到，我们要设计一个异步调用框架，最好能够统一同步异步调用的接口，同时具体调用顺序与实现方式无关。那么我们现在就来设计这样一个框架的用例。传递回调我们首先要考虑的一个问题是，如何传递回调入口。在最传统的XHR调用当中，回调函数会被作为最后一个参数传递给异步函数：function asyncOperation(argument, callback)在参数相当多的时候，我们可以把参数放到...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/05/06/1450332.html</id><title type="text">写个 JavaScript 异步调用框架 (Part 1 - 问题 &amp; 场景)</title><summary type="text">问题在Ajax应用中，调用XMLHttpRequest是很常见的情况。特别是以客户端为中心的Ajax应用，各种需要从服务器端获取数据的操作都通过XHR异步调用完成。然而在单线程的JavaScript编程中，XHR异步调用的代码风格实在是与一般的JavaScript代码格格不入。额外参数考虑一个除法函数，如果它是纯客户端的同步函数，那么签名会是这样的：function divide(operand1...</summary><published>2009-05-05T16:18:00Z</published><updated>2009-05-05T16:18:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/05/06/1450332.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/05/06/1450332.html"/><content type="text">问题在Ajax应用中，调用XMLHttpRequest是很常见的情况。特别是以客户端为中心的Ajax应用，各种需要从服务器端获取数据的操作都通过XHR异步调用完成。然而在单线程的JavaScript编程中，XHR异步调用的代码风格实在是与一般的JavaScript代码格格不入。额外参数考虑一个除法函数，如果它是纯客户端的同步函数，那么签名会是这样的：function divide(operand1...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/03/14/1411312.html</id><title type="text">ASP.NET AJAX 4.0 Preview 3 (Part 2 - ASP.NET AJAX Template)</title><summary type="text">在上一篇文章里，我们说到了如何使用ADO.NET Data Service Client Library能够轻松访问到存在服务器端的数据，然而将数据展现出来仍需要人手拼接HTML这点就实在是让人难以接受，所以我们现在就来看看如何利用ASP.NET AJAX Template解决这个问题。文章中所用到的示例代码，可以在这里下载：ASP.NET AJAX 4.0 Preview 3 Demo，然后参考...</summary><published>2009-03-14T02:43:00Z</published><updated>2009-03-14T02:43:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/03/14/1411312.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/03/14/1411312.html"/><content type="text">在上一篇文章里，我们说到了如何使用ADO.NET Data Service Client Library能够轻松访问到存在服务器端的数据，然而将数据展现出来仍需要人手拼接HTML这点就实在是让人难以接受，所以我们现在就来看看如何利用ASP.NET AJAX Template解决这个问题。文章中所用到的示例代码，可以在这里下载：ASP.NET AJAX 4.0 Preview 3 Demo，然后参考...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2009/03/11/1408290.html</id><title type="text">ASP.NET AJAX 4.0 Preview 3 (Part 1 - ADO.NET Data Service Client Library)</title><summary type="text">自从Microsoft与jQuery合作以来，ASP.NET AJAX与jQuery就被定位为两个互补的AJAX库。既然jQuery已经实现了如此多轻量级的AJAX特性，自然ASP.NET AJAX会继续专注于富客户端所需的一些重量级特性。 在ASP.NET AJAX 4.0 Preview 3里面，开发人员能够接触到的两个重要的新特性就是ADO.NET Data Service Client L...</summary><published>2009-03-10T16:18:00Z</published><updated>2009-03-10T16:18:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2009/03/11/1408290.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2009/03/11/1408290.html"/><content type="text">自从Microsoft与jQuery合作以来，ASP.NET AJAX与jQuery就被定位为两个互补的AJAX库。既然jQuery已经实现了如此多轻量级的AJAX特性，自然ASP.NET AJAX会继续专注于富客户端所需的一些重量级特性。 在ASP.NET AJAX 4.0 Preview 3里面，开发人员能够接触到的两个重要的新特性就是ADO.NET Data Service Client L...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2008/10/30/1322620.html</id><title type="text">以服务器端为中心的 ASP.NET AJAX 模式 (Part 2 - Control)</title><summary type="text">在上一篇文章当中，也就是《以服务器端为中心的 ASP.NET AJAX 模式 (Part 1 - Behavior)》，我们探讨了较为易用的Behavior模式。之所以说它较为易用，是因为它不涉及和原有Page处理流程的交互，即使访问网络也是访问独立的Web Service（包括Page上的[WebMethod]），因此和Page处理流程的设计绝对是正交的。但有时候我们需要的就是与Page处理流程...</summary><published>2008-10-29T16:50:00Z</published><updated>2008-10-29T16:50:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2008/10/30/1322620.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2008/10/30/1322620.html"/><content type="text">在上一篇文章当中，也就是《以服务器端为中心的 ASP.NET AJAX 模式 (Part 1 - Behavior)》，我们探讨了较为易用的Behavior模式。之所以说它较为易用，是因为它不涉及和原有Page处理流程的交互，即使访问网络也是访问独立的Web Service（包括Page上的[WebMethod]），因此和Page处理流程的设计绝对是正交的。但有时候我们需要的就是与Page处理流程...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2008/10/26/1319932.html</id><title type="text">以服务器端为中心的 ASP.NET AJAX 模式 (Part 1 - Behavior)</title><summary type="text">早在ASP.NET AJAX从CTP转向Beta再转向RTM时，看着客户端的Control被逐步放弃，与此同时ASP.NET AJAX Control Toolkit越来越多地使用Behavior，我就想深入说说ASP.NET AJAX的模式。不过由于我比较懒，所以这个话题只在《理想的 ASP.NET AJAX (Part 2 - Server Centric)》中一笔带过，没有深入讨论。今天看到...</summary><published>2008-10-26T12:33:00Z</published><updated>2008-10-26T12:33:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2008/10/26/1319932.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2008/10/26/1319932.html"/><content type="text">早在ASP.NET AJAX从CTP转向Beta再转向RTM时，看着客户端的Control被逐步放弃，与此同时ASP.NET AJAX Control Toolkit越来越多地使用Behavior，我就想深入说说ASP.NET AJAX的模式。不过由于我比较懒，所以这个话题只在《理想的 ASP.NET AJAX (Part 2 - Server Centric)》中一笔带过，没有深入讨论。今天看到...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2008/09/02/1282415.html</id><title type="text">如何动态加载 JavaScript 与 CSS</title><summary type="text">Omar AL Zabir这位MVP总是喜欢搞些稀奇古怪同时又很实用的小东西，并且还十分值得参考。最近他就做了一个叫做ensure的小工具用于动态加载JavaScript、CSS与HTML，而且IE、Firefox、Opera、Safari都支持了，那么我们就来看看ensure是如何做到动态加载JavaScript与CSS的。在介绍ensure内部的实现之前，让我们先来看看其功能：ensure({...</summary><published>2008-09-02T15:01:00Z</published><updated>2008-09-02T15:01:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2008/09/02/1282415.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2008/09/02/1282415.html"/><content type="text">Omar AL Zabir这位MVP总是喜欢搞些稀奇古怪同时又很实用的小东西，并且还十分值得参考。最近他就做了一个叫做ensure的小工具用于动态加载JavaScript、CSS与HTML，而且IE、Firefox、Opera、Safari都支持了，那么我们就来看看ensure是如何做到动态加载JavaScript与CSS的。在介绍ensure内部的实现之前，让我们先来看看其功能：ensure({...</content></entry><entry><id>http://www.cnblogs.com/cathsfz/archive/2008/03/08/1096654.html</id><title type="text">使用 .NET 实现 Ajax 长连接 (Part 2 - Mutex Wait &amp;amp; Signal)</title><summary type="text">在上一次的文章中，我们说到了如何设计一个ASP.NET Web Service来处理长连接请求。很多人对此就提出了问题，如何hold住请求让它30秒不断开了？这其实很简单，只需要Sleep()一下就可以了：Thread.Sleep(30 * 1000);然而问题是，我们不是要等30秒然后看看是否有事件需要返回，而是在这30秒内随时有事件随时返回。因此，我们需要一套机制来在等待的过程中检查是否有事件...</summary><published>2008-03-08T09:21:00Z</published><updated>2008-03-08T09:21:00Z</updated><author><name>Cat Chen</name><uri>http://www.cnblogs.com/cathsfz/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cathsfz/archive/2008/03/08/1096654.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cathsfz/archive/2008/03/08/1096654.html"/><content type="text">在上一次的文章中，我们说到了如何设计一个ASP.NET Web Service来处理长连接请求。很多人对此就提出了问题，如何hold住请求让它30秒不断开了？这其实很简单，只需要Sleep()一下就可以了：Thread.Sleep(30 * 1000);然而问题是，我们不是要等30秒然后看看是否有事件需要返回，而是在这30秒内随时有事件随时返回。因此，我们需要一套机制来在等待的过程中检查是否有事件...</content></entry></feed>
