随笔-312  评论-12034  文章-2  trackbacks-256
ASP.NET AJAX (Atlas)
Visual Studio 2008中ASP.NET AJAX的新应用程序服务:Role Application Service      摘要: ASP.NET AJAX在目前版本中已经内建了两种Application Service:用户身份认证(Authentication Service)和用户个性化(Profile)。在最新的Visual Studio 2008 (Orcas)中,ASP.NET AJAX又添加了一个新的Application Service:Roles。

《ASP.NET AJAX in Action》的作者David Barkol在blog上给出了一小段介绍。在ASP.NET AJAX JavaScript Class Browser中,我们可以看到最新的RoleService组件。  阅读全文
posted @ 2007-08-02 11:48 Dflying Chen 阅读(10108) | 评论 (25)  编辑
在ASP.NET AJAX中使用应用程序服务和本地化(0):目录      摘要: ASP.NET 2.0新引入了一个非常重要的特性——应用程序服务(Application Service),用来帮助开发者完成一些开发时常见的任务。ASP.NET 2.0中常用的应用程序服务包括用户身份认证(Authentication Service)和用户个性化(Profile)两种,前者用来为网站的访客提供身份验证功能,包用户登录/注销/创建/管理等,后者用来保存针对网站某特定访客的个性化信息,例如时区设置、个人信息(姓名、Email地址、联系方式等)、网站配色、布局偏好等。ASP.NET AJAX考虑到了这个需求,通过一系列框架自动生成的客户端代理,开发者可以直接在客户端JavaScript代码中使用ASP.NET 2.0应用程序服务所带来的便利,而无须进行传统ASP.NET那样的整页回送。

本地化支持则用来让不同文化背景、语言习惯的用户可以方便地切换至他所熟悉的语言界面。在当前全球一体化的趋势中,为Web站点提供多语言支持正变得越来越流行。在Ajax应用程序的开发过程中,ASP.NET AJAX框架也为我们提供了强大的本地化功能支持。   阅读全文
posted @ 2007-07-17 18:38 Dflying Chen 阅读(7587) | 评论 (39)  编辑
在ASP.NET AJAX中使用应用程序服务和本地化(6):创建支持多语言的ASP.NET AJAX站点、小结      摘要: ASP.NET为Web应用程序为本地化/全球化功能提供了强大的支持,开发者只要创建不同的资源文件,ASP.NET即可根据用户的区域设定选择合适的资源文件,生成本地化页面后发送给浏览者。ASP.NET AJAX也考虑了这个问题,并对客户端JavaScript文件的本地化和全球化支持有着可圈可点的表现。即使对于Ajax这种完全不同的Web应用程序开发模型,开发者也能够容易地创建出支持多语言的Web站点。

通过在不同JavaScript文件中给出应用程序所需要的本地化资源,ASP.NET AJAX的ScriptManager控件即可根据用户区域设定选择恰当的脚本文件并发送给客户端。而对于需要以.NET程序集方式重新发布的 ASP.NET AJAX组件,ASP.NET AJAX也允许我们将本地化资源脚本嵌入到组件所在的程序集中,并随之一同发布。作为组件的使用者,我们根本无需手工维护众多的本地化脚本文件,就像使用普通的.NET控件一样简单。   阅读全文
posted @ 2007-07-15 09:34 Dflying Chen 阅读(7238) | 评论 (22)  编辑
在ASP.NET AJAX中使用应用程序服务和本地化(5):自定义应用程序服务的服务器端实现      摘要: 身份认证与用户个性化等应用程序服务在实际项目中的使用、实现方式具有非常强的可变性,因此,ASP.NET 2.0以自定义Provider的形式为其提供了非常强大的可定制能力。

在ASP.NET AJAX中,应用程序服务往往也会有同样的自定义需求。因此,ASP.NET AJAX在提供一套默认的与服务器端应用程序服务异步通讯的代理的同时,也为其提供了充分的可定制能力,允许我们根据实际需要改变服务器端应用程序服务的实现方式。

