我的编程空间,编程开发者的网络收藏夹
学习永远不晚

.NET2.0环境下的Ajax选型和应用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

.NET2.0环境下的Ajax选型和应用

本篇内容介绍了“.NET2.0环境下的Ajax选型和应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

主题:.NET2.0环境下的Ajax选型和应用

研究需要解决的问题:

1 Ajax 应用框架的选型及其性能对比

2 如何应用 Ajax

3 应用 Ajax 过程中应该着重注意的问题

一 Demo说明

Ajax Demo Web Site 是一个完整的 .NET Website ,其中包含 5 个 ASPX 页面及其对应的 CS 文件。

为了方便对比, Demo 中使用了三种 Ajax 应用方式:

一是使用微软提供的 Atlas 应用框架,二是使用 Ajax.NET Professional 开源框架,三是使用针对 Ajax 的单纯的 Javascript 包 Prototype 。三者对应的关联文件如下表所示:

应用方式

文件名称

描述

 

Default.aspx

首页导航,列出四个 Demo 页面的链接

Atlas

AtlasDemo.aspx

使用 Atlas 实现 Product 的 CRUD 功能,通过 UpdatePanel 完成无刷新操作。

 



AjaxPro

AjaxProDemo.aspx

使用 Ajax.NET Pro 实现 Product 的 CRUD 功能,编辑、删除操作返回 true/false 的结果,通过 .NET DataGrid 控件实现页面数据列表的呈现( HTML )。

 


 

AjaxProDemoSecond.aspx

使用 Ajax.NET Pro 实现 Product 的 CRUD 功能,编辑、删除操作返回所有的 Product 列表,通过 .NET DataGrid 控件实现页面数据列表的呈现( HTML )。

 


Prototype

PrototypeDemo.aspx

使用 Prototype 实现 Product 的 CRUD 功能,编辑、删除操作返回所有的 Product 列表, Client 和 Server 的数据以 JSON 格式传输。

 


 


 

Product.cs

Product 实体类

二 研究结论

1 Ajax 应用框架选型

Ajax 应用的核心是通过 XMLHttpRequest 对象向 Server 提交 Client 的请求,同步或者异步的获取 Server 返回的 Response 信息,而 Client 和 Server 之前数据传递的方式可以采用 Text 、 XML 或者 JSON 格式。

Demo 中使用到的 Prototype 、 Ajax.NET Pro 、 Atlas Beta2 代表了目前 Ajax 应用的三种主要方式:

Prototype 是目前应用比较广泛的最底层的远程调用工具包,其通常使用自己的 API 封装 XMLHttpRequest 对象,使得调用 XMLHttpRequest 更加简单直观。在 XMLHttpRequest 之前,我们通常使用内嵌的 IFRAME 来实现无刷新页面发送 http 请求的效果。因此,这些远程调用包必须支持那些不支持 XMLHttpRequest 的浏览器,以提高浏览器兼容性。类似的工具还比如 DOJO 。这类工具在应用过程中需要设定自己的 URL 和参数,并且编写相应的 callback 函数来处理 Server 返回的 Response 结果。

在 PrototypeDemo.aspx 中,我们通过 Ajax.Request 向服务器提交请求,在 callback 函数中实现对 Server 的 Response 结果的处理和显示。当然,每个请求的 URL 参数是不同的。

Ajax.NET Pro 则是一种基于基于代理实现的 Ajax 框架,其允许 Client 的 Javascript 直接与 Server 的类实现一一映射,使 Client 的 Javascript 可以通过他们直接访问 Server 的类对象及其 API ,其访问方式类似 RPC ,直接调用相应的 API 完成业务操作,仍然需要编写相应的 callback 函数处理 Server 返回的 Response 结果。

在 AjaxProDemo.aspx.cs 中,我们通过在方法头部添加 [AjaxPro.AjaxMethod] 标注,在 Page_Load 中将类以 AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxProDemo)) 的形式予以注册, 这样就可以在 Client 直接调用。

Atlas 则是基于组件的应用方式,其允许使用拖拉的方式在 IDE 的设计视图中快速创建包含 Ajax 功能的组件,并且能够最大程度的利用 .NET 本身提供的 DataGrid 、 Button 等 UI 控件。这些组件提供了快速开发 Ajax 应用的另一捷径,开发过程不需要编写 callback 函数。

