当前位置: 首页 > news >正文

了解基于客户端的网页应用程序,AJAX和ASP.NET 'Atlas'[翻译]

了解基于客户端的网页应用程序,AJAX和ASP.NET 'Atlas'

介绍

      在这一些个年里,我们编写客户端程序都使用JavaScript。而近段时间主流的浏览器已经引入了一个特性—XMLHTTPRequest对象,它能够完成和服务器端的异步通讯,可以发送和接收XML数据而不需要完成整个页面重新生成的过程。

      这种技术网页编程的方法(客户端脚本和与服务端异步通信)被称之为AJAX,全称为asynchronous JavaScript and XML.AJAX能让开发者创建只响应用户的所需的返回的页面(因为他们使用了客户端叫本来控制用户界面),而且能不会在处理数据操作的时候出现停滞和失败的状态(因为它是通过异步通讯来发送和接收数据)。两个AJAX样式的应用程序是Microsoft Virtual Earth网站(www.virtualearth.com) 和Microsoft Outlook Web Access电子邮件客户端。这两个例子展现了这些扩展的用户界面和高效的运行表现,它们是用这种方法建立应用程序的典型例子。

      代码名称为'Atlas'作为ASP.NET一个新的技术被打包在Microsoft提供和扩展AJAX方法的技术集中。这一主题描述了AJAX的概念,列出了用'Atlas'处理网页程序的开发,并且提供一个ASP.NET 'Atlas'在AJAX方面发展方向和提升的一个概览。

AJAX技术的概念

      在AJAX中,开发者能够使用XMLHTTPRequest 对象把数据以XML的方式打包,并通过网络传输这些数据,然后以异步的方式来调用Web services。为了实现调用,XMLHTTPRequest 对象提供了一个代理对象,它能够向远程的调用发送和接收数据。

      AJAX同样运用客户端脚本来实现这些扩展,指定用JavaScript (ECMAScript)。JavaScript被用作实现调用远程程序来处理客户端的程序上的程序处理(相反地,把这些处理放在服务器端来处理),并且创建了高效的用户界面特性。

      AJAX解决方案使用JavaScript并结合几种客户端技术,包括以下几种:

  •        浏览器的Document Object Model (DOM), 他是作为一些个对象集暴露在HTML页面上面的一些元素、(document, window, and so on) ,它是可以被可编程的。
  •        动态HTML (DHTML),它是对HTML的一种扩展,能够通过简易的客户端节本对用户在客户端的输入进行反应,而且不需通过提交。
  •        行为 Behaviors, 它是一种可编程的方法,把与页面上关联的动作和用户界面捆绑在一起(例如:拖放行为)。
  •        组件 Components, 它是自定义的一些JavaScript对象,能为客户端界面提供扩展的特性。

用'Atlas'开发要处理的事项

AJAX样式页面的编程是一个挑战,其原因是:

  •          网页上的元素必须以不同的方式来编程来兼容不同的浏览器。每种浏览器在执行上都有稍微一点点不同的DOM和不同版本的DHTML。
  •          客户端的编程之能够通过JavaScript来完成;一些AJAX的特性会相当复杂,而且要求掌握JavaScript。
  •          JavaScript 不能够像.NET开发者期望的那样,提供全方位的语言特性(例如全面的面向对象),也不能做到好像.NET Framework那样子提供一个类库的支持平台。 开发人员一开始建立AJAX样式的应用程序必须从最基本的应用程序代码写起。
  •          JavaScript and client development generally is not well supported in IDEs.

      'Atlas'可以为创建基于客户端的应用程序提供一个完整的架构来处理这些问题。'Atlas'由客户端和服务器端两部分整合在一起组成了ASP.NET的'Atlas'。

'Atlas' 架构

      在它的最小化形式中,一个'Atlas' 应用程序用客户端的类库来管理用户界面和调用基于服务器端的组件。'Atlas'也提供服务器端的组件,这些组件可以和客户端进行交互,而且还可以生成预先定义好的客户端脚本。