本节就将依次介绍在ASP.NET AJAX中自定义身份认证与用户个性化应用程服务的方法。   阅读全文
posted @ 2007-07-14 00:07 Dflying Chen 阅读(5514) | 评论 (11)  编辑
在ASP.NET AJAX中使用应用程序服务和本地化(4):示例程序:读取、修改并保存用户个性化信息      摘要: 让我们通过编写一个完整的示例程序学习如何配置并使用ASP.NET AJAX的ProfileService对象来实现读取、修改并保存用户个性化信息的功能。在这个示例程序中,我们将借助本章第2节中实现的用户身份认证功能,并基于该实现为已登录用户提供读取、修改并保存用户个性化信息的功能。  阅读全文
posted @ 2007-07-14 00:06 Dflying Chen 阅读(6498) | 评论 (13)  编辑
在ASP.NET AJAX中使用应用程序服务和本地化(3):用户个性化组件ProfileService      摘要: 在内建了身份认证应用程序服务之后,ASP.NET 2.0已经提供了对用户管理的初步支持。然而,用户信息却不仅仅只是用户名和密码这两项,对于一般网站来讲,我们都需要提供一些与用户帐号相关联的自定义属性。例如在BBS程序中,这类自定义属性就有用户的积分、等级、签名档、头像等,这些自定义属性都与用户帐号一一对应。为此,ASP.NET 2.0特意内建了用户个性化应用程序服务,同样以统一的方式提供给开发者。ASP.NET 2.0内建的用户个性化应用程序服务的配置、使用非常简单,也提供了足够灵活的扩展能力。

ASP.NET AJAX框架的用户个性化服务能够与ASP.NET 2.0的用户个性化应用程序服务集成起来,并为其提供客户端的JavaScript调用代理。ASP.NET AJAX客户端部分用户个性化代理的相关功能统一由客户端ProfileService对象提供。   阅读全文
posted @ 2007-07-13 00:05 Dflying Chen 阅读(6118) | 评论 (27)  编辑
在ASP.NET AJAX中使用应用程序服务和本地化(2):示例程序:实现用户登录和注销      摘要: 让我们通过编写一个完整的示例程序学习如何配置并使用ASP.NET AJAX的AuthenticationService对象来实现用户登录和注销。
5.2.1 启用身份认证应用程序服务
5.2.2 配置Membership数据库并创建用户
5.2.3 创建受保护的目录
5.2.4 示例程序的UI部分
5.2.5 示例程序的JavaScript代码部分
5.2.6 运行示例程序  阅读全文
posted @ 2007-07-12 08:12 Dflying Chen 阅读(7912) | 评论 (43)  编辑
在ASP.NET AJAX中使用应用程序服务和本地化(1):身份认证组件AuthenticationService      摘要: 实现用户管理是几乎每一个网站都要考虑的问题,ASP.NET 2.0为此特意内建了身份认证应用程序服务,并以统一的方式提供给开发者。身份认证应用程序服务不但使用起来非常简单,也在同时提供了足够灵活的扩展能力。

ASP.NET AJAX框架的身份认证服务能够与ASP.NET 2.0的身份认证应用程序服务集成起来,并为其提供客户端的JavaScript调用代理。ASP.NET AJAX客户端部分身份认证代理的相关功能统一由客户端AuthenticationService对象提供。   阅读全文
posted @ 2007-07-11 00:00 Dflying Chen 阅读(7336) | 评论 (24)  编辑
使用ASP.NET AJAX异步调用Web Service和页面中的类方法(10):服务器端和客户端数据类型的自动转换:以XML方式序列化数据、小结      摘要: 3.8 以XML方式序列化数据
第2章中曾经提到过,ASP.NET AJAX异步通讯层在传递数据时默认采用JSON序列化方式,但同时也提供给我们以XML方式进行序列化的选项。 一般来讲,如果某Web Service方法的返回值类型为XmlDocument或XmlElement的话,我们应该让这类返回值以XML方式进行序列化。

3.9 小结
ASP.NET AJAX异步通信层为我们在客户端JavaScript中调用服务器端Web Service或ASP.NET页面中的类方法提供了极为便利的基础设施,不但无需掌握任何具体的Ajax实现原理,甚至允许我们在JavaScript中直接用熟悉的、类似C#语言的语法来完成一次与服务器的异步通信……  阅读全文
posted @ 2007-06-21 08:39 Dflying Chen 阅读(5781) | 评论 (39)  编辑
使用ASP.NET AJAX异步调用Web Service和页面中的类方法(9):服务器端和客户端数据类型的自动转换:DataTable和DataSet      摘要: 3.7.6 DataTable和DataSet

