资源描述
Click to edit Master title style,Level one text,Level 2 text,Level 2 text,Page *,Page *,3.3,核心商务逻辑的实现及其技术基础,3.3.1,电子商务应用系统实现概述,3.3.2,传统程序语言与公共网关接口,CGI,3.3.3,基于,ASP,与,Activex,的系统开发,3.3.4 Java,语言及其技术分析,3.3.5 PHP,开发技术分析,Page 1,3.3.1,电子商务应用系统实现概述,电子商务系统与电子商务应用系统的实现,电子商务系统的应用是基于,Web,的应用,是一种分布式的结构,所以开发工作可以分解成为客户端和服务器端的应用开发两部分。,由于电子商务系统的应用程序既包括编译型的程序,也包括解释型的脚本程序(例如,Java Applet,、,Java Script,、,VBScript,等),而这些脚本程序基本上都是嵌入到,HTML,页面中的,所以,应用程序的编写就不仅局限于编码,而且也包括,HTML,页面的编写。,借助于组件技术搭建应用日益成为未来电子商务应用开发与集成的主流方向。,Page 2,开发语言的选择标准,平台无关性,与其他部件的结合能力,软件的可重用,与数据库的连接能力,语言使用的简易性,Page 3,3.3.2,传统程序语言与公共网关接口,CGI,1,、,CGI,工作原理,2,、用,C,语言编制的,CGI,程序,3,、,CGI,程序的输出处理,4,、,CGI,程序的输入,Page 4,CGI工作原理,Page 5,用C语言编制的CGI程序,void main(),printf( Content-type : text/htmlnn);,printf( n);,printf( 用C编制CGI程序n );,printf( n );,printf( 第一个CGI程序,这是用C编写的n );,printf( n );,Page 6,CGI程序的输出处理,Content-type : text/html,用C编制CGI程序,第一个CGI程序,这是用C编写的,输出类型说明,和HTML正文,Page 7,CGI程序的输入-GET,通常情况下,CGI程序的输入是由客户端的窗体提交而产生的。窗体的提交有POST和GET两种方式。这两种方式提交资料的格式是不同的。,在HTML语法中,窗体提交时的默认方式为GET,当以此种方式交时,用户所提交的资料将以参数形式附在CGI程序名的后面,例如一个登录验证的HTML窗体中,当我们填好用户名和密码后点击“提交”按钮,则地址栏显示如下:,http:/202.112.149.251/login.exe?name=bluegenius&password=mypass,当浏览器端以GET方提交资料时,在服务器端将自动生成一个环境变量QUERY_STRING,该参数记录的就是浏览器提交的资料,即“?”后的部分,将该环境变量的值打印出来是这样的:,name=bluegenius&password=mypass,Page 8,CGI程序的输入-POST,当窗体采用POST方式交资料时,其提交的资料则被加入到服务器端的标准输入stdin中,其参数的形式与GET基本相同,同时在服务器端生成一个环境变量:CONTENT_LENGTH,该变量说明了浏览器提交的参数总长度,以便读入和分析参数时的控制。上例中,当我们采用POST方式交时,将stdin中的内容打印出来,则为如下形式:,name=bluegenius&password=mypass,可见,其参数的形式和意义与GET方式全相同。,无论窗体是以何种方式提交,所得到的参数串是完全相同的,下面要做的就是如何将该参数串拆解开,以获得各输入项的值。,基本思路为:主程序首先调用CgiInit将用户提交的参数串读入到自定义缓冲区buff中,然后调用ParsePara将各参数拆解出来。其余的几个则为辅助函数,主要用于将参数中的汉字转换为正确的形式。因为在窗体提交过程中,无论采用何种提交方式,汉字都是被转换成为一个个的以“%”开头的16进制码,如%BC%4F等,每2个16进制码表示一个汉字。当我们采用GET方式提交带有汉字的参数时,会在浏览器的地址栏中发现这些16进制码而不会找到一个汉字,就是这个原因。,将用户提交的参数拆解开后,就可以分析并处理这些信息,其过程与方法和普通的C程序是完全相同的,最后CGI程序输出处理结果,这就是一个CGI程序完整的处理过程了。,Page 9,3.3.3,基于,ASP,与,Activex,的系统开发,是微软推出的动态Web设计技术,它能够将代码直接嵌入HTML,是一种用于WWW服务的服务器端脚本环境,也是一种在站点的Web服务器上解释脚本,可产生并执行动态、交互式、高效率的站点服务器应用程序。利用它,可以很容易地把HTML标记、文本、脚本命令及ActiveX组件混合在一起构成ASP页,以此来生成动态网页,创建交互式的Web站点,实现对Web数据库的访问。,由于ASP在服务器端运行,运行结果以HTML主页形式返回用户浏览器,也就是说,用户在客户端浏览器看到的仅仅是ASP页的执行结果所生成的页,而ASP页本身的内容用户在客户端浏览器是看不到的,因而ASP源程序不会泄密,增加了系统的安全保密性。此外,ASP是面向对象的脚本环境,用户可自行增加ActiveX组件来扩充其功能,拓展应用范围。,Page 10,示例, ,%for(i=0;i,这是一个测试程序!,这是一个测试程序!,这是一个测试程序!,这是一个测试程序!,这是一个测试程序!,这是一个测试程序!,Page 11,ASP编程的基本规则,ASP编程首先要确定其使用的脚本语言。ASP的编程可采用各种脚本语言,只要服务器端安装了相应的脚本引擎即可。,需要注意的是:ASP本身有一定的语法规则,也可算作一种编程语言,而同时所使用的脚本语言自身还有一套语法,因此在编制ASP程序的过程中,必须同时遵守这两方面的语法规定才行,缺一不可。,一个ASP文件实际包含了两个部分:HTML部分和ASP脚本命令部分。其中,HTML部分与普通的HTML文件的语法规则是相同的;而ASP脚本则利用两种标记嵌入到HTML部分之中,在已有的HTML基础上对其输出实现控制。,Page 12,ASP的内部对象,Page 13,(1)Request对象,可以使用Request对象访问任何基于HTTP请求传递的信息,包括从HTML表格用POST方法或GET方法传递的参数、Cookie、用户认证及服务器端变量等。同时,Request对象还能够访问客户端发送给服务器的二进制数据。Request对象主要有如下几种最常见的应用:,获取由POST方法提交的表单的各元素值,Request.Form(element)(index)|.Count,获取QueryString中各变量的值,Request.QueryString(variable)(index)|.Count,获取Cookie中变量的值,Request.Cookies(cookie)(key)|.attribute,获取服务器端环境变量值,Request.ServerVariables ( Name ),Page 14,示例,编制页面,用户提交信息,该表单的提交项定义如下:,处理后,回显给用户,Page 15,为处理表单数据的ASP文件:ShowInfo.asp,New Page 1,您提交了如下信息:,姓名: 性别:,籍贯:, 0) %, 您的爱好共有项:,0;n-)%, ,您没有什么特别的爱好。, ,Page 16,(2)Response对象,与Request对象正相反,Response对象是用来控制发送给用户的信息,包括直接发送信息给浏览器、重定向浏览器到另一个URL或设置Cookie的值等。,设置Cookie的值,Response.Cookies(cookie)(key)|.attribute=value,设置Web页面保留在客户端浏览器缓冲中的时间,Response. Expires = value,Response. ExpiresAbsolute = value,向浏览器输出信息,Response.Write(String),重新定向URL,Response.Redirect(URL),Response.Redirect(”http:/bluegenius.dhs.org”),Page 17,(3)Application对象,下面是一个计数器程序,也是一个比较典型的Applicatio对象的应用方法。,计数器示例,您是第 位来客!,Page 18,(4)Session 对象,Session 对象存储特定的用户会话所需的信息。当用户在应用程序的页之间跳转时,存储在 Session 对象中的变量不会清除,而用户在应用程序中访问页面时,这些变量始终存在。,要注意的是,会话状态仅在支持 Cookie 的浏览器中保留,如果客户关闭了 Cookie 选项,Session 也就不能发挥作用了。,例如下面例子:,在Session中建立了Name和Password两个变量,在以后由其直接或间接链接而出的网页中(注意:必须是直接或间接链接而出的一组网页才构成一组对话)就可通过如下语句获得用户名和密码:,之后,就可以用这个用户名和密码进行身份校验了。,Page 19,3.3.4 Java,语言及其技术分析,Java是SUN公司与1990年开始,为消费者电子市场,如电视机、电话、烤面包机等家用电器的控制和通讯,而设计的软件。设计小组最开始使用C+,但是它在在消费者使用的各种硬件架构及对稳定的要求上却产生了问题,于是这个小组开发了一种新的语言,并为它命名Java。这个名称并不是某个简称,而是指设计人员们所喜欢的又热又香醇的咖啡,更重要的是,它包含了激发这个技术的要素:活波、动画、速度、互动以及其他会选择Java的可能因素。而今天,它已经成为Internet上的配送工具。,Page 20,(1)Java是编程语言,特点:简单可靠,是面向对象、与平台无关的,具有可移植性,安全性好,并且支持多线程,具有很高的性能;其次,它最大限度地利用了网络,Java小应用程序可在网络上传输而不受计算机和操作系统的限制。,Java既可以被编译,也可以被解释。通过编译器,可以把Java程序翻译成一种中间代码(字节码)可以被Java解释器解释的独立于平台的代码。通过解释器,每条Java字节指令被分析,然后在计算机上运行。,JAVA,源程序,JAVA,编译器,JAVA,字节码,通过网络或,本地文件系统传送字节码,类装载器,字节码校验器,JAVA类库,JAVA,解释器,及时,编译器,运行时系统,操作系统,硬件,JAVA,虚拟机,编译时运行时,Page 21,(2),Java是平台,平台是程序运行的硬件或软件环境。Java平台与大多数其他平台的不同之处在于,它是运行于其他硬件平台的纯软件平台,而大多数其他平台是硬件和操作系统的结合。,Java平台由 Java虚拟机(Java Virtual Machine,简称 JVM)和Java应用程序接口(Java API)两部分组成。,JVM是Java平台的基础。JVM发挥抽象计算机的作用,在Java应用程序和本机系统之间建立了一个绝缘层,屏蔽掉了硬件和操作系统的不同,使Java程序“编写一次,任意运行”。可以把Java字节码看作运行在JVM上的计算机代码指令。每种Java解释器,不管是Java开发工具还是可以运行Java小应用程序的Web浏览器,都是JVM的实例。,Java API由多种Java包(package)组成,它们提供了很多有用的功能。如 java.awt是窗口工具包,可以用来创建图形用户界面(GUI);java.io用来实现输入输出处理;java.sql即JDBC包,包含了实现数据库连接的一系列类和接口。,图62描述了一个运行在Java平台上的Java程序,如应用程序(Application)或小应用程序(Applet)。图中,Java API和JVM把Java程序从硬件依赖中分离出来。,Java 程序,Java API,Java 虚拟机,基于硬件的平台,Java平台,Page 22,(3)Java应用程序,这类程序与大多数面向对象语言所编写的程序相同,独立运行于本地主机。步骤:,创建一个Java源文件:使用记事本,创建一个包含以下内容的命名为HelloWorldApp.java的Java源文件:,对一个Java应用程序来说,main()方法是必须的,而且必须按照上述格式来定义。Java解释器在没有生成任何实例的情况下,以 main()方法作为入口执行程序。,使用,Java,编译器编译源文件:,DOS shell(windows 95,NT);,javac HelloWorldApp,.,java,如果编译成功,编译器便产生一个与,Java,源文件,HelloWorldApp,.,java,),在同一个目录下的名为,HelloWorldApp,.class,的文件。这个类文件包含,Java,字节码,是可以被,Java,运行系统解释的独立于平台的代码。如果编译失败,请查看键人的文件名是否正确,尤其是大小写。,在,Java,解释器中运行这个,Java,应用程序:,DOS shell(windows 95,NT);,java HelloWorldApp,或,jview HelloWorldApp,可以看到屏幕上显示“,Hello World,!”。,javac,和,java,分别是,JDK,提供的,Java,编译器和解释器。,JDK,(,Java Development Kit,)是,Sun,公司推出的,Java,程序开发工具,可以从,http:/ www.,javasoft,.com,下载。,JDK,中的部件都在,DOS,状态下以命令形式运行。,jview,是,Windows,自带的,Java,解释器。,/ This class simply displays”Hello World” to the,/ standard output,class HelloWorldAPP,Public static void main(String,args),System.out.println(”Hello World!”);,Page 23,(4)Java小应用程序,Java小应用程序是动态、安全、跨平台的网络应用程序,Java语言迅速流行的重要原因也正在于此。Java Applet不能独立运行,需要嵌入在HTML页面中,通过浏览页面来执行。,Page 24,3、构建多层应用软件体系结构的Java技术,在构建多层应用软件体系结构时,选用Java平台是一个非常好的选择,而实现多层结构需要使用的关键技术和运行环境主要有:,客户层:Java Applet编程技术,运行环境为支持 Java的浏览器或可以直接运行Java程序的计算机(例如网络计算机)。,顶端Web服务层:Java Servlet编程技术、JSP技术、RMI技术和Java Bean编程技术,运行环境为使用Java语言编写的Web服务器(起代理服务器作用)。,应用服务层:Java Servlet编程技术、RMI技术、JDBC技术和Java Bean编程技术,运行环境为使用Java语言编写的Web服务器。,Page 25,J2EE标准,客户层 客户机,Web,层,J2EE,服务器,商务层,EIS,层,DB,服务器,应用程序,动态,HTML,网页,EJB,EJB,JSP,页,DB,DB,Page 26,(1)JavaBeans,JavaBeans描述了基于Java的软件组件模型,JavaBeans 规范将“组件软件”的概念引入到 Java 编程的领域。组件是自含的、可重用的软件单元;而 JavaBeans 组件,则可以使用可视的应用程序开发工具,可视地将它们编写到 Java 程序中。JavaBeans 规范为 Java 开发人员提供了一种“组件化”其 Java 类的方法。,如果软件重用是一个好主意,那么是否应该让每一个 Java 类都成为 Java bean 呢?如果Java 类满足某些准则,它们就适于充当 bean 的角色:如果软件模块要既能够可视地操作,又能够定制以达到某些效果,则这种软件模块就可能适于做成一个 JavaBean。,是否打算让它可重用?或者,它会是可重用的吗?,是否希望将它与其他可重用的 Java 组件一起使用?,是否预计会在 IDE 工具中使用它?,如果上述问题的答案都是肯定的,则它应该作为 JavaBean 来开发。,JavaBean 概念是为了在 Java 编程环境中支持可重用的组件,它是一种一般性的设计方法,适用于客户机或服务器机器上运行的 Java 程序。由于对可视的构建器工具的强调,也由于许多 Java bean 都是图形用户界面 (GUI) 组件,所以 JavaBean 组件可能被视为一种客户端技术。但是,并不要求 Java bean 都是可视的,并且它们也可以用于服务器环境中。,Page 27,(2),EJB,(,Enterprise java bean),是JAVA中的商业应用组件技术,是分布式应用系统中的组件。,EJB组件模型在逻辑上扩展了JavaBeans组件模型,以支持服务器端组件。服务器端组件是可重用的,预先包装好的,准备在应用服务器上运行的应用程序功能片段。它们可以和其他组件组合在一起创建一个符合要求的应用系统。,与JavaBeans组件有很多相似的之处,但是JavaBeans组件一般粒度更大而且功能更完全,而且EJB组件不能像JavaBeans组件那样在Java集成开发环境中使用。相反,通过使用由遵循EJB的Java应用服务器提供的工具,它们可以在部署阶段被装配和定制。,EJB模型定义了EJB组件与EJB容器之间相互关系。EJB组件不需要使用任何特定的容器系统。提供商可以将任何应用服务器端调节为支持EJB技术,只需加入规范定义的一些服务的支持即可。这些服务定义了EJB组件和容器之间的“契约”,有效地实现了一个可移植层。任何EB组件可以在任何支持EJB契约的应用服务器上运行。一个EJB组件可被部署到任何一个EJB服务器,即使不同的服务器通过不同的方式实现它们的服务。EJB模型使用EJB容器与EJB组件之间的一组标准契约确保了EJB组件在不同EJB服务器上的可移植性。每一个EJB组件都被要求实现一组特定接口,允许EJB容器管理和控制该对象。EJB容器也被要求在特定的执行阶段调用此接口。,Page 28,EJB的分布式计算结构中的六个角色,六个角色可以由不同的开发商提供,每个角色所作的工作必须遵循Sun公司提供的EJB规范,以保证彼此之间的兼容性。,EJB组件开发者:,应用组合者:,部署者:,EJB 服务器提供者:,EJB 容器提供者:,系统管理员:,Page 29,(3)JDBC,JAVA语言作为一种具有健壮性、易使用、易于理解、能够自动从网络下载的语言,具有开发数据库应用的极好的语言基础。但除此以外,Java还需要提供一种能够与各种数据库系统交互的能力, JDBC(Java DataBase Connectivity)就提供了这样一种能力。,JDBC是一个能够执行SQL语句的Java API,它包含一组由 Java语言编写的类和接口,使得程序员能够使用纯Java开发数据库应用。JDBC标准基于XOPEN的SQL调用级接口,它定义了一个友好的 Java界面来与 X/OPEN的 SQL调用级接口中定义的基本抽象层和基本概念层来进行连接。,Page 30,(4)Servlet,Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行,以接收来自Web浏览器的HTTP请求,动态地生成响应(可能需要查询数据库来完成这种请求),然后发送包含HTML或XML文档的响应到浏览器。,Servlet 是一组运行在服务器端的软件。Sun公司将其取名为Servlet,可能是与Applet有关。Applet是运行在Web浏览器端的JAVA程序,Servlet是运行在Web服务器端的JAVA程序。,与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资(更重要的是,Servlet程序员收入要比Perl程序员高)。,Page 31,Servlets 特点,高效。在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择,比如缓冲以前的计算结果,保持数据库连接的活动,等等。,方便。Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。,功能强大。在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。,可移植性好。Servlet用Java编写,Servlet API具有完善的标准。因此,为I-Planet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。,Page 32,(5)JSP,成为快速建立跨平台的动态网站的首选方案。,1.将内容的生成和显示进行分离,2.可重用组件,3.采用标识 :,4.适应平台,5.数据库连接:,6、所有的JSP页面都被编译成为Java Servlets,好处,包括健壮的存储管理和安全性。作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。,Page 33,4、两种体系结构的比较和选择,自从引入JSP技术,使用Java构建的Web应用服务器端出现了两种架构,第一种是只使用JSP,第二种是同时使用JSPs和Servlets,以下称之为模型一和模型二,它们分别有各自的优缺点。近来模型二风行,不仅在网络中有很高的占有率,而且在商业杂志中也备受推崇。实际上,很多开发者错误的认为这种架构已经取代了模型一并且是使用JSPs的正确方法。正确的使用JSPs的方法取决于你目前项目的实际需求,而不是追赶潮流。在这篇文章中,我将描述这两种架构,权衡利弊,告诉你一些基本的准则来帮助你决定哪一种技术更适合你。,Page 34,(1)基于JSP的模型结构,浏览器,jsp文件,Bean,DB,Page 35,(2)MVC使用JSPs和Servlets,Servlet,JSP文件,DB,Java Bean,Page 36,基于,MVC,模型的应用系统开发的组织,视图控制器模型应用,内容页面内容和布局应用流程商业逻辑运行环境,角色页面制作者应用组装者组件提供者,WEB,管理员,部件,HTML,JSP,ServletsJavaBeans,配置数据,XML, AppletsJavaBeans, XMLEJB,站点使用分析,工具,WebSphere WebSphereStudio,VAJAVAApplicationServer,培训,StudioStudioIBM ConnectorsPerformance Pack,SiteAnalysisTools,Page 37,(3)模型的比较,对于Web的开发者和设计者来说,直接使用JSP是很直观的,但随着代码的增多会使JSP页面负重不堪,而且调试困难。使用Servlet控制器,大多数的商业逻辑在从JavaBeans传给JSP 之前就已经调试通过了。,很有用的原则和概念来帮助选择:这两种架构的最明显的区别就是模型一是以“页面为中心的,而模型二是以程序为中心的。如果你正在开发一个典型的Web应用,只是页面之间的链接,那模型一是比较适合的。但如果每个链接或按钮背后需要大量的处理后才能决定下一步要显示什么,那Servlet/JSP MVC是比较适合的。,另一种方法是看你的应用是面向“请求”的还是面向“响应”的。Servlets是面向“请求”的,JSPs则更加是面向“响应”的,因为JSP页面将HTML的响应发送给浏览器。如果你的HTML代码要大大多于Java(或者说只有非常少的逻辑来决定要显示给用户什么),那么模型一就更加适合。,有一个小技巧就是观察请求与响应之间的映射关系,如果对于每一个的请求,只有一个响应,那么使用Servlet就意义不大。Sun的J2EE蓝本中是这样描述Servlet控制器的:“基于用户的请求和模型命令的输出,控制器选择一个视图来作为响应的一部分”。如果请求和响应是一对一的,那么就没什么必要使用控制器。,另一方面,如果每个请求会导致比较复杂的逻辑运算,并且可能返回的视图也不相同,那么使用 Servlet来做出决定和重定向视图就比较理想。如果你的应用需要支持不同的显示格式,例如在同一个通道中使用HTML和XML,那这一点就尤其重要了。Servlet能包含逻辑,来决定客户端是什么,基于这一点来返回不同的文档格式。,在做出决定时,还应当考虑到开发者的技能水平。举例来说,如果应用系统主要是由网,最后,记住模型一和模型二是不能并存的。,Page 38,3.3.3 PHP与Perl,Page 39,1、PHP,PHP动态网站开发技术与ASP相似,也是一种嵌入HTML文档的服务器端脚本语言。其语法大部分与C、Java、Perl等语言相似,并形成了自己的独有风格,利用该语言Web程序员可以快速地开发出动态网页。PHP是 Personal Home Page的缩写,于 1994年由 Rasmus Lerdorf创造,原本用途只是为知道他自己个人置于Internet上的履历表曾被谁浏览过。后来由于其轻巧、免费、多平台等特性而迅速流行,1997年开始开发的第三版被称之为PHP3。PHP广泛流行的主要原因在于其多平台能力和对数据库的广泛支持,此外也有些其他的独到之处。,(1)免费、轻巧快速、真正跨平台。,要运行PHP,通常使用Linux作为操作系统,Apache作为Web服务器。Linux+Apache+PHP3+MySQL已经成为中小型网站最为经济的选择,无论是性能还是安全方面,都要比微软的ASP好一些。当然在其他操作系统上也同样可以运行,这是因为得益于其开放的源代码,PHP是一种跨平台的软件。不过,如果不使用Apache服务器,那么PHP就只能以CGI的方式运行,这样就不能利用将PHP编译进Apache带来的性能优势。,Page 40,(2) 语法与C及Perl相近,PHP是一个在服务器端脚本语言,其目的则为开发动态式的网页并可与数据库连结,具备 CGI及类似 JavaScript在Client端的功能。PHP的语法主要借鉴于C语言,也部分参考了JAVA和Perl语言。与ASP类似,它是一种嵌入式语言,即在HTML中嵌入PHP语法,如图中所示的三种方法:,PHP和一般的解释性语言一样,不需要事先定义变量。如果试着使用一个没有赋过值的变量,那么返回的值是空字符串。对一个变量赋值则也就同时分配了这个变量的内存。PHP的变量名前面必须有一个号,这也是很多脚本语言的惯例了。PHP的变量类型可以自动转换,如果需要强制转换,做法和C的一样。它有Integer,Double,String三种简单类型。 PHP3的变量作用域规定类似于 C,即缺省认为主程序中的变量是全局变量,而函数中的变量都是局部变量,即使有同名的全局变量也不使用。PHP与其他跨平台语言类似,也有正规表达式功能,PHP3的正规表达式功能当然远远比不上 Perl,但还是足够用的。,当从wwwphp3net中下载了最新版本的PHP并安装配置完毕之后,就可以使用编辑器或网页制作软件来编写PHP代码了。如果你能使用C或Perl进行编程,就会发现PHP编程并不复杂,C简单,比Perl易懂。,echo(“这是PHP语言的嵌入范例,n”);,Page 41,(3) 广泛的数据库支持能力,PHP最强大,也最有代表性的特点是它的数据层,它可以支援多种数据库,几乎含盖了各种常见的数据库,包括常用的Oracle,mSQL,dBase,Sybase,Informix,MySQL等等,并且使编写基于数据库的网页变得非常简单。,同数据库相关的页面,在服务器端以PHP脚本的方式编写。实现过程如图58所示:,从图可以看出:,第1步:客户向Web服务器发出请求。,第2步:Apache服务器分析客户的请求,若为PHP文件,则将其交给PHP处理程序进行处理,第3步:Filenamephp3是一个PHP脚本,包含了许多命令,其中包括打开并连接数据库,从数据库中找到所要数据的命令。所有同数据库相关的操作,都由PHP来完成。PHP可以很好地完成同数据库的交互。,第4步:PHP从数据库中取得数据后,按照FIlenamephp3文件的要求,进行格式转换,也即将文件内容转化为HTML格式。,第5步:将HTML格式的文件交给Apache服务器。,第6步:Apache服务器再将其送给客户。,客户,浏览器,PHP3,服务,Apache,服务器,1.客户请求2.脚本交PHP3,3.执行数据查询,6.页面返回5.返回HTML4.查询返回,MySQL,图 PHP实现过程,Page 42,示例,. . . . ., . . . .,Page 43,2、Perl简介,Perl(Practical Extraction and Reporting Language)是一个高级程序语言,由 Larry Wall和其他许多人所写,融合了许多语言的特性。 它是由C语言、sed、awk、UNIX shell 和至少十几种其他的工具和语言所演化而来。,Perl对档案和文字等有很强的处理、变换能力,因此有关快速原型设计、系统工具、系统管理、数据库处理、图像程序设计、网络连接、WWW程序设计等工作,都能用Perl完成。,Perl的设计目标是帮助UNIX用户完成一些常见的任务,这些任务对于shell来说过于沉重或对移植性要求过于严格。,Perl是按GNU Public License的形式分发的,其实质是免费的,原先运行于UNIX和类UNIX系统,现在已可以方便地在OS/2,Windows 9x,Windows/NT等系统下运行。,Perl是解释运行的,一般Perl程序的第一行需注明自己是一个Perl程序而不是shell程序,所以一般将下面一行语句:,#! /usr/bin/perl,作为文件的第一行。,Page 44,3.3.4 分析比较,传统的高级开发语言C/C+等,虽然不是专门为电子商务系统开发而设计的,但是其通用性比较好,基本上所有的应用服务都可以用传统的语言来开发,目前的商品化软件包(如数据库、中间件产品等)一般都提供传统高级语言的API接口,特别是在解决电子商务系统与其他应用互操作等问题时,传统语言还是有一定优势的。需要指出的是,传统语言与操作系统的关系比较紧密,跨平台能力较弱,因此目前更多的应用使用Java等新的开发语言。,(1)简介,Page 45,技术特点,ASP:,使用,VBScript,、,JScript,等简单易懂的脚本语言,结合,HTML,代码,即可快速地完成网站的应用程序。,无须,compile,编译,容易编写,可在服务器端直接执行。,使用普通的文本编辑器,如,Windows,的记事本,即可进行编辑设计。,与浏览器无关,用户端只要使用可执行,HTML,码的浏览器,脚本语言,(VBScript,、,Jscript,),均在,WEB,服务器端执行,用户端的浏览器不需要能够执行这些脚本语言。,ActiveX Server Components(ActiveX,服务器元件,),具有无限可扩充性。 可以使用,Visual Basic,、,Java,、,Visual C, 、,COBOL,等编程语言来编写你所需要的,ActiveX Server Component,。,PHP:,数据库连接:,PHP,可以编译成具有与许多数据库相连接的函数。,PHP,与,MySQL,是现在绝佳的组合。你还可以自己编写外围的函数去间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松地更改编码以适应这样的变化。,PHPLIB,就是最常用的可以提供一般事务需要的一系列基库。但,PHP,提供的数据库接口支持彼此不统一,比如对,Oracle,MySQL,,,Sybase,的接口,彼此都不一样。这也是,PHP,的一个弱点。,面向对象编程:,PHP,提供了类和对象。基于,web,的编程工作非常需要面向对象编程能力。,PHP,支持构造器、提取类等。,JSP:,将内容的生成和显示进行分离,强调可重用的组件,采用标识简化页面开发,Page 46,(3)应用范围,ASP是Microsoft开发的动态网页语言,也继承了微软产品的一贯传统只能运行于微软的服务器产品,IIS(Internet Information Server) (windows NT)和PWS(Personal Web Server)(windows 98)上。Unix下也有ChiliSoft的插件来支持ASP,但是ASP本身的功能有限,必须通过ASPCOM的组合来扩充,Unix下的COM实现起来非常困难。,PHP3可在Windows,Unix,Linux的Web服务器上正常运行,还支持IIS,Apache等通用Web服务器,用户更换平台时,无需变换PHP3代码,可即拿即用。,JSP同PHP3类似,几乎可以运行于所有平台。如Win NT,Linux,Unix. NT下IIS通过一个插件,例如JRUN或者ServletExec,就能支持JSP。著名的Web服务器Apache已经能够支持JSP。由于Apache广泛应用在NT、Unix和Linux上,因此JSP有更广泛的运行平台。虽然现在NT操作系统占了很大的市场份额,但是在服务器方面Unix的优势仍然很大,而新崛起的Linux更是来势不小。从一个平台移植到另外一个平台,JSP和JavaBean甚至不用重新编译,因为Java字节码都是标准的与平台无关的。,Page 47,(4)性能比较,有人做过试验,对这三种语言分别做循环性能测试及存取Oracle数据库测试。在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了2000020000的循环。而ASP、PHP测试的是20002000循环(少一个数量级),却分别用了63秒和84秒。(参考PHPLIB)。,数据库测试中,三者分别对 Oracle 8 进行 1000 次 Insert,Update,Select和Delete操作,JSP 需要 13 秒,PHP 需要 69 秒,ASP则 需要 73 秒。,Page 48,ASP技术,JSP技术,WEB服务器,微软的IIS或个人WEB服务器,任何WEB服务器包括Apache,Netscape,和IIS,操作系统平台,微软的视窗系统,绝大多数的流行平台,跨平台访问,需要第三方ASP的引入产品,支持WEB信息机构环境中不同系列的计算机群,可重用,跨平台组件,没有JAVABEANS,企业级JAVABEANS,定制JSP标签,安全:防范系统崩溃,没有,有,内存泄露保护,没有,有,脚本语言,VBSCRIPT,JSCRIPT,JAVA,定制标签,没有,有,兼容传统的数据库,可以(COM),可以(用JDBC API),集成数据源的能力,能工作在任何符合ODBC规范的数据库,能工作在任何符合ODBC规范的数据库,而且能访问符合JDBC技术规范数据库,组件,COM组件,JAVABEANS,企业级JAVABEANS或扩展的JSP标签,扩展工具支持,有,有,Page 49,(5)前景分析,目前在国内PHP与ASP应用最为广泛。而JSP由于是一种较新的技术,国内采用的较少。但在国外,JSP已经是比较流行的一种技术,尤其是电子商务类的网站,多采用JSP。 采用PHP的网站如新浪网(sina)、中国人(Chinaren)等,但由于PHP本身存在的一些缺点,使得它不适合应用于大型电子商务站点,而更适合一些小型的商业站点。,首先,PHP缺乏规模支持。其次,缺乏多层结构支持。对于大负荷站点,解决方法只有一个:分布计算。数据库、应用逻辑层、表示逻辑层彼此分开,而且同层也可以根据流量分开,组成二维阵列。而PHP则缺乏这种支持。还有上面提到过的一点,PHP提供的数据库接口支持不统一,这就使得它不适合运用在电子商务中。,ASP和JSP则没有以上缺陷,ASP可以通过Microsoft Windows的COM/DCOM获得ActiveX规模支持,通过DCOM和Transcation Server获得结构支持;JSP可以通过SUN Java的Java Class和EJB获得规模支持,通过EJB/CORBA以及众多厂商的Application Server获得结构支持。,三者中,JSP应该是未来发展的趋势。世界上一些大的电子商务解决方案提供商都采用JSP/Servlet。,总之,ASP,PHP,JSP三者都有相当数量的支持者,由此也可以看出三者各有所长。正在学习或使用动态页面的朋友可根据三者的特点选择一种适合自己的语言。,Page 50,小结,CGI,传统编程方法,生成HTML文件。,通过Request、Response接收和响应客户请求。,服务器端脚本,程序与HTML标记混编。,引擎解释程序语句,直接插入HTML文本中。,通过一些对象完成通讯:接收请求,发送响应。,Page 51,3.4,商务支持平台及相关技术基础,商务支持平台技术基础,Web,服务器与应用服务器,Web,服务器的主要功能,应用服务器的技术分析,Page 52,商务支持平台概述,商务支持平台就是对企业的商务应用系统提供支持,使企业的商务应用能更好开展的一些服务。,商务基础平台:提高系统性能,侧重于保障系统的效率、可靠性和优化,为商务系统的应用软件提供辅助功能,例如系统开发与维护环境、负载平衡、系统管理等;,商务服务平台:提供更多的商务服务,为企业的核心商务逻辑提供服务,例如供应链管理、客户关系管理等。,商务支持平台的出现使得企业能够将更多的精力集中于其核心业务的构建。,商务支持平台通常具有一定的通用性,是大部分企业都需要的。是由IT厂商将一些通用的,与商务应用无关的的软件,与Web服务器集成在一起,组成的应用服务器软件包。,Page 53,服务器软件发展概述,传统,Web,服务器的作用相当于使用,HTTP,协议的文件服务器,在这个平台上是无法实现逻辑处理、计算和数据库访问等功能的。,Web,服务器的主要功能在于,Web,页面的组织和存取.,功能丰富:CGI编程接口,其他应用开发接口,并增强了网站管理等系统管理功能,有些产品的功能足以承担商务服务处理的需要。,三层体系结构的提出和明确,更细致地层次划分又导致了应用服务器的出现。将一些通用的、与具体商务应用无关的软件集成为一个整体,为电子商务应用系统的运行提供基础平台。,Page 54,Web,服务器和应用服务器的主要功能以及二者之间的关系,外部应用,HTML,静态页,JSP,Servlet,Java Applet,EJB,ASP,WEB,服务,器管理,WEB,服务器,应用程序(商务逻辑),组件处理器,应用服务引擎,应用界面生成,服务进程调度,内容管理,事务管理,集成接口,开发工具,ODBC,JDBC,CORBA,应用服务器,商务组件,第三方组件,服务器/系统管理,安全管理,Java,虚拟机,(,JVM),HTTPD,服务,进程,数据库,Page 55,Web服务器的核心功能,安全性,FTP,搜索,数据分析,Page 56,其他功能,网站管理、,应用构造、,动态内容,电子商务等,Page 57,Web,服务器产品,两个截然不同的区域:内部网服务器和因特网服务器。,目前,,Web,服务器软件包有,30,多种,有些只能在一种操作系统上运行,有些则可以在多种操作系统上运行。,Apache,和微软的,IIS,(,Internet Information Server,)服务器软件占有了大部分的市场份额,网景公司,Enterprise Server,和,OReilly,公司的,Website Professional,产品也有一定的市场份额。,Page 58,应用服务器,将应用从Web服务器和数据库中分离出来,为处理大量的用户与事务提供了一个更为结构化的解决方案。应用服务器还能够提供诸如均衡负载、线程池和恢复服务等特性,这种事务处理能力使Web应用能更好地扩展并从失败中更好地,恢,复。,应用服务器的版本很多,功能差异也较大。,Page 59,(1)高性能的应用程序运行环境,内容缓存,数据库连接缓存,支持进程的多线程执行,大量用户访问情况下的负载均衡,支持分布式联机事务处理,Page 60,(,2,)其他,为应用提供扩充性,会话管理,目录及内容管理,商务引擎,系统管理,性能配置管理,存取控制管理,系统日志管理,Page 61,应用服务器的优势,开发优势,实施优势,集成的管理能力,安全性,Page 62,应用服务器的选择,总体目标,具有良好的可扩展性,具有跨平台性,统一的MIS间数据存取接口,实现开放的信息共享,实现安全的信息共享,Page 63,选择的原则,1、基本特性,基本特性是指应用服务器的实现应包括的基本运行环境和支持标准,主要包括以下内容:,(1)国际标准的兼容性:对J2EE支持的程度。,(2)操作系统平台: 支持应用服务器运行的操作系统平台。,(3)Web服务器: 应用服务器对Web服务器的支持策略。,(4)数据层支持:支持的数据连接标准;支持的数据库产品。,(5)对象模型支持: 主要考察对分布式对象模型的支持。,Page 64,选择的原则,2、扩展特性,扩展特性描述了应用服务器为了获得高性能和竞争能力而需要提供的特性,只要包括以下内容:(1)可用性、(2)可伸缩性、(3)可管理性(4)安全性、(5)集成性、(6)开发有效性、(7)对Web Service的支持,3、其他需要考虑的方面,(1)性能价格比 (2)售后服务及培训 (3)应用服务器版本的更新及升级 (4)技术及产品供应商的发展前景,Page 65,
展开阅读全文