日期:2010-09-07  浏览次数:20544 次

  Microsoft ASP.NET Atlas的出现几乎颠覆了整个传统的ASP.NET开发概念,理论上讲,最“纯粹”的Atlas应用程序将把一切表现层全部移到客户端进行,服务器端仅仅是提供客户端需要的服务。而目前为止这种客户端编程模型还没有很强大的IDE支持(想想编写,调试JavaScript的时候是多么的痛苦……),同时考虑到还存在着好多现有的ASP.NET程序,并且开发人员还需要一定的适应/学习时间。这样Atlas在提供纯粹的客户端面向编程模型的同时,也允许控件开发者以服务器端控件的形式开发Atlas组件,让传统的ASP.NET开发者在开发时不会觉得有什么不同之处,他们会同样得到Visual Studio的设计期支持,编译期检查等特性,平缓了程序开发者的学习曲线。

  Atlas的服务器端控件大都可以以Extender的形式提供,所谓Extender,顾名思义,就是对现有的控件的功能,行为等进行扩充的组件。例如,为现有的TextBox控件加上自动完成(auto complete)功能,为现有的Button控件加上确认对话框等。其中Atlas官方发布的Control Toolkit就是若干个这样的Extender的集合,您可以到这里:"Atlas" Control Toolkit更新发布(Version 1.0.60504.0),以及Atlas Control ToolKit 发布得到更详细的信息。

  对于这种非常常见的开发Extender的需求,Atlas为我们提供了一个Extender的基类以及相应的Visual Studio中的Project Template。在这个系列中,让我们一起学习如何通过使用Atlas的Extender的基类以及相应的Visual Studio中的Project Template开发我们的自定义Extender。

  在整个系列中,我将通过一个控件的完整开发过程来讲解,这里我选择的Extender的功能是,在用户填写注册信息时,使用AJAX方式实时验证用户名是否被注册,关于这个功能的详细介绍以及客户端Atlas Behavior的实现,请参考:使用ASP.NET Atlas开发实时验证用户名是否被注册的自定义Behavior。我推荐对这个系列感兴趣的朋友把这篇文章看懂,其中的概念也弄明白,将会在未来的开发中节省好多时间。

  在开发这个控件前,我们需要安装如下的组件/程序集:

  Atlas April CTP,请参考:ASP.NET Atlas April CTP发布,当然,您可以只使用其中的Atlas.dll,但我还是建议您安装Atlas Web Site的Template,这样可以在开发的过程中实时测试您的控件。

  Atlas Control Toolkit,请参考:"Atlas" Control Toolkit更新发布(Version 1.0.60504.0),以及Atlas Control ToolKit 发布,下载好运行自解压文件AtlasControlToolkit.exe,您将得到三个目录,其中在目录AtlasControlExtender下有一个AtlasControlExtender.vsi文件,如果您不想手动创建Control项目以及众多的相关文件/引用,那么最好还是运行安装一下这个Visual Studio的Project Template(噢,当然,Visual Studio还是必要的)。

  如果一切顺利的话,上述两个步骤以后您在新建Web Site的时候就可以看到Atlas Web Site的Template了;同样在新建项目的时候也能看到Atlas Control Project的选项。

  顺便也说一下,AtlasControlToolkit.exe解压后的三个目录中的另外两个:

  AtlasControlToolkit目录中有这个Control Toolkit提供的若干个Extender,都带有源代码(不过没有注释)。这将是您在开发过程中不可缺少的示例程序!

  SampleWebSite目录中有上述Extender的使用文档以及演示程序。您可以在这里学到如何使用开发好的Extender。

  这个Control Toolkit中的所有Extender以及提供的Extender的基类都遵守Microsoft Permissive License协议,这是个非常宽松的协议,基本没有任何限制,请参见http://www.microsoft.com/resources/sharedsource/licensingbasics/permissivelicense.mspx

  (今天就到这里吧,不好意思写了这么短的文章。实在是有点累了……这个系列大概还要两三篇左右。顺祝各位儿童节快乐)