DataTable和DataSet是ADO.NET中的重要概念,这两个对象均非常复杂,其中包含了大量的复杂类型和循环引用。为了能够在ASP.NET AJAX异步通讯层中传递这两种类型的数据,微软公司在ASP.NET AJAX Futures CTP版本中给出了自定义的DataTable和DataSet转换方案——即借助于ASP.NET AJAX强大的可扩展性,通过自定义JavaScriptConverter实现DataTable和DataSet类型的客户端/服务器端自动转换。   阅读全文
posted @ 2007-06-15 00:09 Dflying Chen 阅读(6197) | 评论 (33)  编辑
使用ASP.NET AJAX异步调用Web Service和页面中的类方法(8):服务器端和客户端数据类型的自动转换:数组类型      摘要: 3.7.5 数组类型

ASP.NET AJAX异步通讯层能够为数组类型自动生成相应的客户端JavaScript数组,如果数组中的项目为简单类型,那么无需任何额外操作。如果数组中包含的项目为复杂类型,那么我们仍旧需要为Web Service类添加[GenerateScriptType(typeof([TypeName]))]属性,其中[TypeName]表示该复杂类型的名称。  阅读全文
posted @ 2007-06-14 00:00 Dflying Chen 阅读(4219) | 评论 (21)  编辑
使用ASP.NET AJAX异步调用Web Service和页面中的类方法(7):服务器端和客户端数据类型的自动转换:泛型集合类型      摘要: 3.7.4 泛型集合类型

.NET Framework 2.0中新引入的泛型集合类型不但能够大大提高程序的执行效率,也能让IDE在编译前就能了解更多的类型信息,进而在我们的开发过程中提供更完善的辅助信息。因此,作为“传统”集合的替代品,泛型集合类型正被越来越广泛地使用于各种.NET应用程序中。

ASP.NET AJAX异步通讯层也能够为常用的泛型集合类型自动生成相应的客户端JavaScript类型,让我们可以方便地在客户端和服务器端传递集合类型的数据。   阅读全文
posted @ 2007-06-13 00:03 Dflying Chen 阅读(4075) | 评论 (27)  编辑
使用ASP.NET AJAX异步调用Web Service和页面中的类方法(6):服务器端和客户端数据类型的自动转换:复杂类型      摘要: 3.7.3 复杂类型

若想传递某些复杂的数据类型,比如某个自定义类型或结构,那么我们要显式告知ASP.NET AJAX异步通讯层为该服务器端类型生成相应的客户端JavaScript类型。   阅读全文
posted @ 2007-06-12 09:52 Dflying Chen 阅读(4162) | 评论 (25)  编辑
使用ASP.NET AJAX异步调用Web Service和页面中的类方法(5):服务器端和客户端数据类型的自动转换:基本类型和枚举类型      摘要: ASP.NET AJAX异步通讯层提供了强大的服务器端.NET类型和客户端JavaScript类型之间自动转换能力,我们只要略加配置,甚至根本不需要任何配置,即可在异步通讯的过程中传递包括基本类型、枚举类型、复杂类型、集合(包括泛型集合)类型、数组类型等数据。

3.7.1 基本类型
在本节中,基本类型是指数字类型(包括整型、浮点型等)、字符串类型、布尔类型、时间日期类型等。对于这些类型,ASP.NET AJAX异步通讯层能够自动进行服务器端.NET类型和客户端JavaScript类型之间的转换,无须我们任何干预。

3.7.2 枚举类型
对于枚举类型,若是某个Web Service代理中有所使用(或者Web Service方法接受枚举类型,或者Web Service方法返回枚举类型)的话,ASP.NET AJAX异步通讯层也将自动为该枚举类型生成客户端JavaScript版本,并负责客户端与服务器端类型之间的转换,同样无须我们任何干预。  阅读全文
posted @ 2007-06-11 07:54 Dflying Chen 阅读(4267) | 评论 (31)  编辑
使用ASP.NET AJAX异步调用Web Service和页面中的类方法(4):异步通讯层生成的客户端代理类、使用HTTP GET进行调用      摘要:
3.5 异步通讯层生成的客户端代理类
在前面几节中,我们已经看到了ASP.NET AJAX异步通讯层为Web Service生成的客户端异步调用代理的基本使用方法。这里有必要再详细介绍一下该客户端代理的功能,并做以总结。

