• 互联网应用开发之我见


    互联网应用开发 随着互联网用户的快速升级,互联网的应用也在迅速膨胀,这个就给了很多软件工程师发挥自己聪明才智的机会,但是,如何才能够快速了解互联网应用开发流程及选用合适的开发工具呢?在新技术和新概念层出不穷的IT世界如何选择合适的技术快速完成开发任务就摆在了广大工程师的面前,经过多年的开发实践和互联网应用运营,我在此总结一下自己的经验,希望能够给进入这个领域不久的软件工程师一个良好的指导,避免走过多的弯路。 (一)应用分类 目前互联网已经覆盖了有线和无线,甚至即将覆盖电视网络,所以针对不同的终端,应用分类也不同,从应用场景可以分为:基于PC终端的、基于智能无线终端的和基于电视机顶盒终端的。 针对这些终端的应用开发差别仅在适应不同终端而要采用不同的开发工具,但是应用的服务器端可以是完全相同的架构,所以下面从客户端及服务器端两个点分别讲述所需要的技术及开发工具。 从上面的网络架构图上基本可以分为三个层面:客户端、代理或者接口服务器、应用服务器。客户端很好理解,就是面向最终用户的各种界面,代理服务器是桥接用户和实际业务逻辑或者应用系统的层面,这些服务器只负责通信和转发请求及数据,可以起到负载均衡和屏闭应用系统的作用,应用服务器层面是实际运行各种应用系统的逻辑层,也是工程师重点关注的层面。其中涉及到开发工作的只有客户端和应用服务器方面,而代理层都有成型的系统支持,只涉及到部署和维护工作。 (二)角色分配、技术领域及开发平台选择1.客户端(1)无线终端 今后无线终端的发展方向是智能终端,虽然系统繁多,但是目前看占有市场份额最大的只有:Apple系列(IPhoneIPad),WebOSAndroid,针对这些主流的智能终端系统有不同的开发平台。 l Apple系列是苹果公司自主研发的基于C++语言的开发平台; l WebOS是基于HTML+javascript的技术; l Andriod是基于Java的技术; (2)PC终端 目前PC(含笔记本)还是最主要的互联网应用终端,而且是最为成熟,应用最为丰富的终端,是互联网应用主要的承载体,因为PC终端的操作系统相对固定,应用的界面适配也通过OS实现,所以应用系统开发不用过多的考虑这些方面,而是关注应用逻辑本身。 l 基于浏览器的应用只要适配各种浏览器本身就可以,主流的浏览器为IE6/7/8FirefoxChrome,现在的很多开发工具都已经适配了以上的浏览器,所以主要精力放在利用这些开发工具开发相应应用就行,涉及到的工具有:页面文档html,xhtml编辑器,页面修饰工具CSS编辑器,页面脚本代码javascriptsflash编辑器。在这个层面涉及到的角色有UI设计及制作(俗称美工),javascript工程师。开发利器分别是UI设计用的PhotoshopUI制作用的(htmlcssDreamweaver,程序开发目前最好的javascript框架及工具套件是jQueryflash开发工具是Flex Builer l 基于客户端的的应用开发工具分为LinuxWindows系统的,基于Windows操作系统的开发工具为DelphiVC++C++Builder等,基于Linux操作系统的开发工具为Eclipse及相关插件。开发客户端要求不仅了解相关工具实现UI的方法,而且必须深入了解进程、线程原理和编程方法,还必须熟悉网络通信的原理和编程方法,另外还要注意,虽然客户端软件完全支持数据库的操作,但是基于web的应用,最好不要使用客户端软件直接访问数据库,而是通过服务器端的应用系统操作数据库,然后将所需要数据通过通信渠道传递给客户端软件。 (3)电视机顶盒 机顶盒目前虽然还不是主流应用终端,但是随着国家三网融合的进程,会逐步成为用户获取信息的一个主要终端的,机顶盒的系统多是是嵌入式Linux,所涉及的开发工具还是以JAVA为核心的,今后的发展和技术演进还得进一步跟踪、学习。 2.服务器端(1)配合及时通信客户端的服务器端应用系统 这种系统是早期C/S架构的沿袭和演化,要求客户端和服务器端建立长久通信连接,而且两个端点的状态变化能够及时通知另一端,典型的开发工具是C++等编译语言,要求能够实现所有业务逻辑,同时管理各项进/线程,还要维护众多客户端系统的状态。 (2)Web应用的服务器端应用系统 这种系统的应用场景为单向内容浏览或者伪实时交互系统,涉及到的技术及开发工具为JAVA.NETPHP,针对这些开发环境有不同的开发平台。 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编写,并有着完善的库引用以及全面的教程。从MVCDAO/ActiveRecordwidgetscaching,等级式RBACWeb服务,到主体化,I18NL10NYii提供了今日Web 2.0应用开发所需要的几乎一切功能。而且这个框架的价格也并不太高。事实上,Yii是最有效率的PHP框架之一。 n 2.CodeIgniter CodeIgniter是一个应用开发框架——一个为建立PHP网站的人们所设计的工具包。其目标在于快速的开发项目:它提供了丰富的库组以完成常见的任务,以及简单的界面,富有条理性的架构来访问这些库。使用CodeIgniter开发可以往项目中注入更多的创造力,因为它节省了大量编码的时间。 n 3. CakePHP CakePHP是一个快速开发PHP的框架,其中使用了一些常见的设计模式如ActiveRecordAssociation Data MappingFront 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应用的开发以及维护,减少重复的编码工作。 Symfony的系统需求不高,可以被轻易的安装在任意设置上:你只需一个UnixWindows,搭配一个安装了PHP5的网络服务器即可。它与差不多所有的数据库兼容。Symfony的价位不高,相比主机上的花销要低得多。 对于PHP开发者而言,使用Symfony是一件很自然的事,其学习曲线只有短短一天。干净的设计以及代码可读性将缩短开发时间。开发者可以将敏捷开发的原理(如DRYKISSXP等)应用在其中,将重点放在应用逻辑层面上,而不用花费大量时间在编写没完没了的XML配置文件上。 Symfony旨在建立企业级的完善应用程序。也就是说,你拥有整个设置的控制权:从路径结构到外部库,几乎一切都可以自定义。为了符合企业的开发条例,Symfony还绑定了一些额外的工具,以便于项目的测试,调试以及归档。 n 7. Prado PRADO团队由一些PRADO狂热者组成,这些成员开发并推动PRADO框架以及相关项目的进行。 PRADO的灵感起源于Apache Tapestry。从04年开始,PRADO成为SourceForge上的开源项目之一。这个项目目前进展到了3.x版本。 n 8. Zend 作为PHP艺术及精神的延伸,Zend框架的基础在于简单,面向对象的最佳方法,方便企业的许可协议,以及经过反复测试的快速代码库。Zend框架旨在建造更安全,更可靠的Web 2.0应用及web服务,并不断从前沿厂商(如GoogleAmazonYahooFlickrStrikeIronProgrammableWeb等)的API那里吸收精华。 n 9. ZooP Zoop PHP框架,意为Zoop面向对象的PHP框架。 这是个稳定,可伸缩并可移植的框架。从诞生到现在的5年间,已经在不少产品开发中被使用。Zoop是一个快速,有效并干净的框架。它的伸缩性很好,你可以只安装你需要的功能。 对代码并不很熟悉的开发者也可以通过Zoop快速的开发安全的web应用。熟练的开发者则可以更加将Zoop的弹性利用到极致。 Zoop建议将displaylogic以及数据层(MVC)分开使用。 Zoop由很多组件和项目集合而成,其中包括smartyprototype AJAX框架,PEAR模块等。高效的核心组件提供了很多你原本需要自己编码来实现的功能。Zoop内置的纠错功能可以通过配置实现生产环境下的错误日志生成,这个错误日志提供了很多信息,可读性很高,可以更轻易的寻找并排除错误。 Zoop的一个特别之处在于其GuiControls,在PHP中是一个相当革新的想法。它提供了很多form widgets与验证完整的集合到一起,并形成了一个可以轻松打造个性化GuiControls的框架。 n 10. QPHP QPHP,意为快速PHP,它是一个与ASP.NET类似的MVC框架。基本上它是这样一个情况:整合了JavaC#的美感除去了在其他PHP框架中使用的Perl形式的意义含糊的语言大量基于OOP的概念 以下方面只涉及到部署和配置,基本不需要大量开发,承担该工作的角色是运维工程师。 (3)数据库 数据库的选择也非常丰富,主要包括成熟的大型商业数据库和开源的高性能数据库,Windows平台上最好的数据库是SQL Serverlinux上开源的数据库是MySql,企业级应用的商业数据库是Oracle,当然还有其他很多的数据库可供选择,但是针对互联网应用所占比重不大,在此不逐一说明。 (4)Web服务器 Web服务器分为静态和动态两种,静态高性能服务器最常使用的是NginxApache,动态服务器最常使用的是ASP(基于Windows .NET系统)、Tomcat(基于JavaPHP)、Resin(基于Java),通过动静态Web服务器的结合可以提供动静态复合功能的Web应用。 (5)缓存服务器 这层服务器是进一步提高Web应用系统响应效率的有效模块,通过这个层面可以将来自客户端的数据请求直接从缓存服务器提供出去,而不需要多次访问Web应用系统,从而提高效率和降低Web服务器的负载。缓存包括静态页面及资源缓存、文件缓存、数据缓存几个方面: n 静态页面及资源缓存采用的系统是Apache代理服务器及Squid等系统; n 文件缓存主要采用分布式文件系统及分级备份策略系统; n 数据缓存可以选用memcached 综合以上所述,互联网应用系统开发的过程及分工基本如下: 序号 过程 承担角色 1. 需求分析 架构师及产品设计人员; 2. UI设计 美工及产品设计 3. 页面制作 美工及产品设计 4. 系统设计 架构师 5. 客户端开发 Delphp,C++,javascript,Apple,Andriod工程师 6. 服务器端开发 ASPC#C++PHPJAVAJSP工程师 7. 数据库设计及维护 架构师,维护工程师 8. 系统部署及维护 维护工程师
  • 相关阅读:
    JavaWeb-RESTful(一)_RESTful初认识
    【算法】简单题_球弹跳高度的计算
    【算法】简单题_鸡兔同笼问题
    【算法】贪心算法_节目时间安排问题
    SVN_SVN的基本认识
    JavaWeb_(视频网址)_二、用户模块1 注册登陆
    【知识库】-数据库_MySQL性能分析之Query Optimizer
    【知识库】-数据库_MySQL之高级数据查询:去重复、组合查询、连接查询、虚拟表
    【知识库】-数据库_MySQL之基本数据查询:子查询、分组查询、模糊查询
    【知识库】-数据库_MySQL常用SQL语句语法大全示例
  • 原文地址:https://www.cnblogs.com/gxldan/p/4066788.html
Copyright © 2020-2023  润新知