




已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业论文(科研训练、毕业设计)题 目:基于Ajax和Silverlight的烟草销售管理系统 姓 名:学 院:软件学院系:软件工程专 业:软件工程年 级: 学 号:指导教师(校内): 职称: 指导教师(校外): 职称: 年 月厦门大学学士学位论文摘要随着信息化程度的日益提高,业务数据的安全和业务效率成为支撑烟草行业正常运行的基础,因此不可避免的需要引入一个烟草业务系统。本文阐述的烟草业务系统是一个基于B/S架构的业务系统,主要是让用户方便的通过互联网去进行相关的操作,来提高公司烟草业务处理的效率。传统的基于B/S架构的烟草业务系统的优点是分布在全世界各地的人只要使用互联网都能享受网上服务,但同时也存在着不可忽略的缺点,那就是当用户每执行完一步操作,都要等待服务器返回一个新的页面,这就导致了用户长时间的等待。为了解决这个问题,我们引入了AJAX。同时为了让界面更加的美观,还引入了SILVERLIGHT.。本文主要是先阐述该系统的应用背景,然后对AJAX和SILVERLIGHT分别进行了介绍。AJAX方面进行了原理的分析和框架的比较选型,SILVERLIGHT方面则侧重于实际的操作。接着给出了该系统的总体设计和详细设计,最后给出了AJAX和SILVERLIGHT在系统中应用的实际例子。关键字:AJAX;SILVERLIGHT;烟草业务AbstractWith fast development, the tobacco company needs to ensure the security of data and the efficiency. So the tabacco company has to import a set of software to resolve the problem. This system bases the B/S structure, and the main target is to enhance the efficiency by internet.Traditional tobacco system can supply people with internet service all over the word.But it also exits some flaw. As we know, whenever every user makes a operation, the user must wait the returned page for a moment after performing a operation. Therefore, this will result in the waiting for long time. In order to resolve this problem, we import the AJAX. Meantime, we also import SILVERLIGHT in order to make the interface more beautiful.This article mostly tells these aspects as the following.First, it describes the background about this system. Second, it instroduces the AJAX and SILVERLIGHT, and it analyzes the theory and the frame about AJAX and describes the actual application about SILVERLIGHT. Third, it introduces the synoptic design and the detailed design. Last, it gives the examples about AJAX and SILVERLIGHT in the actual application.Keyword: AJAX; SILVERLIGHT; Tobacco-operation3厦门大学学士学位论文 目 录第一章背景的简介1第二章 技术介绍22.1AJAX22.1.1 AJAX的由来22.1.2 AJAX的技术组成22.1.3 AJAX与传统的WEB程序32.1.4 AJAX的工作原理42.1.5 XMLHttpRequest对象52.1.6 .NET平台下的AJAX框架122.1.7 ASP.NET AJAX192.1.8 AJAX的应用场景192.2 SILVERLIGHT202.2.1 SILVERLIGHT的介绍202.2.2 SILVERLIGHT的开发工具212.2.3 SILVERLIGHT的特点212.2.4 部署Silverlight开发环境、调试环境、测试环境222.2.5Silverlight DEMO制作-创建一个HELLO WORLD程序26第三章 烟草销售管理系统的总体设计293.1 编写目的293.2参考资料293.3 定义293.4 需求概述303.4.1 目标303.4.2 运行环境303.4.3 需求概述303.5 总体设计313.5.1 类图313.5.2 浏览主题用例规约313.6 接口设计333.6.1 外部接口设计333.7 数据结构设计343.8软件结构343.8.1软件框架343.8.2 分解视图343.8.3 开发视图363.9开发环境说明36第四章 烟草销售管理系统前台功能的详细设计384.1范围384.2术语、定义和缩略语384.3系统结构功能394.3.1功能结构图394.3.2系统的业务功能394.4数据库设计414.4.1 用户表414.4.2 订单表424.4.3 订单商品条目表424.4.4 商品表434.4.5 商品评论表444.4.6 商品类别表444.5数据库E-R关系454.5.1 E-R关系图454.5.2 E-R关系说明:464.6系统设计474.6.1系统的参与用例474.6.2系统类图474.7数据流与数据字典504.7.1系统总体504.7.2 注册模块514.7.3 订单系统524.8模块功能说明544.8.1商品管理模块544.8.2订单模块564.8.3购物车模块584.8.4商品评论模块594.8.5用户管理模块594.9开发和运行环境604.9.1硬件环境604.9.2软件环境60第五章Ajax和Silverlight在系统中的体现615.1 Ajax在系统中的体现615.2 Silverlight在系统中的体现61第六章 总 结63致谢.64参考文献65附 录.66ContentsChapter 1 The Introduction of Background6Chapter 2 Technology Introduction82.1AJAX82.1.1 The Origin about AJAX82.1.2 The Elements of AJAX82.1.3 AJAX and Classic Web Application32.1.4 The Theory about AJAX42.1.5 XMLHttpRequest Object52.1.6 The Structure about AJAX in .NET122.1.7 ASP.NET AJAX192.1.8 The Application about AJAX192.2 SILVERLIGHT202.2.1 Introduce SILVERLIGHT202.2.2 The Tool for Developing SILVERLIGHT212.2.3 The Characteristic SILVERLIGHT212.2.4 Deploy the Entironment for Silverlight222.2.5 Make a hello word Procedure by Silverlight DEMO26Chapter 3 The Synoptic Design for Tobacco System293.1 Target293.2 Reference293.3 Definition293.4 Request303.4.1 Target303.4.2 The Entironment for Running303.4.3 Request303.5 Synoptic Design313.5.1 Class Chart313.5.2 Use-Case for Scanning313.6 Interface333.6.1 Exterior Interface333.7 Data Structure343.8 Software Structure343.8.1 Software Frame343.8.2 Decomposing View343.8.3 Developing View363.9 The Entironment for Developing36Chapter 4 The Detailed Design for Tobacco System384.1 Scope384.2 Definition384.3 Function394.3.1 Function Structure394.3.2 Operation Function394.4 Database Design414.4.1 User Schedule414.4.2 Order Schedule424.4.3 Products Terms of Order Schedule424.4.4 Products Schedule434.4.5 Criticism of Products Schedule444.4.6 Sorts of Products Schedule444.5 E-R in Databae454.5.1 E-R Chart454.5.2 E-R Instruction:464.6 System Design474.6.1 The Use-Case in System474.6.2 The Class Chart of System474.7 Data Stream and Data Dictionary504.7.1 System Synoptic Design504.7.2 Register Module514.7.3 Order System524.8 Modules Instruction544.8.1 Products Management Module544.8.2 Order Module564.8.3 Shopping Module584.8.4 Products Criticism Module594.8.5 User Management Module594.9 The Entironment for Developing and Running604.9.1 Hardware Entironment604.9.2 Software Entironment60Chapter 5 The Embodiment about Ajax and Silverlight in System615.1 The Embodiment about Ajax615.2 The Embodiment about Silverlight61Chapter 6 Summary63Acknowledgement .64References65Supplement.66第一章 背景的简介国家经贸委2007年对部分大中型企业的企业互联网应用和电子商务发展水平的调查显示:烟草行业对信息基础设施的投入,占总资产比例较高。但从整体水平上讲,烟草行业应用信息总体水平还比较低,尚处在信息发布与交流的初级阶段,烟草行业电子商务建设仍处在尝试阶段。行业内还有很多企业没有基本数据库,企业计算机的应用还停留在单机应用和文字处理阶段。烟草行业电子商务发展中遇到的问题有很多。信息技术应用的广度和深度不够,地区之间、部门之间信息化发展存在一定的不平衡,行业的计算机基础设施还不完善。部门利益冲突,条块分割,有重复建设现象;没有完善统一的行业信息化标准,开发的软件有的系统性、兼容性、扩充性不强,使用周期短,很难推广,造成资源的浪费。信息共享度低。信息资源开发利用不足,工商企业、商商企业之间,省与省、省内企业之间实现互联互通、资源共享困难。企业内缺乏大量信息技术方面的高级人才,尤其是缺少大量既懂技术又熟悉业务的复合型人才。该烟草销售管理系统主要应用于烟草零售商销售烟草产品,以加强管理,提升效率,降低成本为目的。功能方面分为前台功能和后台功能。前台包括按时间,价格,浏览数,销量,名称等查看商品,展示商家面貌,购物车,搜索功能,商品评论,订单自动生成,最新商品展示,查看用户历史订单。后台包括订单管理,商品管理,角色功能管理,日志管理,用户信息管理。目前国内外烟草系统大多都是跟终端绑定的,以销售终端为根本目的,包括的基本功能都有:1.申报订单:用户上报订单,购买不超过其限量的卷烟,订单可以自动生成与自动上报。 2.管理库存:用户上报当前库存,库存不超过其周转数,库存可自动管理与自动上报。 3.发布信息:烟草公司通过平台服务器可发布烟草公告。如订单确认、订单执行情况、增加新品种、价格调整、促销活动、提示订货、提示到银行存款的通知等。 4.信息反馈:零售户可随时进行卷烟信息的察看、下载、更新、删除等,并且可以通过手写输入短信的方式提交反馈信息。 5.银行帐户查询:可实现电子银行查询及自动扣款功能(需银行系统支持)。第二章 技术介绍2.1AJAX2.1.1 AJAX的由来在正式了解AJAX以前,我觉得很有必要知道下AJAX诞生的背景。其实编程人员都知道,目前,编写应用程序时有两种基本的选择:(1)桌面应用程序(2)Web应用程序两者是类似的,桌面应用程序通常以CD为介质(有时候可从网站下载)并完全安装到您的计算机上。桌面应用程序可能使用互联网下载更新,但运行这些应用程序的代码在桌面计算机上。Web应用程序运行在某处的Web服务器上毫不奇怪,要通过Web浏览器访问这种应用程序。不过,比这些应用程序的运行代码放在何处更重要的是,应用程序如何运转以及如何与其进行交互。桌面应用程序一般很快(就在您的计算机上运行,不用等待互联网连接),具有漂亮的用户界面(通常和操作系统有关)和非凡的动态性。可以单击、选择、输入、打开菜单和子菜单、到处巡游,基本上不需要等待。另一方面,Web应用程序是最新的潮流,它们提供了在桌面上不能实现的服务(比如TaoBao和eBay)。但是,伴随着Web的强大而出现的是等待,等待服务器响应,等待屏幕刷新,等待请求返回和生成新的页面。显然这样说过于简略了,但基本的概念就是这样的。您可能已经猜测到了,Ajax尝试建立桌面应用程序的功能和交互性,与不断更新的Web应用程序之间的桥梁。可以使用像桌面应用程序中常见的动态用户界面和漂亮的控件,不过是在Web应用程序中。2.1.2 AJAX的技术组成Ajax包括了以下几种技术:(1)XHTML和CSS(2)使用文档对象模型(Document Object Model)作动态显示和交互(3)使用XML和XSLT做数据交互和操作(4)使用XMLHttpRequest进行异步数据接收(5)使用JavaScript将它们绑定在一起第二章 技术介绍 2.1.3 AJAX与传统的WEB程序传统的web应用模型工作起来就象这样:大部分界面上的用户动作触发一个连接到Web服务器的HTTP请求。服务器完成一些处理-接收数据,处理计算,再访问其它的数据库系统,最后返回一个HTML页面到客户端。这是一个老套的模式,自采用超文本作为web 使用以来,一直都这样用,而恰恰就是这样的模式导致了Web界面没有桌面软件那么好用。下面让我们用图2-1来更直观的看一下,传统的web application和AJAX web application有什么区别。图2-1: 传统Web应用模型(左)与Ajax模型的比较(右)这种旧的途径让我们认识到了许多技术,但它不会产生很好的用户体验。当服务器正在处理自己的事情的时候,用户在做什么?没错,等待。每一个动作,用户都要等待。很明显,如果我们按桌面程序的思维设计Web应用,我们不愿意让用户总是等待。当界面加载后,为什么还要让用户每次再花一半的时间从服务取数据?实际上,为什么老是让用户看到程序去服务器取数据呢?Ajax不同凡响的地方就在于,它通过在用户和服务器之间引入一个Ajax引擎,可以消除Web的开始-停止-开始-停止这样的交互过程.它就像增加了一层机制到程序中,使它响应更灵敏,而它的确做到了这一点。不像加载一个页面一样,在会话的开始,浏览器加载了一个Ajax引擎-采用JavaScript编写并且通常在一个隐藏frame中。这个引擎负责绘制用户界面以及与服务器端通讯。Ajax引擎允许用异步的方式实现用户与程序的交互-不用等待服务器的通讯。所以用户再也不用打开一个空白窗口,看到等待光标不断的转,等待服务器完成后再响应。图2-2: 传统Web应用的同步交互过程(上)和Ajax应用的异步交互过程的比较(下)图2-2展示的是:通常要产生一个HTTP请求的用户动作现在通过JavaScript调用Ajax引擎来代替. 任何用户动作的响应不再要求直接传到服务器-例如简单的数据校验,内存中的数据编辑,甚至一些页面导航-引擎自己就可以处理它. 如果引擎需要从服务器取数据来响应用户动作-假设它提交需要处理的数据,载入另外的界面代码,或者接收新的数据-引擎让这些工作异步进行,通常使 用XML, 不用再担误用户界面的交互。2.1.4 AJAX的工作原理Ajax的核心是JavaScript对象XmlHttpRequest。该对象原先在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,Javascript对象XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。在创建Web站点时,在客户端执行屏幕更新为用户提供了很大的灵活性。下面是使用Ajax可以完成的功能:(1)动态更新购物车的物品总数,无需用户单击Update并等待服务器重新发送整个页面。(2)提升站点的性 能,这是通过减少从服务器下载的数据量而实现的。例如,在Amazon的购物车页面,当更新篮子中的一项物品的数量时,会重新载入整个页面,这必须下载 32K的数据。如果使用Ajax计算新的总量,服务器只会返回新的总量值,因此所需的带宽仅为原来的百分之一。(3)消除了每次用户输入时的页面刷新。例如,在Ajax中,如果用户在分页列表上单击Next,则服务器数据只刷新列表而不是整个页面。(4)直接编辑表格数据,而不是要求用户导航到新的页面来编辑数据。对于Ajax,当用户单击Edit时,可以将静态表格刷新为内容可编辑的表格。用户单击Done之后,就可以发出一个Ajax请求来更新服务器,并刷新表格,使其包含静态、只读的数据。2.1.5 XMLHttpRequest对象下面我们来做一个AJAX的例子,XMLHttpRequest对象可能对于很多没接触过它的人是很陌生的,即XMLHttpRequest。这是一个JavaScript对象,创建该对象很简单,如清单1所示。清单1 创建新的XMLHttpRequest对象 varxmlHttp=newXMLHttpRequest();原本不了解这个对象也没有关系,现在要知道这是处理所有服务器通信的对象。继续讨论之前,先停下来想一想:通过XMLHttpRequest对象与服务器进行对话的是JavaScript技术。这不是一般的应用程序流,这恰恰是Ajax的强大功能的来源。在一般的Web应用程序中,用户填写表单字段并单击Submit按钮。然后整个表单发送到服务器,服务器将它转发给处理表单的脚本(通常PHP或Java,也可能是CGI进程或者类似的东西),脚本执行完成后再发送回全新的页面。该页面可能是带有已经填充某些数据的新表单的HTML,也可能是确认页面,或者是具有根据原来表单中输入数据选择的某些选项的页面。当然,在服务器上的脚本或程序处理和返回新表单时用户必须等待。屏幕变成一片空白,等到服务器返回数据后再重新绘制。这就是交互性差的原因,用户得不到立即反馈,因此感觉不同于桌面应用程序。Ajax基本上就是把JavaScript技术和XMLHttpRequest对象放在Web表单和服务器之间。当用户填写表单时,数据发送给一些JavaScript代码而不是直接发送给服务器。相反,JavaScript代码捕获表单数据并向服务器发送请求。同时用户屏幕上的表单也不会闪烁、消失或延迟。换句话说,JavaScript代码在幕后发送请求,用户甚至不知道请求的发出。更好的是,请求是异步发送的,就是说JavaScript代码(和用户)不用等待服务器的响应。因此用户可以继续输入数据、滚动屏幕和使用应用程序。然后,服务器将数据返回JavaScript代码(仍然在Web表单中),后者决定如何处理这些数据。它可以迅速更新表单数据,让人感觉应用程序是立即完成的,表单没有提交或刷新而用户得到了新数据。JavaScript代码甚至可以对收到的数据执行某种计算,再发送另一个请求,完全不需要用户干预!这个就是XMLHttpRequest的强大之处。它可以根据需要自行与服务器进行交互,用户甚至可以完全不知道幕后发生的一切。结果就是类似于桌面应用程序的动态、快速响应、高交互性的体验,但是背后又拥有互联网的全部强大力量。加入一些JavaScript,得到XMLHttpRequest的句柄后,其他JavaScript代码就非常简单了。事实上,程序员将使用JavaScript代码完成非常基本的任务:(1)获取表单数据:JavaScript代码很容易从HTML表单中抽取数据并发送到服务器。(2)修改表单上的数据:更新表单也很简单,从设置字段值到迅速替换图像。(3)解析HTML和XML:使用JavaScript代码操纵DOM,处理HTML表单服务器返回的XML数据的结构。对于前两点,需要非常熟悉getElementById()方法,如清单2所示。清单2用JavaScript代码捕获和设置字段值/Getthevalueofthephonefield/andstuffitinavari ablecalledphonevarphone=document.getElementById(phone).value;/Setsomevaluesonaformusing/anarraycalledresponsedocument.getElementById(order).value=response0;document.getElementById(address).value=response1;这里大家可以注意到AJAX的确是现有技术的合成,代码里面没有需要特别注意的地方。这里并没有非常复杂的东西。只要掌握了XMLHttpRequest,Ajax应用程序的其他部分就是如清单2所示的简单JavaScript代码了,混合有少量的HTML。获取Request对象,有了上面的基础知识后,我们来看看一些具体的例子。XMLHttpRequest是Ajax应用程序的核心,而且对很多人来说可能还比较陌生,我们就从这里开始吧。从清单1可以看出,创建和使用这个对象非常简单。但是受限于浏览器的不同,获得XMLHttpRequest对象可能需要采用不同的方法,下面的代码将进行详细的解释。使用Microsoft浏览器,Microsoft浏览器InternetExplorer使用MSXML解析器处理XML。因此如果编写的Ajax应用程序要和InternetExplorer打交道,那么必须用一种特殊的方式创建对象。但并不是这么简单。事实上根据在InternetExplorer中安装的JavaScript技术版本不同,MSXML实际上有两种不同的版本,因此必须对这两种情况分别编写代码。请看清单3,其中的代码在Microsoft浏览器上创建了一个XMLHttpRequest。清单3.在Microsoft浏览器上创建XMLHttpRequest对象 varxmlHttp=false;try xmlHttp=newActiveXObject(Msxml2.XMLHTTP);catch(e) try xmlHttp=newActiveXObject(Microsoft.XMLHTTP); catch(e2) xmlHttp=false; 其中的两行代码:xmlHttp=newActiveXObject(Msxml2.XMLHTTP);和xmlHttp=newActiveXObject(Microsoft.XMLHTTP);。这两行代码基本上就是尝试使用一个版本的MSXML创建对象,如果失败则使用另一个版本创建该对象。如果都不成功,则将xmlHttp变量设为false,告诉你代码出现了问题。如果出现这种情况,可能是因为安装了非Microsoft浏览器,需要使用不同的代码。处理Mozilla和非Microsoft浏览器,如果选择的浏览器不是Internet Explorer或者为非Microsoft浏览器编写代码,就需要使用不同的代码。事实上就是清单1所示的一行简单代码: varxmlHttp=newXMLHttpRequestobject;。这行简单得多的代码在Mozilla、Firefox、Safari、Opera以及基本上所有以任何形式或方式支持Ajax的非Microsoft浏览器中,创建了XMLHttpRequest对象。结合起来,关键是要支持所有浏览器。谁愿意编写一个只能用于Internet Explorer或者非Microsoft浏览器的应用程序,或者更糟,要编写一个应用程序两次。当然这是大家都不愿意看到的,因此代码要能支持Internet Explorer和非Microsoft浏览器。清单4显示了这样的代码。清单4.以支持多种浏览器的方式创建XMLHttpRequest对象 /*CreateanewXMLHttpRequestobjecttotalktotheWebserver*/varxmlHttp=false;/*cc_on*/*if(_jscript_version=5)try xmlHttp=newActiveXObject(Msxml2.XMLHTTP);catch(e) try xmlHttp=newActiveXObject(Microsoft.XMLHTTP); catch(e2) xmlHttp=false; end*/if(!xmlHttp&typeofXMLHttpRequest!=undefined) xmlHttp=newXMLHttpRequest();这段代码的核心分为三步:(1)建立一个变量xmlHttp来引用即将创建的XMLHttpRequest对象。(2)尝试在Microsoft浏览器中创建该对象: -尝试使用Msxml2.XMLHTTP对象创建它-如果失败,再尝试Microsoft.XMLHTTP对象-如果仍然没有建立xmlHttp,则以非Microsoft的方式创建该对象。(3)最后,xmlHttp应该引用一个有效的XMLHttpRequest对象,无论运行什么样的浏览器。现在我们介绍了Ajax,对XMLHttpRequest对象以及如何创建它也有了基本的了解。由上面的陈述可以知道,与服务器上的Web应用程序打交道的是JavaScript技术,而不是直接提交给那个应用程序的HTML表单。到底如何使用XMLHttpRequest。查看下面的代码,您编写的每个AJAX应用程序都要以某种形式使用它,先看看Ajax的基本请求/响应模型是怎样的。发出请求,现在已经有了一个崭新的XMLHttpRequest对象,现在让它开始做事。首先需要一个Web页面能够调用的JavaScript方法(比如当用户输入文本或者从菜单中选择一项时)。接下来就是在所有Ajax应用程序中基本都雷同的流程:(1)从Web表单中获取需要的数据。(2)建立要连接的URL。(3)打开到服务器的连接。(4)设置服务器在完成后要运行的函数。(5)发送请求。清单5中的示例Ajax方法就是按照这个顺序组织的:清单5.发出Ajax请求functioncallServer() /Getthecityandstatefromthewebform varcity=document.getElementById(city).value; varstate=document.getElementById(state).value; /Onlygooniftherearevaluesforbothfields if(city=null)|(city=)return; if(state=null)|(state=)return; /BuildtheURLtoconnectto varurl=/scripts/getZipCode.php?city=+escape(city)+&state=+escape(state); /Openaconnectiontotheserver xmlHttp.open(GET,url,true); /Setupafunctionfortheserver/torunwhenitsdone xmlHttp.onreadystatechange=updatePage; /Sendtherequest xmlHttp.send(null);其中大部分代码意义都很明确。开始的代码使用基本JavaScript代码获取几个表单字段的值。然后设置一个PHP脚本作为链接的目标。要注意脚本URL的指定方式,city和state(来自表单)使用简单的GET参数附加在URL之后。然后打开一个连接,这是您第一次看到使用XMLHttpRequest。其中指定了连接方法(GET)和要连接的URL。最后一个参数如果设为true,那么将请求一个异步连接(这就是Ajax的由来)。如果使用false,那么代码发出请求后将等待服务器返回的响应。如果设为true,当服务器在后台处理请求的时候用户仍然可以使用表单(甚至调用其他JavaScript方法)。xmlHttp(要记住,这是XMLHttpRequest对象实例)的onreadystatechange属性可以告诉服务器在运行完成后(可能要用五分钟或者五个小时)做什么。因为代码没有等待服务器,必须让服务器知道怎么做以便您能作出响应。在这个示例中,如果服务器处理完了请求,一个特殊的名为updatePage()的方法将被触发。最后,使用值null调用send()。因为已经在请求URL中添加了要发送给服务器的数据(city和state),所以请求中不需要发送任何数据。这样就发出了请求,服务器按照您的要求工作。如果没有发现任何新鲜的东西,大家应该体会到这是多么简单明了!除了牢牢记住Ajax的异步特性外,这些内容都相当简单。应该感激Ajax使程序员能够专心编写漂亮的应用程序和界面,而不用担心复杂的HTTP请求/响应代码。清单5中的代码说明了Ajax的易用性。数据是简单的文本,可以作为请求URL的一部分。用GET而不是更复杂的POST发送请求。没有XML和要添加的内容头部,请求体中没有要发送的数据;换句话说,这就是Ajax的乌托邦。处理响应,现在要面对服务器的响应了。现在只要知道两点:(1)什么也不要做,直到xmlHttp.readyState属性的值等于4。(2)服务器将把响应填充到xmlHttp.responseText属性中。其中的第一点,即就绪状态。第二点,使用xmlHttp.responseText属性获得服务器的响应,这很简单。清单6中的示例方法可供服务器根据清单5中发送的数据调用。清单6.处理服务器响应 functionupdatePage() if(xmlHttp.readyState=4) varresponse=xmlHttp.responseText; document.getElementById(zipCode).value=response; 这些代码同样既不难也不复杂。它等待服务器调用,如果是就绪状态,则使用服务器返回的值(这里是用户输入的城市和州的ZIP编码)设置另一个表单字段的值。于是包含ZIP编码的zipCode字段突然出现了,而用户没有按任何按钮,这就是前面所说的桌面应用程序的感觉。快速响应、动态感受等等,这些都只因为有了小小的一段Ajax代码。这时注意到zipCode是一个普通的文本字段。一旦服务器返回ZIP编码,updatePage()方法就用城市/州的ZIP编码设置那个字段的值,用户就可以改写该值。这样做有两个原因:保持例子简单,说明有时候可能希望用户能够修改服务器返回的数据。要记住这两点,它们对于好的用户界面设计来说很重要。上面给出的都还只是函数,我们下一步需要启动这个AJAX过程,清单7给出了如何启动这个方法的例子。清单7.启动一个Ajax过程 City: State: ZipCode:这个看过去就是一行普通的代码,当用户在city或state字段中输入新的值时,callServer()方法就被触发,于是Ajax开始运行了。这样我们就完成了一个运用AJAX的实际例子。2.1.6 .NET平台下的AJAX框架上面已经陈述了AJAX的基本工作原理,到此为止,大家可以注意到,使用Ajax编程时有很多麻烦事。如果你要支持多个浏览器,无疑会遭遇不兼容问题。单看一个简单的动作,比如说创建 XMLHttpRequest对象的一个实例,这需要先进行浏览器测试。一旦开始尝试使用Ajax技术,你很快就会注意到要反复地完成同样的一些任务。当然,你可以收集一些常用代码库,甚至创建自己的框架。不过,做这个工作之前,需要先了解一下现在已经有些什么了。与所有优秀技术一样,Ajax已经催生出大量框架,有了这些框架,开发人员的日子好过多了。我们要意识到,Ajax还很新,而且还在发展,框架领域也同样如此。几乎每天都有新来者,目前还看不出谁是最后的赢家。这其中包括ASP.NET AJAX,CPAINT,Sajax,JSON/JSON-RPC, Direct Web Remoting,SWATO,Java BluePrints, Ajax.Net等。因为我们的毕设题目是基于.NET平台的,所以着重对ASP.NET AJAX(Atlas)、Anthem.NET和Ajax.NET Professional这三个知名ASP.NET上Ajax框架进行了调研。Anthem.NET其设计理念是通过另外一个思路,遵循这样的理念-既然ASP.NET的各个标准控件没有实现提交功能,那么我可以产生一个提交的接口,然后继承原来的标准控件,然后再实现这个接口,这样每个控件都可以向服务器端单独进行提交。每个控件的发生过程类似MagicAjax.NET,Anthem.NET提供了各个控件Javascript端的提交函数这等于也截取了 _doPostBack,之后Anthem.NET 还提供了完善的客户端的事件比如PostCallBack 和PreCallBack 这样的客户端事件,之后也将使用XMLHttpRequest 模拟一个传统的页面提交请求到服务器端,服务器端生成页面实例,这个过程和MagicAjax.NET一样,最后是将Rendered的HTML在控件的 Render() 事件传回到客户端,客户端控件的innerHTML被赋值,动态更新和MagicAjax.NET不同的是, Anthem.NET没有容器的概念,因为每个控件都增加了提交接口,所以可以单独的提交,所以单位是以一个控件为单位进行一次提交, Anthem.NET的花费更小些(但服务器端是类似的,因为整个ASP.NET页面的Pipeline都会进行)。此外, Anthem.NET 还有另外的功能,就是可以通过客户端调用页面中的方法并获得结果/数据,这种情况下,你将调用Anthem_InvokePageMethod 方法,而不是Anthem.NET提供的默认各个控件的提交方法。这样Javascript的回调处理函数中的result.value 将可以获得调用的服务端的某个方法(该方法以Anthem.Method为标记)的执行结果,因为JavascriptPost的数据中有 Page/MasterPage/Control 了,那么服务器端很容易通过这个标识获得方法的地址,应用反射寻找Anthem.Method标记,然后调用,将结果返回到客户端。Anthem.NET支持返回对象,DataSet,DataTable和 WriteDataRow(WriteDataSet,WriteDataTable,WriteDataRow,WriteObject),返回的是符 合是JSON规范的字符串,这样客户端的Javascript就可以使用这些对象了。不同于MagicAjax.NET,Anthem.NET 没有使用HTTP Model,所以结果是在页面的PreRender() 事件中处理和返回请求的结果。Anthem.NET 的一些不足和想法:1. Anthem.NET 也是一种Hook ASP.NET原理,旨在弥补ASP.NET的整页面的提交和PostBack,并且在客户端的数据访问和交互上做了加强。2. Anthem.NET需要重新将ASP.NET提供的控件进行继承和包装,所以使用和功能的兼容性上非常敏感。3. 也许微软下个版本的ASP.NET的标准控件可以借鉴Anthem.NET的做法,给各
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 张家口市人民医院糖尿病肾病患者透析方案制定考核
- 石家庄市人民医院跨部门医技药后勤协作沟通案例
- 上海市中医院妇产科疑难B超病例考核
- 沧州市中医院呼吸科专科护士晋升高级实践护士案例考核
- 衡水市中医院种植影像评估考核
- 衡水市中医院泌尿系肿瘤的多学科诊疗能力考核
- 张家口市中医院医保结算政策与流程基础知识测试
- 唐山市人民医院脊柱后凸畸形截骨矫形技术考核
- 上海市中医院激光定位系统考核
- 衡水市中医院质量管理体系考核
- GB/T 10819-2025木制底盘
- 女生青春期性教育核心知识框架
- 日常膝关节护理
- 船舶消防救生培训课件
- 初中音标考试题及答案大全人教版
- 贵州贵州磷化有限责任公司招聘笔试真题2024
- 新能源汽车火灾事故成因分析及灭火救援措施
- 2024北京陈经纶中学高二10月月考语文试题及答案
- 中兴信息安全管理制度
- 冷链仓储物业管理费及增值服务合同
- 轮胎店转让协议书
评论
0/150
提交评论