3.6 使用HTTP GET进行调用
在使用ASP.NET AJAX异步通讯层对Web Service进行异步调用时,默认应用的是HTTP POST方式。但为了提供足够的灵活性,ASP.NET AJAX异步通讯层同样允许我们使用HTTP GET进行调用。   阅读全文
posted @ 2007-06-08 07:44 Dflying Chen 阅读(5219) | 评论 (13)  编辑
使用ASP.NET AJAX异步调用Web Service和页面中的类方法(3):保持用户上下文      摘要: “异步”执行意味着原本从头到尾执行的函数被拦腰截断,分成了两个不同的函数。而这两个函数之间的联系往往又非常紧密,例如有些时候我们需要在后一个函数(即回调函数)中访问前一个函数中计算出来的变量,或是在后一个函数中得到前一个函数执行时的上下文等信息。特别地,若是几个不同的异步函数均提供了同一个回调函数进行处理,我们一般还要在回调函数中知道是哪个函数引发的这次回调。为了满足这些需求,程序自然产生了用户上下文的概念。

ASP.NET AJAX异步通讯层所提供的异步调用模型中同样提供了对传递用户上下文信息的支持。  阅读全文
posted @ 2007-06-07 00:41 Dflying Chen 阅读(4851) | 评论 (37)  编辑
使用ASP.NET AJAX异步调用Web Service和页面中的类方法(2):处理异步调用中的异常      摘要: 在传统的Web应用程序中,处理异常相对来说比较简单——即使开发者不作任何处理,浏览器也会默认地将收到的异常信息显示在浏览器中。而对于Ajax应用程序来说,事情却并不那么简单。Ajax程序“异步”的天性加上其后台运行的行为,让用户乃至开发者都很难判断某次对服务器的调用是否顺利完成,浏览器自然也对Ajax程序运行时发生的异常无能为力。

在前面两节中,借助于ASP.NET AJAX异步通讯层的帮助,我们已经能够容易地从客户端向服务器端发起异步HTTP请求——在理想情况下,这自然不会有什么问题,也足够使用。然而,Web程序在运行中会有很多不确定性,从网络状况的不稳定到开发者的粗心大意,任何一个难以预料的问题均会导致某次异步调用以失败告终。

因此,在ASP.NET AJAX异步通讯层的实现中,自然也内建了对异步调用时异常的处理方法……  阅读全文
posted @ 2007-06-06 00:34 Dflying Chen 阅读(4922) | 评论 (27)  编辑
使用ASP.NET AJAX异步调用Web Service和页面中的类方法(1):调用Web Service、调用页面中的类方法      摘要: 3.1 调用Web Service
之所以ASP.NET AJAX将Web Service提高到了如此的重要位置上,让它几乎成为了ASP.NET AJAX服务器端逻辑最受推荐的实现方式,是因为Web Service天生就是纯粹为了业务逻辑而设计的。我们都知道,Web Service没有提供什么“花哨”的用户界面,而是心无旁骛地专注于程序逻辑上的实现,这恰好和ASP.NET AJAX客户端编程模型所倡导的“将表现层和业务逻辑层彻底分开”的理念不谋而合——客户端的ASP.NET AJAX框架用来处理程序所有的界面、与用户交互功能,服务器端则仅仅提供纯粹的数据,不涉及任何表现样式。