就目前而言, Atlas 能够利用最多的是 UpdatePanel 控件,通过其实现页面的无刷新或者部分刷新。

2 Ajax 框架性能及开发效率对比

A 、数据流量

Demo 中的四个 Sample 都实现了针对 Product 的简单 CRUD 功能。这里我们使用 Fiddler HTTP Debugger 来测试整个操作过程中 Client 和 Server 交互的数据量。

加载 Product List

请求 URL

数据流量

说明

Prototype

PrototypeServerResponse.aspx

?action=listProduct

Request Count:      1

Bytes Sent:     380

Bytes Received: 2,150

获取 Product 列表,以 JSON 的格式返回,客户端使用 Javascript 脚本处理呈现。

Ajax.NET Pro ( Second

ajaxpro/AjaxProDemoSecond,

App_Web_qgwv3twq.ashx

Request Count:      1

Bytes Sent:     493

Bytes Received: 1,392

获取 Product 列表,以 HTML 的格式返回,客户端直接呈现。

Atlas

AtlasDemo.aspx

Request Count:      1

Bytes Sent:     827

Bytes Received: 6,391

获取 Product 列表, Server 完成 DataGrid 数据源绑定呈现。

删除 Product

请求

数据流量

说明

Prototype

PrototypeServerResponse.aspx

?action=deleteProduct&productId=1

Request Count:      1

Bytes Sent:     446

Bytes Received: 1,891

传送 ProductId ,完成删除操作,并获取 Product 列表到 Client 端呈现。

Ajax.NET Pro ( Second

ajaxpro/AjaxProDemoSecond,

App_Web_qgwv3twq.ashx

Request Count:      1

Bytes Sent:     504

Bytes Received: 1,300

调用远程 RPC 接口,完成删除操作,并获取 Product 列表的 HTML 在 Client 端呈现。

Atlas

AtlasDemo.aspx

Request Count:      1

Bytes Sent:     2,287

Bytes Received: 5,913

触发 Server 端的 Action 事件,完成删除操作,需要 Postback 整个页面。

获取 Product Info

请求

数据流量

说明

Prototype

PrototypeServerResponse.aspx

?action=getProduct&productId=8

Request Count:      1

Bytes Sent:     443

Bytes Received: 403

传送 ProductId ,获取 JSON 格式的 Product 信息, Client 端完成解析并呈现。

Ajax.NET Pro ( Second

ajaxpro/AjaxProDemoSecond,

App_Web_qgwv3twq.ashx

Request Count:      1

Bytes Sent:     506

Bytes Received: 284

调用 RPC 接口,获取 Text 格式的 Product 信息, Client 端完成解析并呈现。

Altas

AtlasDemo.aspx

Request Count:      1

Bytes Sent:     2,185

Bytes Received: 6,275

触发 Server 端的 Action 事件,获取 Product 信息,需要 Postback 整个页面。

编辑 Product

请求

数据流量

说明

Prototype

PrototypeServerResponse.aspx

?action=updateProduct&productId=8

&productName=Sony&manufacturer=China

Request Count:      1

Bytes Sent:     482

Bytes Received: 1,877

传送 ProductId 等参数,完成保存操作,并获取 Product 列表。

Ajax.NET Pro ( Second

ajaxpro/AjaxProDemoSecond,

App_Web_qgwv3twq.ashx

Request Count:      1

Bytes Sent:     549

Bytes Received: 1,284

调用远程 PPC 接口,完成保存操作,并获取 HTML 格式的 Product 列表。

Atlas

AtlasDemo.aspx

Request Count:      1

Bytes Sent:     2,218

Bytes Received: 5,913

触发 Server 端的 Action 事件,完成保存操作,需要 Postback 整个页面。

增加 Product

请求

数据流量

说明

Prototype

PrototypeServerResponse.aspx

?action=addProduct&productName=Sony

&manufacturer=China

Request Count:      1

Bytes Sent:     467

Bytes Received: 2,050

传送 ProductName 等参数,完成增加操作,并获取 JSON 格式的 Product 列表。

Ajax.NET Pro

ajaxpro/AjaxProDemoSecond,

App_Web_qgwv3twq.ashx

Request Count:      1

Bytes Sent:     529

Bytes Received: 1,364

调用远程 RPC 接口,完成增加操作,并获取 HTML 格式的 Product 列表。

Atlas

AtlasDemo.aspx

Request Count:      1

Bytes Sent:     2,249

Bytes Received: 6,533

触发 Server 端的 Action 事件,完成增加操作,需要 Postback 整个页面。

结论:

从上述对比表中可以看到, Atlas 在实现无刷新的显示过程中,还是需要 Postback 整个页面,只是这个过程是以异步方式进行处理的;当 Server 端完成响应后, Atlas 客户端根据页面的时候完成 partial-page 的更新。所以对于任何局部页面的操作,页面的 Postback 还是需要的。如果页面的数据量特别大, Atlas 将会导致效率的降低。

Prototype 和 Ajax.NET Pro 的数据量差别不大。

B 、开发效率

Atlas 紧密的和 .NET 的控件结合在一起。如果使用 Atlas ,则可以最大程度的复用 .NET 的控件,比如数据显示控件。

使用 Prototype ,需要在 Javascript 代码中提交 Request 请求到 Server ,并且编写相应的 callback 函数完成 Response 结果的解析和呈现。

使用 Ajax.NET Pro ,可以直接调用 Server 的类的方法(远程 RPC ),不过还是需要编写相应的 callback 函数完成 Response 结果的解析和呈现。

C 、 Server 端返回的数据格式

Ajax.NET Pro 中提供了序列化成 JSON 格式的接口和方法。

Server 端返回的数据格式,可以是简单的 Text ,也可以是 XML 文档,或者通过 Ajax.NET Pro 序列化成 JSON 格式。

“.NET2.0环境下的Ajax选型和应用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

.NET2.0环境下的Ajax选型和应用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux环境下Ruby应用的容器化测试

在Linux环境下,为Ruby应用进行容器化测试,你可以使用Docker和Docker Compose安装Docker:首先,确保你已经在Linux系统上安装了Docker。如果没有,请参考官方文档(https://docs.docker.
Linux环境下Ruby应用的容器化测试
2024-09-16

Linux环境下Ruby应用的自动扩缩容

在Linux环境下,可以使用Kubernetes和Docker来实现Ruby应用的自动扩缩容安装Docker:首先,确保你已经在Linux系统上安装了Docker。如果没有,请参考Docker官方文档进行安装:https://docs.do
Linux环境下Ruby应用的自动扩缩容
2024-09-16

Linux环境下Ruby应用的热部署实践

在Linux环境下,实现Ruby应用的热部署(热更新)主要依赖于以下技术和工具:使用Unicorn或Puma作为Web服务器:这些服务器允许你在不停止服务的情况下重新加载应用程序代码。它们通过监听USR2信号来实现平滑重启。使用Capist
Linux环境下Ruby应用的热部署实践
2024-09-15

Node.js服务器环境下使用Mock.js拦截AJAX请求的教程

0、Node环境下安装和使用Mock# 安装 npm install mockjs// 使用 Mock var Mock = require('mockjs') var data = Mock.mock({// 属性 list 的值是一个数
2022-06-04

linux下安装python3和对应的pip环境教程详解

1、下载python3.6的安装包: wget https://www.python.org/nEwTXTftp/python/3.6.0/Python-3.6.0.tgz 2、解压后,进入到解压目录下,执行如下命令,将python
2022-06-04

Linux环境下Ruby应用的性能监控图表

在Linux环境下,你可以使用一些工具来监控Ruby应用的性能,并生成图表使用Rack Middleware:在Ruby应用中,你可以使用Rack Middleware来收集性能数据。例如,你可以使用rack-mini-profiler这个
Linux环境下Ruby应用的性能监控图表
2024-09-15

Linux环境下Ruby应用的容器网络管理

在Linux环境下,Ruby应用的容器网络管理通常涉及到以下几个方面:Docker网络管理:Docker是一种流行的容器化技术,可以方便地部署和管理Ruby应用。Docker提供了一套网络管理工具,可以创建、连接和管理容器之间的网络。你可以
Linux环境下Ruby应用的容器网络管理
2024-09-16

Flex开发环境和应用框架的示例分析

这篇文章将为大家详细讲解有关Flex开发环境和应用框架的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Flex开发环境AdobeFlexBuilder仍然是使用最为广泛的商业FlexIDE。它构建
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录