互联网应用开发之我见
互联网应用开发
随着互联网用户的快速升级,互联网的应用也在迅速膨胀,这个就给了很多软件工程师发挥自己聪明才智的机会,但是,如何才能够快速了解互联网应用开发流程及选用合适的开发工具呢?在新技术和新概念层出不穷的IT世界如何选择合适的技术快速完成开发任务就摆在了广大工程师的面前,经过多年的开发实践和互联网应用运营,我在此总结一下自己的经验,希望能够给进入这个领域不久的软件工程师一个良好的指导,避免走过多的弯路。
(一)应用分类
目前互联网已经覆盖了有线和无线,甚至即将覆盖电视网络,所以针对不同的终端,应用分类也不同,从应用场景可以分为:基于PC终端的、基于智能无线终端的和基于电视机顶盒终端的。
针对这些终端的应用开发差别仅在适应不同终端而要采用不同的开发工具,但是应用的服务器端可以是完全相同的架构,所以下面从客户端及服务器端两个点分别讲述所需要的技术及开发工具。
从上面的网络架构图上基本可以分为三个层面:客户端、代理或者接口服务器、应用服务器。客户端很好理解,就是面向最终用户的各种界面,代理服务器是桥接用户和实际业务逻辑或者应用系统的层面,这些服务器只负责通信和转发请求及数据,可以起到负载均衡和屏闭应用系统的作用,应用服务器层面是实际运行各种应用系统的逻辑层,也是工程师重点关注的层面。其中涉及到开发工作的只有客户端和应用服务器方面,而代理层都有成型的系统支持,只涉及到部署和维护工作。
(二)角色分配、技术领域及开发平台选择1.客户端(1)无线终端
今后无线终端的发展方向是智能终端,虽然系统繁多,但是目前看占有市场份额最大的只有:Apple系列(IPhone、IPad),WebOS,Android,针对这些主流的智能终端系统有不同的开发平台。
l Apple系列是苹果公司自主研发的基于C++语言的开发平台;
l WebOS是基于HTML+javascript的技术;
l Andriod是基于Java的技术;
(2)PC终端
目前PC(含笔记本)还是最主要的互联网应用终端,而且是最为成熟,应用最为丰富的终端,是互联网应用主要的承载体,因为PC终端的操作系统相对固定,应用的界面适配也通过OS实现,所以应用系统开发不用过多的考虑这些方面,而是关注应用逻辑本身。
l 基于浏览器的应用只要适配各种浏览器本身就可以,主流的浏览器为IE6/7/8,Firefox,Chrome,现在的很多开发工具都已经适配了以上的浏览器,所以主要精力放在利用这些开发工具开发相应应用就行,涉及到的工具有:页面文档html,xhtml编辑器,页面修饰工具CSS编辑器,页面脚本代码javascripts、flash编辑器。在这个层面涉及到的角色有UI设计及制作(俗称美工),javascript工程师。开发利器分别是UI设计用的Photoshop,UI制作用的(html,css)Dreamweaver,程序开发目前最好的javascript框架及工具套件是jQuery,flash开发工具是Flex Builer。
l 基于客户端的的应用开发工具分为Linux和Windows系统的,基于Windows操作系统的开发工具为Delphi,VC++,C++Builder等,基于Linux操作系统的开发工具为Eclipse及相关插件。开发客户端要求不仅了解相关工具实现UI的方法,而且必须深入了解进程、线程原理和编程方法,还必须熟悉网络通信的原理和编程方法,另外还要注意,虽然客户端软件完全支持数据库的操作,但是基于web的应用,最好不要使用客户端软件直接访问数据库,而是通过服务器端的应用系统操作数据库,然后将所需要数据通过通信渠道传递给客户端软件。
(3)电视机顶盒
机顶盒目前虽然还不是主流应用终端,但是随着国家三网融合的进程,会逐步成为用户获取信息的一个主要终端的,机顶盒的系统多是是嵌入式Linux,所涉及的开发工具还是以JAVA为核心的,今后的发展和技术演进还得进一步跟踪、学习。
2.服务器端(1)配合及时通信客户端的服务器端应用系统
这种系统是早期C/S架构的沿袭和演化,要求客户端和服务器端建立长久通信连接,而且两个端点的状态变化能够及时通知另一端,典型的开发工具是C++等编译语言,要求能够实现所有业务逻辑,同时管理各项进/线程,还要维护众多客户端系统的状态。
(2)Web应用的服务器端应用系统
这种系统的应用场景为单向内容浏览或者伪实时交互系统,涉及到的技术及开发工具为JAVA、.NET、PHP,针对这些开发环境有不同的开发平台。
l 基于JAVA的开发框架为SSH或者类似的J2EE架构,SSH是目前中/轻量级的企业web应用系统架构中最好的搭配,第一个S代表Struts2,需要熟悉JSP和各种优质的标签库使用方法,推荐使用jQuery标签库,第二个S代表Spring,是一个很好的业务逻辑实现层,也是通过Java语言实现的,H代表Hibernate,是数据持久层,需要熟悉结构化数据映射为面向对象数据的思想和方法,通过这三者的有机结合就能够构建出一个高性能、高可靠性、易维护的应用系统。
l 基于.NET的框架,涉及到的开发工具及平台是统一集成在Visual.net平台上的,其中包括了表现层的ASP技术、逻辑层的C#,C++技术。
l PHP系统目前是web应用系统中占有比重最大的一种,从早期的纯脚本语言演变到了如今的面向对象语言,有很多优秀的框架可供选择,下面列举几个供参考:
n 1.Yii
Yii是一个基于组件的高性能的PHP的框架,用于开发大规模Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主体化,I18N和L10N,Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。而且这个框架的价格也并不太高。事实上,Yii是最有效率的PHP框架之一。
n 2.CodeIgniter
CodeIgniter是一个应用开发框架——一个为建立PHP网站的人们所设计的工具包。其目标在于快速的开发项目:它提供了丰富的库组以完成常见的任务,以及简单的界面,富有条理性的架构来访问这些库。使用CodeIgniter开发可以往项目中注入更多的创造力,因为它节省了大量编码的时间。
n 3. CakePHP
CakePHP是一个快速开发PHP的框架,其中使用了一些常见的设计模式如ActiveRecord,Association Data Mapping,Front Controller以及MVC。其主要目标在于提供一个令任意水平的PHP开发人员都能够快速开发web应用的框架,而且这个快速的实现并没有牺牲项目的弹性。
n 4. PHPDevShell
PHPDevShell是一个开源(GNU/LGPL)的快速应用开发框架,用于开发不含Javascript的纯PHP。它有一个完整的GUI管理员后台界面。其主要目标在于开发插件一类的基于管理的应用,其中速度、安全、稳定性及弹性是最优先考虑的重点。其设计形成了一个简单的学习曲线,PHP开发者无需学习复杂的新术语。PHPDevShell的到来满足了开发者们对于一个轻量级但是功能完善,可以无限制的进行配置的GUI的需求。
n 5. Akelos
Akelos PHP框架是一个基于MVC设计模式的web应用开发平台。基于良好的使用习惯,使用它可以完成如下任务:
◆方便的使用Ajax编写views
◆通过控制器管理请求(request)及响应(response)
◆管理国际化的应用
◆使用简单的协议与模型及数据库通信
你的Akelos应用可以在大多数共享主机服务供应方上运行,因为Akelos对服务器唯一的要求就是支持PHP。因此,Akelos PHP框架是理想的用于发布单独web应用的框架,因为它不需要非标准PHP配置便能运行。
n 6. Symfony
Symfony是一个用于开发PHP5项目的web应用框架。
这个框架的目的在于加速web