1. Python+Web
这几天就憋在房子里搞Web编程,进行语言的选择、框架的选择,把头弄得都晕了。因为对Python比较熟悉,先看Python下进行Web编程如何。
Python下的Web框架是最多的,越多就越不容易挑选,你要对每种框架都进行研究后才能给出结论,最后选定Django进行了皮毛的研究。发现真要开发起来还是比较烦人的,涉及的东西太多了。后来又看了看其他轻量级的框架如mod_python,webpy等等感觉容易上手一些。
这只是从技术上进行可行性分析,但想到国内支持Python的Web主机,简直是少了又少,从商用、环境、成熟度角度来看,我们开发短平快的项目不适合用Python。
2. Java+web
既然Python不太适合,那Java如何?Java没的说,那么多人用他肯定有的长处,对我来说呢?我是从C++/Delphi过来的,对Java也不陌生,但总的来说不算太熟,特别是对于J2EE那恐怖的大框架,里面的类库简直太恐怖了,你为了完成一个简单的功能,得用几十个类才能完成。我曾用Struts+Hibernate开发过一个简单的用户自助服务系统,光里面的配置都快把人弄疯了。你正在做相关项目的时候可以费点劲把这些知识拾起来,把开发工具(Eclipse)搭起来,但时间一久就差不多忘了,又得在网上好一番狂搜。就说Eclipse吧,我们要用Hibernate的插件来做Hibernate的配置,数据库的映射等,第一次配置的时候是从按照网上找的资料进行的,等项目开发完了,大家都忙别的事情去了;几个月后要将数据库移植到Oracle,这时候再来搭环境吧,由于在这几个月之内大家都在用其他的语言开发,早就忘了怎么搭了,又得找半天才把环境搭起来。环境搭起来了吧,Hibernate是怎么一回事又忘了,还得拿出《精通Hibernate》进行一次学习。
换个角度,如果我们一直都在用Java开发,这个不是问题,但很多像我们一样的朋友一直在Win32上开发而现在要转到Web下的,并且时不时还要重操旧器(Win32),Java的大框架对我们来说是个很大的“山”。实话来讲,对于小的用于自己产品的项目来说,不用计较开发语言多强大,只要够用就好。因为引进新的开发语言或工具,势必造成人力资源的浪费,而为自己干活不能不考虑成本。结论是:Java框架太大、太复杂,我们要花太大的代价、精力来“利”这个“器”,如果有更好的选择,暂不考虑Java。
3. ASP.net+web
那剩下来的还有什么选择呢?ASP,ASP.Net,C#?对于此ASP类的我是不打算去用的。我也知道有微软强大的Visual Studio开发工具,ASP类的Web开发会如虎添翼,并且ASP类语言入门难度很低,但考虑到我们的产品必须要支持类Unix平台,只这一条就不用考虑ASP类了。但是,具体情况具体分析,对于不要求跨平台的项目我们还是可以选择ASP的。
不选择ASP的另外一个理由是,产品的自身安全性。虽说现在都是卖服务不卖产品,但具体到不同的商业模式可能就不可一概而论了。而ASP本身好像不能进行代码的加密,也就是说你给客户部署的应用,别人能直接修改你的ASP代码。这点我从网上找到的一些信息可以隐约感觉到,一般一个好的网站出来以后,如果用的ASP,那么类似的网站很快就会复制;我们也可以从网上下载到现成的整站代码,几乎不用修改就可以使用了。如果我们的产品采用ASP开发,那竞争对手不就可以直接拿过来换张皮就用,加密好像不怎么好做啊。当然上面所说的ASP加密问题,这个我没具体研究,也许有解决的方案吧。
结论:由于ASP不支持跨平台,没有足够的安全保障,不能选择ASP。
4. PHP+web
4.1. 选择学习PHP
那剩下的选择就不多了,最终目光放在了PHP上。
PHP是个动态脚本语言,由于先学的Python,对动态语言的特点比较熟悉,看到PHP后觉得和Python很类似,有种亲近感。这可能是由于我在比较好的时机看到了PHP,PHP4好像是不支持面向对象的,而我看到的PHP已经到5.2了,全面开始支持面向对象;并且PHP本身就是为Web设计的,你都不能像Python一样单独写个能脱离Web独立运行的程序(也许可以,我没具体研究),对Web的支持应该相当好,怀着对PHP的好奇我进行了PHP的学习。
具体的部署从网上很容易得到,我的实验环境是PHP5.2+Apache2+MySQL。
PHP学起来是很快的,学语言我有经验,一般情况都是从上到下,再从下到上。从上到下是说,先总体了解语言本身,具有什么样的品质、特点;我们拿它能做什么,不能做什么,合适做什么;是面向对象还是面向过程;应用的是否广泛;成功的案例有哪些。只有对总体特性了解后才能决定我们到底学不学,才能清楚如果要学,凭我现在的经验基础用多长时间、什么样的方式来学。
从下到上是说,在具体学习一门语言的时候,先学习语言本身的语法结构。只要有其他语言的基础,这个往往很简单,无非是变量、常量、表达式、流程控制、函数、类、继承、对象、内存管理。我学习PHP只用了两小时,编了几个小程序进行测试后就基本搞定了。
掌握了基本语法后,再学习语言的核心:类库、框架。不同的语言缺省带的类库是不同的,有的多有的少。Python就很多,PHP也不少,Java、.net非常全。类库、框架才是一个语言的精华,掌握了语言常用的框架才算掌握了语言本身。当然,语言的学习最好和实际应用结合起来,可以一边学一边用,这样学习的更扎实,速度也更快。
学习的时候最好能多看别人写的代码,每种语言都不乏很好的教程和代码实例,尽量利用网络资源。
4.2. PHP开发工具
还有最后一点,学习一门语言必须要选择得力的开发工具,不然你的开发效率是上不去的。Java就用Eclipse、JBuilder,.net用Visual Studio,Python用ActivePython的PythonWin,PHP呢?PHP就得用Zend,但Zend是收费的并且还很贵,看情况了,允许就用Zend,不允许就用EditPlus,PHPDev等。
4.3. PHP应用
PHP能直接嵌入到Html中,用法和ASP差不多。也就是_COOKIE,_SESSION,_REQUEST,这给动态网页开发提供了很方便的特性,我觉得这基本上就够用了,但实际工作时你必须考虑分工问题,也就说说把程序员和美工的工作分开,程序员专注于BussinessLogic,美工负责页面设计,但页面中要展示逻辑处理后的结果,这就涉及到怎么样把处理的结果告诉给Html。按道理说用PHP处理的HTML是可以直接嵌入PHP代码的,我们只需把逻辑处理的代码单独放在一个文件中就可以了,HTML包含此文件,然后用输出的变量结果就完了。但人总是很聪明的,早就看到了这个问题,因而好多人就纷纷提出Web的MVC架构,支持PHP的MVC框架也很多。只要用框架你就得熟悉这个框架,这无疑有增加了我们的学习成本。下面就说说我看过的几个框架。
模版框架Smarty:当然还有其他的模版框架,而Smarty用的较多,下载了一个实际例子:ecshop就是基于Smarty;还有bBlog也基于Smarty。Smarty本身很复杂,但对我们来说就几个常用的功能。Smarty提供了一种模版语言,让HTML设计人员不用懂PHP就可以用PHP处理的结果,他规定了一套标签,只要在HTML中用嵌入Smarty的标签而不用嵌入PHP代码就可以了,这为HTML设计人员带来了方便,不需要学习PHP只需掌握几个标签就好了。
但Smarty标签嵌入HTML后,HTML设计人员如果在开发工具如Dreamwaver(DW)中打开HTML的话,看起来就是乱糟糟的一片了,违背了所见即所得的原则,这时可以下载DW的一个Smarty插件来部分解决这个问题。
Smarty除了这个讨厌的问题外还有很多好的地方,比如可以自动管理页面Cache;可以让用户自己订制显示模板;安全性,防止嵌入的标签对整个程序的伤害;速度据说也相当快,和直接用PHP差不了多少。
Smarty缺点是既然作为一个模板框架我们在开发的时候就要遵守它的规则,在编写逻辑的时候,要不停的assign,assign,assign,但这也算清晰,我们也划得来。结论是:模板框架Smarty是值得选择的。
但也有其他的选择,很好玩的是下面两篇文章,你可以细细品味一下:
超越模板引擎,PHP资源模板——模板终结者
PHP还有其他的Web架构象PHPMVC,ZendFramework,FleaPHP等,这些框架只是实现目标的一种途径,我倒是认为能不用框架最好不用,PHP本身的特色就是轻快,PHP+显示模版的方式已经够了,用最简单明了的方式完成工作不是更好吗?
值得注意的是,不用框架不等于不用代码库,千万不能否认PHP成熟代码库的作用,这在PHP里叫PEAR(PHP Extension and Application Repository:PHP扩展与应用库),可参考《用Pear加速PHP程序开发》。
4.4. 结论
最后得出结论:用PHP进行Web开发是首选,开发不采用现有MVC框架,采用PHP+显示模版的方式,快速干净的开发应用。
5. 总结
上面对几种常用的Web编程语言进行了比较,分析的立足点是我自己的需要,也许能代表一部分朋友的情形吧。
应用于公司开发独立的信息化产品、或其他产品(如硬件设备)的辅助软件产品。
不同的应用选择不同的技术,希望和大家进行探讨。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/flynetcn/archive/2007/03/20/1534676.aspx