  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14247
- 金币
- 2414
- 威望
- 1647
- 贡献
- 1362
|
目前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(Java Server Pages), " J3 H9 O: R5 F, ?# L
PHP (Hypertext Preprocessor)。
! e$ ?) } R- A( r% r
1 r- n. F: l( i0 m' h! h简 介
, o6 v5 S. B% |# Z; u% N
1 b7 K5 r+ K* e2 M1 u8 `, pASP全名Active Server Pages,是一个WEB服务器端的开发环境, 利用它可以产生和运
8 L8 W+ \! m+ w' s+ Y( j+ U行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VB Script(Java script
% T3 Q$ C3 Z( v; X: O* A* X)作为自己的开发语言。
$ d% h$ e5 }. t; ~) n: Q6 O, K$ Y! j3 D6 o+ B
PHP是一种跨平台的服务器端的嵌入式脚本语言. 它大量地借用C,Java和Perl语言的语法
4 R- I3 m, i; u! _4 a, @0 X, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生成页面.它支持目前绝大多数数
1 V! A; q" i" _/ K+ w7 E& o. |据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(http://www.php.ne 9 d9 A" Q" d" _* d! k( w
t)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。 - t/ X4 Y: F6 \0 c4 W7 X8 t
' ^! O: I! c7 g* R, u
JSP 是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病--
6 y* s0 K$ ~9 N- k. j脚本级执行(据说PHP4 也已经在Zend 的支持下,实现编译运行).Sun 公司借助自己在Jav
Q/ q- D; a. ?, ~! i) Sa 上的不凡造诣,将Java 从Java 应用程序 和 Java Applet 之外,又有新的硕果,就是Js 2 a$ f2 l) l6 F" c# w4 a
p--Java Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能强大的站点
7 _9 C, L$ t. p( L6 ]1 t. K0 t0 g1 p程序。
: d$ a1 c8 K) N: R, N/ }
6 a" x8 ?7 c, T6 I- B7 ]- B三者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。 9 e" y# z8 o q7 U
但JSP代码被编译成 Servlet 并由 Java 虚拟机解释执行,这种编译操作仅在对 JSP 页面的
7 `* U+ v2 S8 Q/ s7 s第一次请求时发生。在 ASP 、PHP、JSP 环境下, HTML 代码主要负责描述信息的显示样式 2 V) v9 q+ U' Z5 d
,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 、PH
1 B$ l1 G j7 a. W" h* O; y) s8 bP、JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到 3 `5 C3 b3 d4 k$ u* z. {( _0 K; S
HTML 代码中,然后一起发送给浏览器。 ASP 、PHP、 JSP三者都是面向 Web 服务器的技术
9 L' P& N/ W1 J8 \* M" f7 a,客户端浏览器不需要任何附加的软件支持。 ( a; [$ [) C; I! S1 H) w
8 D7 H; U" v# T' H2 n. @+ e* `
技术特点
& d, z2 d( \# P$ x( k) B3 J: S, M( Q+ d* D) I7 c# A
ASP: 2 F8 D! z9 K1 w1 e8 L) @- @& }
% F! E" A; N+ P7 T+ M5 H1. 使用 VBScript 、 JScript 等简单易懂的脚本语言,结合 HTML 代码,即可快速地完成 ' @' c9 {5 z8 e; `. q
网站的应用程序。
9 K4 k" y6 L7 T, j" H+ `2. 无须 compile 编译,容易编写,可在服务器端直接执行。 p* x- M2 p' d; E* `$ h
3. 使用普通的文本编辑器,如 Windows 的记事本,即可进行编辑设计。 1 D. c# m* j* x& x+ S8 t
4. 与浏览器无关 (Browser Independence), 用户端只要使用可执行 HTML 码的浏览器,即 " f8 R) N" ]- m" q* s* l
可浏览 Active Server Pages 所设计的网页内容。 Active Server Pages 所使用的脚本语 + k9 ]- T+ t+ _# d9 l
言 (VBScript 、 Jscript) 均在 WEB 服务器端执行,用户端的浏览器不需要能够执行这些 2 S! D1 x9 J$ K
脚本语言。
1 U* Z% v. F! f' U& ~7 F5.Active Server Pages 能与任何 ActiveX scripting 语言相容。除了可使用 VBScript
, y& v, L. [9 I6 g5 W0 {或 JScript 语言来设计外,还通过 plug-in 的方式,使用由第三方所提供的其他脚本语言 % L- p$ @, H5 [ z
,譬如 REXX 、 Perl 、 Tcl 等。脚本引擎是处理脚本程序的 COM(Component Object Mod
' z; x8 x: m# yel) 物件。 ) ~& p3 v" E7 s5 v: w4 Y7 H* h
6. 可使用服务器端的脚本来产生客户端的脚本。
. d/ v0 s+ F ~, U5 Q% a: C7.ActiveX Server Components(ActiveX 服务器元件 ) 具有无限可扩充性。可以使用 Vi
$ m k1 T, F0 Z. J: G) S. v( _* hsual Basic 、 Java 、 Visual C++ 、 COBOL 等编程语言来编写你所需要的ActiveX Se + k& y. z3 ~/ V% f: ^* ]$ [1 c' L7 u
rver Component 。
* x4 \% m. D7 l5 ^. x0 D3 {
! `& Z- e0 z+ n6 @3 bPHP:
- W2 J3 U4 o9 y/ P+ C, \
& O- h& ]9 t- [0 ~1.数据库连接 : T+ x' O' m! b& N; `9 L
PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的组合。你还可
* n+ R& U- A8 h以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以 ) L( ~9 G% X7 D9 b
轻松地更改编码以适应这样的变。PHPLIB就是最常用的可以提供一般事务需要的一系列基库 4 E! ^& y! ^1 U+ e/ u7 I
。但PHP提供的数据库接口支持彼此不统一,比如对Oracle, MySQL, Sybase的接口,彼此 # m6 {! E, h3 e
都不一样。这也是PHP的一个弱点。 ! o1 J3 y% V4 h2 M
2.面向对象编程 1 [4 Z1 }& P+ h/ [, W! A5 M
PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、 9 C8 t/ L* ^; o2 Z
提取类等。 ; X" o5 ~$ L* K, F7 H- X- `6 G
% ]0 C% }" h, v
JSP: % `! Q' i i; i& L
! {" z: R2 }, q1.将内容的生成和显示进行分离 0 C. g, o% [) C& b
使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使
: U; F, U* Y& S5 ~用JSP标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBeans ! k$ c% g3 Z: H. u4 T/ b5 e$ E
组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和
' Y- [5 i0 w$ H& f3 xBeans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内
, \9 P+ \ c% C7 R) c" s2 z8 O容的生成。
3 Z: J9 w6 w/ t5 }( U+ }在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问Java
" Q9 E/ V7 F4 f" w* Z rBeans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以HTML(或者XML) . t4 j v$ b# i" i4 s8 @
页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览 & o1 u! {$ q. V2 a/ O
器的完全可用性。 & L9 D9 {- P1 K" n5 |" M C
2.强调可重用的组件
$ }5 a8 D6 M3 v. P# w! ^绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者Enterprise JavaBea / }4 T. A9 h: v2 L- C& |# t
nsTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操 1 k, } c/ r: U" e* X
作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了
% U( v, L+ ^# r; M) A: Q总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。
) J' V9 H1 x7 _% M3 B1 ^& B3.采用标识简化页面开发
; `* P' w H7 p+ GWeb页面开发人员不会都是熟悉脚本语言的编程人员。JavaServer Page技术封装了许多 * k7 z" M. L, h2 u8 e" B
功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JS
: ^' r2 Q X4 A9 WP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用
) s2 u {" n: v/ ^其他方法更难于编码和耗时的功能。 1 @, v& l3 g; G0 T* Y
通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其他人员可以
. a B" t" n5 u; T ?; k' M! z为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样
6 U! A, P2 T& z) x( d- U4 g3 c$ B的执行特定功能的构件来工作。 - h3 B, W4 e: Z$ i* Q3 r
JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够 ; ?* p: Q9 a- r1 h2 j
支持企业级的分布式应用。作为采用Java技术家族的一部分,以及Java 2(企业版体系结构 , o" m6 y o, V# J
)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。 ; O% ~! {4 M! x6 W* W, S5 n
由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为
; _$ u/ O4 Z. ^: EJava Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。 ( B4 n# p" k4 G6 k5 ]
作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越
7 }2 @- T& c; A% {5 h$ G来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更
8 T6 L o* b9 I& m) l改工具或服务器并不影响当前的应用。
% N8 _3 I1 |5 J) e( T- g/ W9 e8 S4 ?% E9 X# R0 I9 {
应用范围 . f( y" d5 `/ \! L
* v1 f- h9 k& a, X3 e% d
ASP是Microsoft开发的动态网页语言,也继承了微软产品的一贯传统——只能运行于微软
) }# m) ?, i# |. D: m+ v的服务器产品,IIS (Internet Information Server) (windows NT)和PWS(Personal Web Se 5 V: @; Y: V6 z. | a$ E9 o
rver)(windows 98)上。Unix下也有ChiliSoft的插件来支持ASP,但是ASP本身的功能有限,
0 E5 s* t( G1 F. y! C& J4 V4 N+ W必须通过ASP+COM的组合来扩充,Unix下的COM实现起来非常困难。
0 a) Y1 B( i- y- u! W- G! c, K0 Q7 s+ {
PHP3可在Windows,Unix,Linux的Web服务器上正常运行,还支持IIS,Apache等通用Web服务器 " ~% C% [5 F, T" y' n* R
,用户更换平台时,无需变换PHP3代码,可即拿即用. 9 s" v/ |) G3 b! J5 H2 r
& S, P5 ?* H" q( _ g7 c, {) X
JSP同PHP3类似,几乎可以运行于所有平台。如Win NT,Linux,Unix. NT下IIS通过一个插 5 G1 g. G2 M/ F# _
件,例如JRUN或者ServletExec,就能支持JSP。著名的Web服务器Apache已经能够支持JSP。
- s; n5 J- A1 y* `- K由于Apache广泛应用在NT、Unix和Linux上,因此JSP有更广泛的运行平台。虽然现在NT操作
8 j- _. |; A# N5 h* x$ Z系统占了很大的市场份额,但是在服务器方面Unix的优势仍然很大,而新崛起的Linux更是来
: m+ r! `2 d$ x/ z% I势不小。从一个平台移植到另外一个平台,JSP和JavaBean甚至不用重新编译,因为Java字节 9 S; Y9 z( l% ~7 A( R
码都是标准的与平台无关的。
# y( r5 K: E( `8 P, @% l8 T7 j. k" B% I& @& `% Y
性能比较
3 K: f& G! r: d* x9 F' J8 |( y$ N7 T: Y' p
有人做过试验,对这三种语言分别做循环性能测试及存取Oracle数据库测试。 & x$ i1 n* W1 C. X2 V, L0 A
! P- n q! O6 H
在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了20000*20000的循环。而ASP 5 l ?0 n2 k" }* R3 K2 ^
、PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒和84秒。(参考PHPLIB) * ^! s) y4 G7 h* K4 f; ^
。 ! x9 H5 f/ H6 ?1 z I8 M
2 J0 ] |6 X" o7 ?2 g O1 N7 p
数据库测试中,三者分别对 Oracle 8 进行 1000 次 Insert,Update,Select,和Delete
5 x5 p# z& I' m4 G, C' q' l: Jsp 需要 13 秒,Php 需要 69 秒,ASP则 需要 73 秒。
& ~- Y3 H) x. ^8 i. w/ q
3 e9 U6 j, Y/ z+ _% w5 v2 V( t/ @前景分析
/ _; p3 c3 o& u' w+ w! p/ z
7 d9 O' U# r% d1 S% `目前在国内PHP与ASP应用最为广泛。而JSP由于是一种较新的技术,国内采用的较少。但在
B# Y+ T8 M: G国外,JSP已经是比较流行的一种技术,尤其是电子商务类的网站,多采用JSP。 ) y3 [! J6 {" O9 ?+ i
采用PHP的网站如新浪网(sina)、中国人(Chinaren)等,但由于PHP本身存在的一些缺 ) o9 U6 L; D8 Y0 V" t# I
点,使得它不适合应用于大型电子商务站点,而更适合一些小型的商业站点。
* x! k' L" g& j" [" Q5 f1 L首先,PHP缺乏规模支持。其次,缺乏多层结构支持。对于大负荷站点,解决方法只有一
1 A: j- N& ~4 G# s% j2 u8 b个:分布计算。数据库、应用逻辑层、表示逻辑层彼此分开,而且同层也可以根据流量分开
* s" ]) p. c' s( V6 _* X: Q,组成二维阵列。而PHP则缺乏这种支持。还有上面提到过的一点,PHP提供的数据库接口支 / v7 j1 N0 n7 c+ a- s
持不统一,这就使得它不适合运用在电子商务中。 ; q$ r2 V Q5 h2 o$ e$ \
ASP和JSP则没有以上缺陷,ASP可以通过Microsoft Windowsd的COM/DCOM获得ActiveX规 6 l ^: b+ S" p9 ?6 g+ j; _4 H
模支持,通过DCOM和Transcation Server获得结构支持;JSP可以通过SUN Java的Java Clas
6 j! f5 a2 W, D7 V, ]* O/ Ys和EJB获得规模支持,通过EJB/CORBA以及众多厂商的Application Server获得结构支持。 ( M& U. l7 Q4 }, u! g
@7 Y S5 D6 Z0 s三者中,JSP应该是未来发展的趋势。世界上一些大的电子商务解决方案提供商都采用J , w" v- a2 _* I( U
SP/Servlet。比较出名的如IBM的E-business,它的核心是采用JSP/Servlet的WebSphere; : q; w# }' K9 _
西方另外一个非常著名的电子商务软件提供商,Intershop。它原来的产品Intershop1 2, 3 & v7 g9 D. i+ O. n& F/ M
, 4占据了主要的电子商务软件份额。它们都是通过CGI来提供支持 的。但去年10月后它推出
% f H o' q' y3 S3 ~: V了Enfinity,一个采用JSP/Servlet的电子商务Application Server,而且声言不再开发传统
9 h3 O# \8 d" g$ S" h( p1 W软件。 2 Q7 }% j: g2 f8 c4 C
% u, S9 \: G1 A a0 i/ ^总之
2 F8 Z/ m3 [/ |! B$ _ASP,PHP,JSP三者都有相当数量的支持者,由此也可以看出三者各有所长。正在学习或
3 X4 j1 r, M$ v* \5 S# R0 T使用动态页面的朋友可根据三者的特点选择一种适合自己的语言。 |
|