《互联网项目运营分析》第四章 :互联网项目的技术选择与应用
一,技术是基础
二,CGI、ASP、ASP.NET 、PHP、JSP,什么技术好
三,ACCESS、MSSQL、MYSQL、Oracle,什么数据库好
四,AJAX火了和生成静态页面
五,DIV和页面布局
六,服务器技术
七,新技术应用
八,期待新一代的SGML和笔者的研究
九,网站如何选择
一,技术是基础
对于互联网项目运营来说,技术是一个基础,离开了技术,互联网项目就什么也不是。但是光有技术也不行,大家可以看到,很多网站技术先进,但是就是无法盈利。我们现在看到的大门户网站,如搜狐、雅虎等,并没有什么太先进的技术。
在这一章里面将来详细介绍互联网相关技术的长短,以及企业的应用选择。
二,CGI、ASP、ASP.NET 、PHP、JSP,什么技术好
第一个问题是开发开发互联网项目,有那些技术
CGI是Common Gateway Interface(通用网关界面),是一个用于定Web服务器与外部程序之 间通信方式的标准,使得外部程序能生成HTML、图像或者其他内容,而服务器处理的方式与那些非外部程序生成的HTML、图像或其他内容的处理方式是相同 的。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。Perl由于其跨操作系统、易于修改的特性成为了CGI的主流编写语言, 以至于一般的“cgi程序”就是Perl程序。
cgi是目前最稳定的运行方式,因其是独立的进程,而且执行完后自动释放进程,所以稳定性是最高的,如用大量点击方式攻击,攻击完后cgi还能照常运作,而且其性能不变。另一优点就是安全性比脚本高很多, cgi还有一个优点可以和系统底层相互通讯。
cgi的缺点是每一个连接都启动一个进程。很消费系统的资源,每秒支持的击点率不高,在nt或win2000下也就20次/秒左右。asp可以支持200次/每秒。
ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互。是一种简单、方便的编程工具。ASP的网页文件的格式 是.ASP。用ASP做网站的时候当你网站数据变大时候。网站访问速度越来越慢。有人说现在很流行ASP所以相应的ASP脚本安全性差很多,实际上写 ASP的程序的时候如果严格按照书写安全的代码的规范去写,写出来的程序会非常安全。单纯的ASP是不太高效的,真的想要高效的话就必须结合COM+,在 Win32平台下COM+的效率是非常高。这是脚本语言的先天缺陷。
有评论是这样说的:“ASP的入门门槛最低。这按理说应该算ASP的优点,它秉承了微软技术一贯的作风——简单,入门门槛低。也正是因为这一点, 使得大量的Web开发领域的新手能够很快地开发网站。但也正因为这一点,使许多掌握了ASP的一点皮毛知识的人自认为对ASP很懂,结果写出很垃圾的程 序,让别人看了ASP的笑话。”
PHP是Hypertext Pre-Processor(超文本预处理器),它是一种服务器端的HTML脚本/编程语言。PHP语法上与C相似,可运行在Apache, Netscape/iPlanet, 和 Microsoft IIS Web 服务器上。PHP实际上就是“现代版的PERL”,只是名称不同而已。PHP具有和JAVA类似的Class关键字。因为不需要虚拟机,以致速度比 JAVA快5倍。PHP是一种功能强大的脚本语言。
在很多地方流传一种说法:“有人做过试验,对这三种语言分别做循环性能测试及存取Oracle数据库测试。 在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了20000*20000的循环。而ASP 、PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒和84秒。(参考PHPLIB) 。”这个说法很容易误导,大家注意这个“(参考PHPLIB)”,原来是拿别的数据来跟自己测试数据对比,但是这里又没有公开测试环境,比如服务器是否一 样,操作系统是否有可比性,如果在一台奔三的服务上面运行ASP和PHP,然后到一台小型机上面运行JSP,那恐怕很滑稽。
JSP的定义:
JSP是Sun公司倡导许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(scrīptlet)和JSP标记(tag),从而形成JSP文件。
Java 是面向对象的,但速度很慢。而且十分复杂(具有许多层,如JVM,JIT 等等)。Java Servlet 是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。 JSP的优点是跨平台应用,但是缺点也因此而来,在windows平台上面,比不了ASP和ASP.NET,在UNIX平台上面比不了PHP。
ASP.NET做起来快,因为m$给我们封装了很多控件,以及很多现成的模式,
ASP.NET 的优势很明显在于它简洁的设计和 实施。语言灵活,并支持复杂的面向对象特性。在这种意义下,它真正能够与编程人员现有的技能进行互操作。但是ASP.NET是以损失效率为代价的。 ASP.NET 在内存使用和执行时间方面耗费非常大,这大部分归因于较长的代码路径。对基于 Web 的应用程序,这些局限可能是一个严重的问题,因为在 Web 上,您的应用程序可能扩展为每秒成千上万的用户。内存使用率还可能成为 Web 服务器上的一个问题。
整体看来几大开发语言各有优缺点,不能简单评论,公正的评价是将该语言与所需要的环境结合起来:
ASP的应用应该是以VB和COM+为基础支持,以ASP作为脚本开发语言,运行在windows 的IIS服务器上面。对VB和COM+不精通就不要说自己精通ASP。
PHP的应用应该是以C和CGI为基础支持,以PHP作为脚本开发语言,运行在UNIX或LINUX服务器上面。
JSP的应用应该是以JAVA和Java Servlet为基础,以JSP作为脚本开发语言,通过虚拟机运行在各种服务器上面。
ASP.NET的应用应该是以VB(C)为基础,以VB.NET或C#.NET为开发语言,通过调用编译的DLL来运行在windows 的IIS服务器上面。
三,ACCESS、MSSQL、MYSQL、Oracle、DB2,什么数据库好
ACCESS结构简单容易处理,而且也能满足多数的网站程序要求。ACCESS是小型数据库,既然是小型就有他根本的局限性,以下几种情况下数据库基本上会吃不消:
1)数据库过大,一般ACCESS数据库达到50M左右的时候性能会急剧下降!
2)网站访问频繁,经常达到100人左右的在线。
3)记录数过多,一般记录数达到10万条左右的时候性能就会急剧下降!
MSSQL是微软公司开发的一种大型数据库系统,它可以支持的数量达到G的级别,也是微软公司为了与ACCESS高低搭配的一种高端方案。但是他 的缺点也很明显,大型数据库通常都要求速度快,稳定可靠,维护方便。而MSSQL恰好是速度不是最快,连MYSQL都比不了,由于windows平台的原 因,也不是很稳定,操作是比较简单但是经常出现各种莫名奇妙的问题。Windows操作系统有一个先天缺陷,就是不能长时间运行,一般情况下,运行两三天 后性能就大幅度下降,必须重新启动。MSSQL数据库系统对于资源占用是很惊人的,通常情况下,如果单独的数据库服务器,就不推荐使用MSSQL(最少也 要是双CPU)。
MySQL是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。它具有功能强、使用简便、管理方便、 运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL数据库的程序,特别是与PHP更是黄金组合,运用十分广泛。MySQL不支持事务 处理,就这一条让PHP开发者吃了亏,没有视图,没有存储过程和触发器,没有数据库端的用户自定义函数,不能完全使用标准的SQL语法,这都是MySQL 的缺点。
Oracle是这些年来最引人瞩目的数据库系统,他具有很强大的数据处理能力,但是如果是在windows环境下运行Oracle,那么他的性能与 MSSQL相比基本不相上下,如果是在UNIX平台下,则远比只能用于windows平台的MSSQL好得多。不过他的操作也远比MSSQL复杂。
DB2就是IBM开发的一种大型关系型数据库平台,基本应用在海量数据环境下,它支持多用户或应用程序在同一条SQL 语句中查询不同database甚至不同DBMS中的数据。特别是DB2+小型机+UNIX是诸如银行、证券交易所等使用的性价比最高的数据库环境。
四,AJAX火了和生成静态页面
静态页面是指网页内容是提前制作好的,放到网上去,不人为的更改时不会变化的。制作简单,不易更新,一般适于极为简单的宣传。静态页面的优点是容易被搜索引擎收录。
而动态是指网站本身是一个系统,网站的内容是查询数据库返回的内容,平时只要在后台上传、更新内容,在网站的前台立刻就会更新。制作复杂,更新、维护非常容易。现在绝大多数网站都采用动态代码。
用户上网浏览网页时,WEB服务器会判断用户浏览的是动态网页还是静态网页,如果是静态网页,WEB服务器就会把静态网页直接发送给用户,如果是 动态网页,那么,WEB服务器会先在服务器上执行这个动态网页,然后把执行结果发送给浏览用户,因此动态网页消耗服务器的CPU、内存资源会比静态网页多 得多,因此一些大网站都使用静态页面。
同时搜索引擎为了避免陷入死循环,对于索引xxx.xxx?xx=xxx这类的,都不会过于深入.所以,生成html比较好,即便不生成html,用rewrite伪造成html也一样。
Ajax(AsynchronousJavascrīptandXML)是结合了Java技术、XML以及Javascrīpt等编程技术,可以让 开发人员构建基于Java技术的Web应用,并打破了使用页面重载的惯例。使用旧模式,每当用户执行某种操作、向服务器请求获得新数据,Web浏览器就会 更新当前窗口。如果使用AJAX的异步模式,浏览器就不必等用户请求操作,也不必更新整个窗口就可以显示新获取的数据。只要来回传送采用XML格式的数 据,在浏览器里面运行的Javascrīpt代码就可以与服务器进行联系。
Ajax可以让阅读的时候有很好的体验感受,但是这样一来,搜索引擎通常只会搜索第一次导入的那个页面,对于以后的页面视而不见。
最佳的方法就是采用Ajax+生成静态页面,一般内容还是生成静态页面,少数内容可以使用Ajax技术,毕竟讨好搜索引擎是第一位。
五,DIV和页面布局
现在很流行CSS+DIV的方式重新构建网站,因为用这种方法构建的网站访问速度快,占用的带宽小. CSS+DIV只是一种通俗的说法,具体的说应该是制作符合W3C标准的网站所用的语言:XHTML,也就是下一代的HTML.DIV只是布局的方法,做 出来的网页代码简单,虽然页面看起来没有TAB所带来的那么华丽,至少要做出和TAB一样的效果来,要麻烦的多,但是维护起来却是很方便,因为是用CSS定义的样式.TAB制作的网站代码庞大,这是必然的,因为他是形式与内容混合在一起的,WEB标准的网站代码清晰明快,体积小,因为很多形象的东西都在CSS里.。
通常使用CSS+DIV方式需要手工编写代码。
这里推荐使用Microsoft Office SharePoint Designer 2007,也就是FRONTPAGE2007,是目前最好的可视CSS+DIV编写工具。
六,服务器技术
什么样的服务器好,这是一个有意思的问题。
首先是服务器的硬件环境
服务器硬件环境可以分为几大类:
1, 虚拟主机:这种适合小型网站项目,一般访问量每天几千IP、数据大小在几个G以内都可以考虑,成本低,不需要技术人员维护。但是由于对服务器没有控制权,无法实现很多复杂功能。
2, VPS虚拟服务器:这种适合起步的商业项目,操作时看上去像一台独立的服务器,对服务器有部分控制权,需要技术人员简单维护,但是没有核心控制能力。
3, 单服务器:这种适合中型商业网站,如果需要大的存储空间可以考虑磁盘阵列,如果在服务器上安装有MSSQL等大型数据库或者动态调用数据较多,推荐使用双CPU服务器(最好把数据库分装在另一台服务器上面),如果访问量较大,内存和主板总线带宽一定要大。
4, 服务器群集,就是多台服务器一起,这种适合大型商业网站,当其中一台服务器满负荷的时候,转向到另一台服务器。这里有内网转向和外网转向两种模式,前者访问时看不到域名变化,后者访问者会发现域名变化为www1.****.com、www2.***.com等
其次是服务器的操作系统
目前市场流行的服务器操作系统主要有两大阵营,
1,windows系统,是微软公司开发的操作系统,目前代表是windows server 2003,它具有操作简单,维护方便等优点,但是windows先天的缺陷他也同样继承了,如运行时间越长就越慢,系统盘上面堆积大量无效文件,如果连续 运行一周不重新启动,服务器就会慢得让人难以接受。
如果网络项目确定使用ASP、ASP.net、ACCESS或MSSQL数据库,那最佳的选择就是windows 服务器。
2,Unix系统,目前可用的UNIX操作系统有很多,但只有IBM AIX 5L包括了IBM在为全球客户创建业务解决方案中所获得的经验。而且它还通过实现与Linux之间的亲和关系,提供了对64位平台的支持,它可以在所有的 IBM p系列和IBM RS/6000工作站、服务器和大型并行超级计算机上运行。。
如果公司技术力量雄厚,建议使用FreeBSD,FreeBSD可以说是UNIX的一个变种,Yahoo 所采用的 Web Server,是进阶的 BSD UNIX 操作系统,全球十大站点中有七八成的服务器基于FreeBSD,
3,Red Flag Advanced Server系统(红旗Linux)是目前世界上发行最多的LINUX版本,
目前,Red Flag Advanced Server 4.1支持超过500种的商业应用软件,包括DB2、Sybase、Websphere、Weblogic、Netbackup、CA ARCServ、Openview、Tivoli、Domino等企业级关键应用。红旗开发了主机管理工具Rfmin1.1,它由17个工具组成,涵盖了 主机管理的方方面面。Rfmin1.1覆盖了主要的服务器管理工作,实现了三大差异的消除:手工编辑配置文件和应用管理工具之间的差异、Windows系 统管理和 Linux 系统管理之间的差异、本地管理和远程管理的差异。通过这些管理工具,无论是UNIX系统管理员还是Windows系统管理员,都能够高效地管理红旗 Linux服务器,从而降低了管理费用。
在实际中,UNIX和LINUX由于具有非常稳定的性能,特别适合对于服务器性能和稳定要求较高的环境下,它们可以长时间运行几年而不需要重新启 动。特别指出,红旗LINUX这几年发展出乎大家意料之外,特别是它在易操作性方面接近windows系统,是中小服务器优选的LINUX操作系统。
而UNIX具有功能强大但是维护复杂,适合大型网站使用,特别是采用小型机+UNIX是各种高性能网络环境如银行等的必备选择。
第三是服务器的带宽,带宽就是表达速度的,带宽越大,速度越大。例如内存带宽、总线带宽、网络带宽等等都是以“字节/秒”为单位。500人同时在线 的文章类网站差不多带宽占1-3M BPS ,500人同时在线的论坛一般占3-5M BPS,500人同时在线的视频看传输方式的 如果全部通过服务器那至少要30-100M BPS。
七,新技术应用
随着互联网的发展,新的技术也在不断涌现,目前有这么几个方向
1,3D方向,也就是web 3D,互联网3D图形技术。目前,已有几家公司推出了自己虚拟社区及全套的解决方案,如Blaxxun、pointworlds等。它们除了提供虚拟场景 制作以外,还提供:服务器管理,通讯管理,用户管理等功能。Blaxxun公司Virtual Worlds Platform 5.1服务器已经有许多网站用它建立虚拟社区。他们的特点都是采用下载模型和渲染数据+渲染引擎插件模式来显示3维效果,但是目前标准多种,比较有影响力 是:
X3D:由Web 3D Consortium制定,得到大学,政府机构及一些Wed3D图形公司的支持.它是VRML97下一代新的国际标准,有比较广泛的社会基础。
Shockwave3D: 这是Macromedia公司(现在已经被ADOBE公司收购)的Flash插件,有着极为广大的用户群,据说世界上有1亿3千万人安装,Intel把它的Wed3D 图形集成到Shockwave。
2,终端应用方向
终端应用也就是通过互联网来进行各种网络化的实际应用,比如远程操作某些设备,比如在网上控制家里的微波炉做饭。各种软件之间也可以远程同步协作。 也就是从目前的信息传达到信息应用。这里的发展趋势应该是网络技术更多采用编译化的语言作为开发引用,因为单纯的脚本语言已经无法适应。
3,模块化开发方向
随着网络开发的技术越来越复杂,开发工程越来越大,将会出现各种便于二次开发的中间件,比如目前出现的CMS系统就是这样,只需要简单改变一下模版,其中的国产优秀者有动易、风讯等就可以建设像搜狐、新浪那样的网站。
八,期待新一代的SGML和笔者的研究
SGML(Standard Generalized Markup Language),即标准通用标记语言,是1986年出版发布的一个信息管理方面的国际标准(ISO 8879)。该标准定义独立于平台和应用的文本文档的格式、索引和链接信息,为用户提供一种类似于语法的机制,用来定义文档的结构和指示文档结构的标签。
SGML是一种在Web发明之前就早已存在的用标记来描述文档资料的通用语言。但SGML十分庞大且难于学习和使用。鉴于此,人们提出了HTML语言。SGML是XML和HTML的母语言。SGML的覆盖面很广。它几乎涉及人们生活的每一个领域。它被用来描述成千上万中文件。HTML只是其中一种文件类型,是一种在网上最常用的类型。它定义了一种简单而固定且含标识的文件类型。
但近年来,随着Web应用的不断深入,HTML在需求广泛的应用中已显得捉襟见肘,有人建议直接使用SGML作为Web语言。但SGML太庞大了, 于是Web标准化组织W3C建议使用一种精简的SGML版本——XML。XML是SGML的简化版。为了实现更加方便地编写和理解应用程序,更加方便地在 网络上传输信息,更加方便地实现互操作性,XML申略了一些SGML中复杂和不常用的部分。但XML还能和SGML一样通过解析
XML与SGML一样,是一个用来定义其他语言的元语言。与SGML相比,XML规范不到SGML规范的1/10,简单易懂,是一门既无标签集也无语法的新一代标记语言。
目前,SGML表达的还是基于传统平面的出版模式,而HTML和XML就同样变成了只能表述平面信息的内容,这样导致要想实现web 3D就必须使用引擎插件。从目前看来,XML已经基本是SGML在互联网上面应用的最大发挥了。下一代的SGML应该是基于3D和多媒体的,这样我们看到 的就不仅是简单的一些文字图片了,而且也可以不依靠插件就能够实现3D效果。
这里可以透露一点笔者本人正在对此做一些研究,目前已经取得了相应的进展,现在正在整理中,估计再过一年左右就可以公开,本人将其命名为2- SGML,也就是第二代SGML。特点是简化基本规则,增加扩充能力。该版本确定了若干基本扩充准则,用户可以很方便扩充自己的编码规则。在新的2- SGML环境下,用户的各种文档之类全是3D多媒体效果。
笔者现在正在完善TXML,特点是完全使用类似现在的脚本语言,向下兼容来实现3D和多媒体效果,如果是TXML,不光可以兼容现在的XML,还可 以在浏览器里面看3D网页(不光是三维图像)也就是说,我们从浏览器里面看到的全是3D的了。而且不需要装3D引擎,直接用简单的编码规则语言写出3D。 就像HTML里面写出表格等那样。
九,网站如何选择
不同的互联网项目对技术要求也不同。
1,如果你的项目是一般企业网站之类应用,或者能够确定访问量不是很大,那么建议服务器采用虚拟主机方式,开发语言采用ASP+ACCESS。
2,如果你的项目是需要频繁交互,比如论坛、交友等等,建议采用PHP+MYSQL,服务器采用独立服务器或者虚拟服务器。
3,如果你的项目数据量足够大,同时对于系统稳定性没有苛刻要求,可以采用ASP+MSSQL,采用双CPU服务器。
4,如果你的项目对于系统可靠性要求特别苛刻,最好使用PHP+Oracle,服务器采用双CPU服务器。
5, 如果你的项目对于系统可靠性要求特别苛刻,同时反应要求足够快,最好使用PHP+Oracle或者PHP+DB2,或者直接使用编译开发语言,服务器采用服务器群集。
6, 如果你的服务器足够好,你又想对外炫耀的技术力量的话,可以采用JSP+MYSQL,服务器一定要是UNIX或者LINUX操作系统。
一个互联网项目采用技术要注意几点
1, 如果你有好的服务器,同时有好的技术条件,那你什么语言都可以用。语言没有高低之分,但是有适合不同条件之分。例如如果有谁告诉你ASP不行的话,那不妨问他对COM+了解多少,能不能开发相关服务器组件。
每一项互联网应用的语言技术,后面都有一个强大的编译语言作为后盾。
ASP的背后是VB
ASP.NET的背后是VB. Net或者C,但是似乎微软在支持上更多偏向VB. Net
PHP的背后是C
JSP的背后是JAVA
2, 判断技术高手的简单标准
ASP高手:能够熟练使用VB开发COM+。
asp.NET 高手:能够熟练使用VB.NET或C来编写服务器组件。
PHP高手:能够熟练在UNIX/LIUNX环境下使用C。
JSP高手:能够熟练使用JAVA开发互联网环境下的数据库软件。
如果上面的要求做不到,那就不能称为高手。