3.2 调用页面中的类方法
让客户端JavaScript直接能够异步调用到服务器端的Web Service,这看起来真的是个不错的主意——理想化的分层Ajax应用程序就应该这样嘛!不过作为被ASP.NET服务器端开发模型“宠坏”了的我们,更加熟悉的方法是直接将方法写在ASP.NET页面中。  阅读全文
posted @ 2007-06-05 08:51 Dflying Chen 阅读(9868) | 评论 (71)  编辑
使用ASP.NET AJAX异步调用Web Service和页面中的类方法(0):目录      摘要: 准备把《ASP.NET AJAX程序设计 第II卷:客户端Microsoft AJAX Library相关》的第三章《异步调用Web Service和页面中的类方法》公布出来,希望对朋友们有所帮助。
3.1 调用Web Service
3.2 调用页面中的类方法
3.3 处理异步调用中的异常
3.4 保持用户上下文
3.5 异步通讯层生成的客户端代理类
3.6 使用HTTP GET进行调用
3.7 服务器端和客户端数据类型的自动转换
3.7.1 基本类型
3.7.2 枚举类型
3.7.3 复杂类型
3.7.4 泛型集合类型
3.7.5 数组类型
3.7.6 DataTable和DataSet
3.8 以XML方式序列化数据
3.9 小结  阅读全文
posted @ 2007-06-05 08:36 Dflying Chen 阅读(5910) | 评论 (28)  编辑
自定义ASP.NET AJAX拖放功能示例程序:实现IDragSource和IDropTarget接口将商品拖放至购物车中      摘要: 让我们通过一个简单但却足够完善的示例程序来说明ASP.NET AJAX客户端拖放框架中的DragDropManager对象以及IDragSource和IDropTarget两个重要接口的使用方法。

1.示例程序功能
2.编写服务器端Web Service
3.编写DraggableProductBehavior实现可拖动的商品
4.编写ShoppingCartBehavior实现可接受商品投放的购物车
5.编写页面代码
6.通过Web Service取得商品并显示在页面中
将购物车中的商品提交回Web Service处理  阅读全文
posted @ 2007-05-29 10:31 Dflying Chen 阅读(8119) | 评论 (48)  编辑
在PHP中使用ASP.NET AJAX      摘要: 借助于CodePlex上开源项目PHP for Microsoft AJAX Library的帮助,我们已经可以在PHP上使用ASP.NET AJAX的很多核心功能了。本文分如下几个部分:
1.下载安装
2.编写Service文件
3.编写调用页面
4.示例程序界面
5.示例程序代码下载  阅读全文
posted @ 2007-04-19 00:49 Dflying Chen 阅读(4842) | 评论 (22)  编辑
使用ASP.NET AJAX Control Toolkit中的ReorderList控件实现用鼠标拖动改变条目顺序      摘要: ASP.NET AJAX Control Toolkit中的ReorderList控件将在页面中呈现出一个由数据绑定自动生成的条目列表。用户可以通过鼠标拖动某一项来直接改变该列表中条目彼此之间的相对位置关系,且在拖动的过程中,ReorderList控件提供了丰富的、可定制的视觉效果。当用户在某个位置放开鼠标之后,ReorderList控件也将同样会自动通知与其绑定的数据源控件,以Ajax的异步或整页回送的同步方式更新服务器端数据……  阅读全文
posted @ 2007-03-28 23:29 Dflying Chen 阅读(9413) | 评论 (45)  编辑
ASP.NET AJAX (Atlas) 拖放(Drag & Drop)功能6种实现方法总结      摘要: 在Ajax程序中实现传统桌面程序中异常简单的拖放功能却并不是件容易的事情。然而Web上的拖放功能又如此的让人痴迷,所以几乎每个成熟的Ajax类库都提供了自己的一套实现拖放的封装,ASP.NET AJAX (Atlas) 自然也不例外。本文将总结并简要分析ASP.NET AJAX (Atlas) 中拖放功能的6种不同的实现方法,希望能够帮助朋友们选出最适合实际需求的方法。

不过纵观这些解决方案,我很遗憾的发现,要么是使用简单,可定制能力差,要么就是可定制能力强,但使用起来要写很多代码。希望ASP.NET AJAX (Atlas) 团队能够再接再厉,努力把这个重要功能做得更好。或者我有哪种方法漏掉了,也请朋友们帮忙补充一下。  阅读全文
posted @ 2007-03-26 08:15 Dflying Chen 阅读(7360) | 评论 (50)  编辑
使用Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传      摘要: Anthem.NET刚刚发布了其最新的1.5版本,其中很不错的一个新功能就是对文件上传功能的Ajax实现。本文将简要介绍一下该功能的使用方法,包括如下内容:

