当前位置:Linux教程 - Linux - 动态网开发项目的方案选择

动态网开发项目的方案选择



          






    动态网开发项目的方案选择

    杰密 李诚



    最近有机会同位于宾西法尼亚州费城的一个大的医药出版社的网络部一起工作。该部门通过放在因特网上所预定的内容,以及协调公司网址上内容的安排和放置来支持公司的各个销售部门。最终该部门作为连接纽带服务于宾州、纽约、芝加哥和巴尔的摩网上的各个销售和产品管理部门,这些地方实际上都以装有公司服务器的IT部门为基础。
    如此活动的结果,通过大量路径有许多文件找到了进入各部门的途径。大部分通过E-mail到达,一些通过办公室间的邮件在磁盘上传递,一些直接加载到巴尔的摩FTP服务器。当部门间的销售人员和开发者尽量去组织和协调各种内容时,这些行为造成了大量恐慌。除此之外,由于被支持部门所作的最后修改也导致大量要上报的各种文档版本的混乱。我的工作是将各种内容组织在中央应用系统而开发一种过渡的解决方法以减少因文档内容上报行为而产生的混乱。通过建立一个能提供跟踪每个项目名称,管理者、部门、部门代码,以及成本会计代码服务的小型网络应用原型来尽力解决这种混乱。
    由于在下一个季度财政之前新的购买和详细的调查程序限制使得任何新的调查不可能,因此该应用系统需要迅速而便宜地建立起来。它要求运行在部门中很容易得到的标准PC设备上。有经验的系统管理者对该应用系统的技术支持应当是有限的。该应用系统要求使用起来轻便、快捷、简单,能稳定、容易地被部门职员进行维护,他们常持有不赞成技术的观点而从销售的角度处理网络开发。尽管事实是它由IT部门负责,但该部门工作更关注内容的协调。IT部门管理的重点是网络服务器及远程通信。
    目的
    这篇文章来自于我对建立一个基本的、动态的网络应用系统所要求和可用的软件工具调查所得的经验和教训。也同样考虑了商业的和自由的软件。首先,我们将给出一些动态网络应用的构成要素的定义和背景,然后再给出一些可行的技术导向。我的意图是这篇文章能为开发者和将来的开发者开始为他们的网络应用开发需求寻找解决方法时,为他们提供信息启迪。
    什么是动态网址
    先进的网页设计者通常采用一种称作JavaScript的文本语言和一种称为网页-文档目标模型(Document Object Model,即DOM的系统)、HTML、CSS共同在页面上创建动态内容。这些结果有时称为动态的HTML或DHTML。然而,我正在限制该项目建立一个通过与数据库相互作用而产生动态内容的网址的范围。我对这些展现给用户的结果并不十分感兴趣,而更关注于建立一个直观的网络应用系统。项目文本将在服务器上被执行而不是在客户端作为超文本的JavaScript被执行。在此提出的工具和方法并不限制在后来另外的交互特征或文本特征。

    什么是数据库?
    数据被定义为一个综合的词,它的意思是计算机或信息交流系统所处理以产生信息的事实、数、字、符合。在计算机系统中,这些数据项典型的储存在文件中。一个相关文件的收集就是一个数据库。在这些文件中,数据项的记录被组成行和列。在这种情况下,我需要更高级的东西而不仅仅是一种简单的文件收集。
    因此该项目就需要一个相关的数据库管理系统,即RDBMS系统(Relational Database Management System)。RDBMS是一个能把数据按行列作为表格储存的数据包。为了回答终端用户提出的询问各种表格彼此相关。这些询问可通过查询而知道。RDBMS最初是由Codd 于1970在一次学术论文上提出的,直到20世纪70年代中期才开始了商业性的应用。RDBMS对所有的查询,而不管该查询是否要求RDBMS从表格里去检索、添加、更新或删除数据等,都会作出反应。
    有时称服务于网址的RDBMS为后端。而后端用户将看到的网页常被称作前端。通过使用SQL(Structured Query Language)将询问提到后端。简单而言,如果数据需要采集,就需要某种DBMS系统。当前最流行的是通过SQL对查询、命令作出反应的RDBMS系统。

    选择数据库
    Oracle
    已经与字母“数据库”同义的一种产品是Oracle。Oracle(http://oracle.com)极大地促使了当前有关数据库的流行。近几年来,Oracle的数据服务器因完美的特性、迅捷、可靠而备受赞美。Oracle也支持Linux系统,似乎Oracle作为一个平台被提交给Linux系统。
    然而有两个主要原因使得项目中不采用Oracle。一是对硬件的要求超过了被用来开发和服务于这种网络应用系统的机器的能力。通常800MB的磁盘空间需要256MB的内存。二是对于这种规模和暂时的应用而选用Oracle将是非常昂贵的。即使对于使用单一服务器的五个永久注册用户,使用该软件的最低许可证费将是800美元(160美元/用户)。

    MySQL
    也有几个源代码开放的数据库可供开发者选择。这些网址中,在Linux 的开放平台上MySQL (http://www.mysql.org)似乎成为一个非常时髦的选择。MySQL是一个非常快捷的、多线程的、多用户和强壮的SQL数据库服务器。MySQL现在也开放了源代码并同销售和支持Linux 的VA Linux公司形成了策略联盟。在1996年11月MySQL首次向公众发布,可以得到它的源代码。通过向一些不断成长的公司如SGI,ValueClick,Nortel/Insight,Tucows.con,Cisco等公司提供解决方案,MySQL已经证明它是一种快捷可靠的数据库解决方案。
    因此,似乎MySQL更高于本文开始所描述的“低级的”应用系统。它被认为具有大量记录单元且运行快捷,MySQL手册报告它的制造系统超过了50000000个记录。另外似乎开发MySQL的小组和开发PHP的小组之间合作关系不断增加。这两方面的不断加强融合到两种技术开发者们的巨大热情中,它于今年早期在伊朗的一次会议上达到顶点。结果形成了协议以帮助彼此提高产品性能以抓住任何来临的机会,除此之外MySQL库还被PHP4.0打包。
    然而,MySQL确实有一些缺点。缺点之一就是在事项处理。Tim Kientz在7月份为Dr. Dobbs Joural刊物撰写的文章中雄辩而简洁地讨论了该问题。具体如下:
    一个事项是一套相关于数据库的改变。SQL规定一个更新的全体群能发布到数据库,然后作为单元被提交或滚动。这使得你,例如,通过把钱加到一个帐号里的方式转移储存在不同数据库表格帐号里的钱,然后尽量从另外的帐号里减掉它;如果第二次更新操作失败,你可以立即取消所有的改变。

    虽然缺乏事项支持不会马上成为我们应用系统中的问题,然而应用系统中存在的“特征蠕变”的威胁迫使我寻找支持事项的可供选择的系统。而且,MySQL对外来键码仅有有限的支持。而外来键码是相关模型的一个重要概念。这种关系得以表现并可认为是将一套数据表格粘合在一起的“胶”而形成相关的数据库。我认为MySQL另外的缺点是它并不支持子查询。当开发者将一个SQL态嵌套进另一个态时,就会发生子查询。然而我的应用系统较小,在MySQL对外来键码、子查询和事项的支持下可能并不会运行太困难,它仍可作为一种RDBM的选择方案。


    PostgreSQL
    我对MySQL的关注随着小组开发PostgreSQL (http://www.postgresql.org)而有所加强。带有红帽子的船 Red Hat6.2 是PostgreSQL6.5.3版本。该版本已经支持事项和子查询,但它并不扩展支持外来键码。然而PostgreSQL开发小组最近已经发布了支持子查询的数据库7.0.2版本。
    PostgreSQL FAQ也报告了PostgreSQL有当前大型商业化的DBMS所要求的许多特点,如事项、子选择、启动、视窗、复杂联锁等。它还有一些其他数据库所没有的特征,如用户定义类、继承、规则,以及多版本协调控制以减少联锁碰头等。但是这些功能似乎消耗了MySQL所提供的速度。和MySQL相比,PostgreSQL在插入和更新上更慢,主要由于它有事务操作。
    类似于MySQL,而完全相反于Oracl,PostgreSQL要求较少的最低系统需求。PostgreSQL管理者的指南报告说运行PostgreSQL所要求的内存甚至可小到8MB,当内存扩展到96MB或更高时将得到显著的速度改进。将限制你不会有太多的内存。
    检查你是否有足够的磁盘空间。你将需要约30MB的空间作为编辑目录和5MB的空间作为安装目录。一个空的数据库约需1MB空间,否则将占用5倍的一个具有同样数据的文本文件所占用的空间。如果你运行逆行测试,你将临时地需要额外20MB空间。
    我所用的机器能很容易地满足这些系统要求。我并不担心速度下降将会成为问题。我很满意PostgreSQL,它使我增强了对MySQL和Oracle的关注。我决定本项目使用PostgreSQL。

    选择一种文本语言
    随着数据库软件的采用,有许多的文本语言可用在Linux系统。有几种作为一种服务器端的文本语言用于动态的网络应用是较合适的。服务器端的文本语言的目的是提供用户界面,它是用HTML编写并可通过网络浏览而进入,申请或服务器的后端以及申请所采用的数据库紧密连接起来。

    ColdFusion
    一个商业产品,来自Allaire的ColdFusion可作为一种选择(http://www.allaire.com)。Allaire的产品被广泛使用,工作平台的服务器可利用并充分支持Linux平台和Windows NT。作为被称作ColdFusion Studio数据包的部分,它要求在Windows9.X 或Windows NT平台上运行,Allaire也提供了非常良好的开发环境。这些软件都可以从Allaire网页上进行下载或购买而得到。
    ColdFusion数据包的组件被建立以支持ColdFusion Markup 语言(即CFML)。CFML有类似于HTML的语法,它有开始和结束标志,超乎一般的HTML能提供可操作性。这些专门的标志相互混合并被嵌入HTML申请或网页中。ColdFusion服务器协同网络服务器工作以截取这些特殊的标志以允许数据库和服务器相互作用来提供给申请的后端。
    我对开发这个产品和工作平台的印象非常好。它似乎是一个易于创建和使用的强有力的平台。也有一个庞大的使用该程序的网址开发群。我相信当熟悉一门新的语言和软件产品时,与同事们的非正式相互交流也是非常有帮助的。同样的,对于CFML和HTML,这样做也会使新手更容易掌握,操作更快捷。除此之外,ColdFusion还可同对它的正数列进行检查的Apache一起运行。
    其缺点是,该系统要求Linux版的ColdFusion服务器有512MB的随机存取内存,它远高于我的这种应用系统可得的系统能力。在2000年7月17日,在Allaire的网址上显示基于Linux系统的ColdFusion Server4.5专业版价值1295.00美元。建在Windows开发环境下将需要额外的495.00美元。如果你的预算能考虑ColdFusion的许可证费,那么如此选择值得考虑。

    Perl
    在Linux公用平台上Perl值得任何的编程语言所考虑。它似乎已超越了Perl作为一种很少不能处理的文本语言的用途范围。Perl由Larry Wall编写,于1987年首次公布。已于3月份公布了Perl的最新版本V5.6,可从网址http://www.perl.org/ 获得。
    Perl是一个非常成熟和可行的,可作为一种网络文本语言的替代方案。有大量的开发者开放源代码和各种可得的支持。它可和Apache网络服务器紧密的一体化且能利用大部分Linux的分配。然而,我所希望的是找到一个更简便的解决方案以将我的主页附在数据库的后端。Perl是最明显的解决方案,但并不意味着它是最恰当的解决方法。简便准则对我决定检验ColdFusion时有很大影响,这也是在本项目中不使用Perl的部分理由。我要求我的网络应用尽可能少的学习曲线而运行快捷。

    PHP
    PHP是一种源代码开放、被嵌入了HTML的文本语言。PHP不同于作为一种系统管理工具而诞生的Perl,它被设计成从底层就对网页起作用。它似乎借用了在PHP之前的许多编程语言,包括Perl和C语言。PHP FAQ讨论了PHP和Perl之间的不同点。具体如下:
    同Perl相比,PHP的最大优点是它被设计成作页面的文本语言,而Perl被设计成处理更多东西,正因为如此,使Perl变得更复杂。Perl的灵活性和复杂性使代码书写更容易,但编码员要花大量时间去阅读。而PHP很少如此混乱,它有更严格的格式而不失灵活性。同Perl相比PHP更容易和当前的HTML一体化。PHP有许多Perl所具有的构造、语法等好的功能性,而不会使它变得和Perl一样复杂。Perl是一种非常可靠和正确的语言。但PHP正在迅速成熟(http://www.php.net/FAQ.php#9.4)。

    从上述讨论中可见,似乎PHP将是最适合我正在建立的应用系统。已经有一些关于PHP如何同ColdFusion比较的讨论。PHP FAQ对Mike Sheldon所设计的两个数据包的对比给了一个很好的总结和观点。Mike的比较工作看来已经提交在网上http://www.marc.theaimsgroup.com/。他指出了一些ColdFusion没有考虑的强项和功能。其中最令人感兴趣的是用在数据库交互上的抽象层。在ColdFusion中,开发者用ColdFusion管理器去建立数据源。当考虑用于影响数据源的CMFL标志时无论源是Oracle还是ODBC联系都是不合理的。在PHP中,我们想要使用的每种数据库都有一套对选择的数据库所特有的函数。Mike也指出了ColdFusion被称作事实(Verity)的一种搜索引擎捆绑在一起,但它并没有一种综合的开发环境。
    我非常惊讶地听到PHP有两个较弱的方面,即错误处理和处理日期的能力。由于这种应用系统的简便特性,我并不认为这些弱点将成为问题。我只是想用某个数据库,并且也有一套函数相应于每个数据库。我不必了解ColdFusion所提供的作为一种“红利”的数据提取。最后,我为该应用系统选择了四种组件:GNU/Linux开放系统、PostgrSQL RDBMS系统、PHP服务端网络文本语言工具及Apache网络服务器。
    结论
    对于Linux开放系统,有许多可供选择的软件。所有可选对象都有出自开发者最初特殊要求所形成的强项和弱点。我愿意推荐给那些有兴趣使用某个数据包的人员以采用合理的方法来决定哪个数据包最适合他们的要求。开发人员和咨询人员的价值部分在于他们对特殊技能的掌握。通过特别程序他们希望去影响对信息技术解决方案的采用,理解这些特别程序应当是主要的关注点。由于可得到许多高品质的可选方案来解决给定的信息技术挑战,因此去抓住和处理项目中的关键问题将会检验技术人员的能力,而它最终将决定项目的成功与失败。
    对于我的项目,结合Linux,Apache,PostgreSQL和PHP是合适的。这种结合可能是不适合所有的项目的。然而,我希望你从这篇文章中得到一点启迪以便于你的下一个项目方案选择调查。




     

     

    发布人:netbull 来自:Linux世界