现在的位置: 首页 > 综合 > 正文

AJAX .Net组件用户指南(译文&原文)

2013年05月10日 ⁄ 综合 ⁄ 共 3066字 ⁄ 字号 评论关闭

AJAX .Net组件用户指南
            翻译by:Ekin.S.Sun
例子下载

背景

异步JavaScriptXML (AJAX)最近变得非常流行,它不仅仅被小范围运用,像Google公司在Google推荐中诸如Google地图也使用了该技术。 ASP.Net环境中, AJAX允许服务器端无回调处理客户端(浏览器)事件,因而降低了服务器性能要求。 换句话说它从服务器为异步分派和进程请求提供一个框架。 AJAX是对现有知识的整合,它不是全新的技术,然而却是对这些技术进行的全新整合(整体,这便是AJAX)扩充。

使用Michael SchwarzAJAX .Net 组件可以使ASP.Net开发人员快捷,简便地利用AJAX部署配置页面文件。用户应该注意该组件处于开发的初期,因此它并不是如此地成熟。

应该指出的是有些诸如AJAX可能导致程序违反多层结构的规则(程序多层结构) 依我的观点来看AJAX增加逻辑层数的可能(或坏,业务层)将沦为表示层。严密的架构师,比如我,也许会因为这种想法而畏缩。我认为,即使AJAX的使用轻微地违犯分层的界限,结局也是很值得的。 当然,有些方面您也需要依据您特定项目和环境综合考虑。

     


了解更多的 AJAX知识, 请访问:
http://en.wikipedia.org/wiki/AJAX
http://www.adaptivepath.com/publications/essays/archives/000385.php

工作原理总览

AJAX依靠中介来分派和处理发往或是来自于服务器的请求。为了完成这项任务,.Net 组件使用客户端的XmlHttpRequest对象。 多数浏览器对XmlHttpRequest对象支持都很好,这是使它成为一个可以选择的解决方案。因为组件的目的是隐藏XmlHttpRequest的执行,我们将不对它进行详细的讨论。

组件的运作通过将.Net函数标记为AJAX方法来实现。  一旦标记, AJAX使用XmlHttpRequest对象创建相应的JavaScript函数,在客户端(和其他的JavaScript函数一样)和在服务器端被称为代理。这些代理标明回到服务器端函数的途径。

复杂?其实不染。让我们来看个简单的例子。以下是.Net函数:

'VB.Net

public function Add(firstNumber as integer, secondNumber as integer) as integer

  return firstNumber + secondNumber

end sub

 

//C#

public int Add(int firstNumber, int secondNumber)

{

   return firstNumber + secondNumber;

}

Ajax .Net 组件将自动地创建一个由两个参数组成的被称做“Add”的JavaScript函数。当这个函数被JavaScript(在客户端)调用的时候,请求将传递到服务器端并返回结果值到客户端。

初学阶段

首先我们进入为你的项目“安装”.dll文件的步骤。如果你知道如何添加一个动态库文件引用,可以跳过这个步骤。

     首先,如果你还没有这个组件,下一个最新版本的,将压缩包解压的ajax.dll放在你的项目中的文件夹中。在Visual Studio.Net编译器中,在解决方案浏览器的“引用”接点上点击右键,选择添加引用。在新的打开对话框,点击浏览并找到引用文件/ ajax.dll,然后点击打开和接着的Ok.现在你已经可以使用AJAX .Net组件开始你的编程了。

如果你在添加引用过程遇到困难,请到这里需求帮助:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbtskaddingremovingreferences.asp

 

设置 HttpHandler

要使所有的东西都能顺利运行,第一步要在web.config里面设置组件的HttpHandler方式。没有必要详细地探索和什么是HttpHandlers以及它是如何工作的,只要知道它们是被用来处理Asp.Net请求的就足够了。例如,所有*.aspx页面请求都是由System.Web.UI.PageHandlerFactory这个类处理的。同样的我们将做所有对ajax/*.ashx 的请求都由Ajax.PageHandlerFactory 处理:

<configuration>

  <system.web>

    <httpHandlers>

      <add verb="POST,GET" path="ajax/*.ashx"
          
type="Ajax.PageHandlerFactory, Ajax" />

    </httpHandlers> 

    ...

  <system.web>

</configuration>

上述代码主要是告诉ASP.Net对于任何能比配指定路径(ajax/*.ash)的请求都将被Ajax.PageHandlerFactory处理,代替默认的处理工厂。你没有必要创建一个ajax子目录,这是一些被简单使用的虚拟目录,这样以便其它HttpHandlers用他们自己构建的的子目录使用ashx 扩展名的文件。

设置页面

现在我即将开始编码。创建一个新页面或者打开一个已经存在的页面的后台代码文件,在Page_Load事件中添加以下的代码:

 

'vb.net

Public Class Index

  Inherits System.Web.UI.Page

 

  Private Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Ajax.Utility.RegisterTypeForAjax(GetType(Index))

  '...

  end sub

  '...

End Class

 

//C#

public class Index : System.Web.UI.Page{

   private void Page_Load(object sender, EventArgs e){

      Ajax.Utility.RegisterTypeForAjax(typeof(Index));     

      //...                                       

   }

   //... 

}

 

访问RegisterTypeForAjax要在页面里添加下述JavaScript代码(作为二者必须选择一个,所以你应当把以下两行代码都放到页面文件中去):

 

<script language="javascript" src="ajax/common.ashx"></script>

<script language="javascript"
          
src="ajax/NAMESPACE.PAGECLASS,ASSEMBLYNAME.ashx"></script>

粗体部分表示的意思如下:

NAMESPACE.PAGECLASS

当前页面的名字空间和类名(这样将很形象地表示继承了在@Page中指定属性的值

ASSEMBLYNAME

当前页面程序集的一部分(它将标识你的项目名称)

 

下面是一个在AjaxPlay项目中sample.aspx输出的实例:

<%@ Page Inherits="AjaxPlay.Sample" Codebehind

抱歉!评论已关闭.