1.Anthem.NET的下载与安装
2.普通的ASP.NET文件上传
3.Anthem.NET的Ajax文件上传
4.示例程序演示
5.代码下载
6.更多参考资料  阅读全文
posted @ 2007-03-25 12:10 Dflying Chen 阅读(8251) | 评论 (55)  编辑
使用ASP.NET AJAX Control Toolkit中的NoBot控件拒绝垃圾发布程序      摘要: 网络上的垃圾信息似乎无处不在,从前是垃圾邮件、广告等。而现在,这些无孔不入的垃圾信息发布者又盯上了互联网上的各大网站。各种机器人程序(Bot)应运而生,它们可以自动在网络上爬行并寻找带有评论或留言功能的页面,随即自动填写表单并提交,其提交垃圾信息的数量和质量更是让传统的手工发布者自愧不如。管理者往往一夜之间发现自己的网站下已经多了成千上万条广告,不但让真正有用的信息淹没于其中,更是让网站在性能上不堪重负。

NoBot 控件可以为页面中的表单提供类似CAPTCHA[1]而却无需任何用户操作的验证,以阻止机器人程序自动提交垃圾信息。  阅读全文
posted @ 2007-03-16 10:19 Dflying Chen 阅读(5453) | 评论 (28)  编辑
OWA或Messenger样式的信息提示窗口——编写ASP.NET AJAX Extender控件(下):使用该控件(示例程序)      摘要: 在前面两篇中,我们创建了自己的ASP.NET AJAX Extender控件,这一篇将介绍如何在实际项目中使用该控件。关于该控件的详细功能、实际运行时的界面效果以及详细属性列表,请参考我的《ASP.NET AJAX控件——PopupNotificationExtender:实现OWA或Messenger样式的信息提示窗口》这篇文章。
  阅读全文
posted @ 2007-03-07 23:14 Dflying Chen 阅读(6732) | 评论 (34)  编辑
OWA或Messenger样式的信息提示窗口——编写ASP.NET AJAX Extender控件(中):封装成服务器端控件      摘要: 客户端Behavior搞定之后,我们就要借助ASP.NET AJAX Control Toolkit提供的一大堆基础设施,也就是基类等将其封装成服务器端控件。否这给别人一个JavaScript文件,那多不专业啊……  阅读全文
posted @ 2007-03-02 15:31 Dflying Chen 阅读(5098) | 评论 (24)  编辑
OWA或Messenger样式的信息提示窗口——编写ASP.NET AJAX Extender控件(上):客户端Behavior      摘要: 在《我的ASP.NET AJAX控件——PopupNotificationExtender:实现OWA或Messenger样式的信息提示窗口》中,我们在页面中创建了一个类似OWA或Messenger样式的信息提示窗口。当时时间有限,一直没能写出教程,值此空闲期间,加上ASP.NET AJAX正式发布,也应该把这个教程系列写出来了。

编写ASP.NET AJAX Extender控件还是能写出很多东西的,不过我也不能面面俱到,提一些重要之处而以,加上一些我自己的理解。如有错误,还请朋友们不吝指正。一篇文章是写不下了,还是拆开来吧,系列大概有2-3篇的样子,很快就能写完。  阅读全文
posted @ 2007-02-28 17:07 Dflying Chen 阅读(4807) | 评论 (25)  编辑
Microsoft AJAX Library Cheat Sheet——ASP.NET AJAX客户端框架的快速参考系列(翻译全部完成)      摘要: 在本周ASP.NET英文技术文章推荐[12/24 - 01/27]中,我曾经提到过一个非常实用的Microsoft AJAX Library Cheat Sheets。近日有空陆续将其翻译成中文版,供各位朋友参考。
1. Microsoft AJAX Library Cheat Sheet(1): Array类型的扩展
2. Microsoft AJAX Library Cheat Sheet(2): Boolean和Date类型的扩展
3. Microsoft AJAX Library Cheat Sheet(3): DomElement类
4. Microsoft AJAX Library Cheat Sheet(4): DomEvent类
5. Microsoft AJAX Library Cheat Sheet(5): Number和Error类型的扩展
6. Microsoft AJAX Library Cheat Sheet(6): String和Object类型的的扩展  阅读全文
posted @ 2007-02-09 21:42 Dflying Chen 阅读(14077) | 评论 (40)  编辑

Full ASP.NET AJAX (Atlas) Archive