'Atlas' 客户端组件

      在纯客户端的开发中,'Atlas'包含了一些客户端脚本库(.js文件集),它定义一个分层的方式去去创建基于客户端的应用程序。这些层由以下部分组成:

  •          浏览器兼用性层,它能为您的'Atlas'脚本提供在不同浏览器上面的兼容性,并且使您不需要编写特定浏览器的脚本。
  •          'Atlas' 核心服务,他包括一些JavaScript扩展的,例如:类(classes)、命名空间(namespaces)、事件处理(event handling)、继承(inheritance)、数据类型(data types)已经对象的序列化(object serialization)。这些面向对象的特性如给你一个熟悉的编程模型,并且能让您写出更加高质量、更好的维护性以及可重用性的代码。
  •          一个基于'Atlas' 的类库,它包括一些个组件,例如:字符串创建类(string builders)、调试类(debuggers)、时钟类(timers)和跟踪类(tracing)。
  •          一个基于Web的服务和应用程序以及管理异步调用远程方法的网络层,这一层主要处理在XMLHTTP 之上的复杂的异步调用,减少调用时候的编写脚本的代码量。
  •          一个提供数种'Atlas'客户端功能的用户界面层:行为(behaviors)、'Atlas'声明语法('Atlas' declarative syntax)、用户界面组件(UI components)以及用户绑定(data binding)。
  •          一个创建'Atlas'客户端编程的特定控件层。这些控件能够进行数据绑定、编写脚本、绑定'Atlas'事件(例如:拖放事件等等)。这些控件包含:自动完成文本框的控件、绑定数据的列表控件、导航控件等等。
  •          一个公开的编程模型,它能让您以创建ASP.NET服务器端控件同样的方式来创建'Atlas'组件。

      你能够把'Atlas'的客户端脚本库看作为在服务器上面的ASP.NET架构上的一个子集。

'Atlas'服务器组件

      'Atlas'不只是关于创建客户端脚本的。'Atlas'包括基于服务的组件、服务和控件,他们都整合了'Atlas'的客户端脚本,包括以下几个部分:

  •          可用的Web services包括以下几个ASP.NET特性:(用户配置)profiles, (成员关系)membership, (用户角色)roles,(用户个性化信息) personalization、(全局性)globalization以及culture-specific services.
  •          'Atlas' 服务器端控件和ASP.NET服务控件,但是生成的是'Atlas' 客户端脚本。 'Atlas' 控件根已有的ASP.NET服务器控件关系非常密切,例如buttons、labels、 options、text boxes、check boxes、hyperlinks和validation等控件。如果您非常熟悉服务器控件,'Atlas'控件会非常有用,它可以让你不用去手工编写'Atlas'客户端脚本。
  •          自动生成客户端事件的'Atlas'服务器控件包括:HoverBehavior控件, ClickBehavior控件,Popup控件和AutocompleteBehavior控件。

      所有的'Atlas'控件将会整合到Visual Studio中以致你能够像使用标准ASP.NET服务器控件那样使用它们。

      想了解有关'Atlas'的特性和架构,请看ASP.NET Atlas Overview。

转载于:https://www.cnblogs.com/LJMNET/archive/2006/09/29/517893.html

相关文章:

  • [转]Spring mvc interceptor配置拦截器,没有登录跳到登录页
  • ASP站点无法访问怎么办
  • 任何一个创业者都要注意的22个经典提示
  • Oracle给Select结果集加锁,Skip Locked(跳过加锁行获得可以加锁的结果集)
  • Vue.js学习系列(三十三)-- Vue.js样式绑定(四)
  • HTTP调试之保持连接状态(微软知识库文章)
  • php将科学计算法得出的结果转换成原始数据
  • 从代码阅读看设计之简洁
  • ftp配置
  • 科技通信:无限流量上4g,已成功办理
  • tomcat 的线程池配置,字符编码设置
  • 六家共享单车加入免押计划 押金模式即将崩盘?
  • TestDriven.NET 2.0 发布了
  • Spring Boot(1) 使用Maven构建Spring Boot项目
  • 除了memory leak和handle leak外的其它资源泄露
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • Akka系列(七):Actor持久化之Akka persistence
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JAVA多线程机制解析-volatilesynchronized
  • JS变量作用域
  • js中forEach回调同异步问题
  • MySQL用户中的%到底包不包括localhost?
  • oschina
  • Rancher-k8s加速安装文档
  • Vue实战(四)登录/注册页的实现
  • Vue--数据传输
  • 讲清楚之javascript作用域
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 排序算法学习笔记
  • 使用权重正则化较少模型过拟合
  • 找一份好的前端工作,起点很重要
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • #HarmonyOS:Web组件的使用
  • #在 README.md 中生成项目目录结构
  • (003)SlickEdit Unity的补全
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .equals()到底是什么意思?
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net framework4与其client profile版本的区别
  • .NET NPOI导出Excel详解
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • @在php中起什么作用?
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [C/C++]数据结构 循环队列
  • [C++]高精度 bign (重载运算符版本)
  • [go] 迭代器模式
  • [Java][Android][Process] 暴力的服务能够解决一切,暴力的方式运行命令行语句
  • [JavaWeb]—前端篇