
web应用程式
Web应用程式是一种可以通过Web访问的应用程式,程式的最大好处是用户很容易访问应用程式,用户只需要有浏览器即可,不需要再安装其他软体。
基本介绍
- 中文名:web应用程式
- 架构优点:浏览器/伺服器架构
- 套用:对资料库进行处理,管理信息系统
- 套用扩展:信息化,网际网路,移动化
- 简称:Webapp
概述
应用程式有两种模式C/S、B/S。C/S是客户端/伺服器端程式,也就是说这类程式一般独立运行。而B/S就是浏览器端/伺服器端应用程式,这类应用程式一般藉助IE等浏览器来运行。WEB应用程式一般是B/S模式。Web应用程式首先是“应用程式”,和用标準的程式语言,如C、C++等编写出来的程式没有什幺本质上的不同。然而Web应用程式又有自己独特的地方,就是它是基于Web的,而不是採用传统方法运行的。换句话说,它是典型的浏览器/伺服器架构的产物。
一个Web应用程式是由完成特定任务的各种Web组件(web components)构成的并通过Web将服务展示给外界。在实际套用中,Web应用程式是由多个Servlet、JSP页面、HTML档案以及图像档案等组成。所有这些组件相互协调为用户提供一组完整的服务。
开发过程
步骤一:分析
开发一个web套用的第一步是分析你的需求。你此时应该定义出一个儘量周全的你的套用应该提供的功能清单。如果是你为一个客户做这些工作,你需要明白他们想要什幺(要确保你们对方都知道对方在说些什幺)。从你们的讨论中,你能总结出需求和软体规格。你即使是为自己开发,我也建议你把希望这个web套用能够做的功能写下来。
步骤二:设计
一旦你弄清楚了这个web套用需要做哪些事情,你就可以开始设计了。这个步骤通常会反反覆覆进行很多次,每一次都把设计细化一些。你第一要做的是画出页面流程图(画在纸上,或使用软体工具,凭各自所好吧。我喜欢用纸,这样我可以做更快速的改变)。页面流程图通常是很抽象的黑白绘画,画出你将要实现的web套用的样子(你可以加一些色彩,但儘量保持简单)。
这个步骤能够让你知道你的套用最终会是个什幺样子。跟37signals倡导的相反,我建议使用一些词语描述,适度细化。当我想到一个很好的想法时,或想到事情该如何做时,我会把它标注到纸上(例如,当点击这个按钮时应该使另外一个元素改变或隐藏,我会把这写在流程图上)。
当你对做出的草图满意后,你可以开始製作实体模型了。
实体模型仍然是些图案,但有色彩和细节。最终的实体模型看起来应该像你将要实现的web套用的一个截屏图。如果你为一个客户开发,他会看看这些东西,并给你他的认可。然而,很多人都喜欢跳过这一步(大多数都是非设计人员),他们喜欢直接奔向网页原型。
实体模型仍然是些图案,但有色彩和细节。最终的实体模型看起来应该像你将要实现的web套用的一个截屏图。如果你为一个客户开发,他会看看这些东西,并给你他的认可。然而,很多人都喜欢跳过这一步(大多数都是非设计人员),他们喜欢直接奔向网页原型。
原型是用HTML开发出来,使用CSS渲染(有时也是有Javascript)。页面布局要做出来,连结能够点,颜色,字型,字型大小要设定好(如果你做了实体模型,这个会很容易)。这一步非常的重要,因为这里所有的东西都能用于你最终的套用中。如果允许的话,在你的原型上做一些可用性测试,从长期的效果来看,这能使你避免大量的失误。
在这个步骤的最后,你基本上就知道了你的web套用是如何组织到一起的了。登录页面有些什幺,用户如何从主页转向到各个页面。
步骤三:实现选择一个框架
现在我们已经知道了要去开发什幺东西,那就要把它做出来。这一部分的工作很多,你大部分的时间都要花在这个上面。你第一个要做的决定是如何着手,採用什幺样的技术,什幺框架。你有很多选择的余地,你需要选出一个适合你的。下面是一个最常用的框架的列表:
- ASP.NET
- PHP 上的任何一个流程的框架
- Python with Django
- Ruby on Rails
没有一个明确的标準说哪个框架最好。它们都各有不同,每个都有自己的长处。最重要的是你要知道它们任何一个都能让你开发出好用的web套用。
开发
一旦你知道了如何去开发,那就要甩开臂膀开干了。这个开发工作可以看作有很多块,但说到底,这都是标準的编程活动了。在后台,你要创建类,对象,服务,过程,以及持久层来把这些对象保存到资料库中。后台是整个套用的核心,对任何套用来说,它跟普通的编程没有什幺区别。接着是前台的开发,你现在编写的代码才是真正给用户使用的操作界面。你把后台的程式和原型界面集成到一起,把系统各部分集成到一起。你还可以把你在开发过程中想到的一些很炫的小功能用JavaScript实现。
再说一次,有很多种途径可以实现后台程式。建议你去读一读跟你选择的框架相关的资料,弄清楚如何实现这一部分的工作。通常,这些知识会跟面向对象编程有关,但有些框架正在慢慢的向领域驱动设计发展。
步骤四:打磨抛光
现在应用程式已经开发出来,各个独立的模组也集成到了一起。你需要通过测试来确保你在步骤一中定义的需求和软体规格是否被实现(这个问题在你开发的整个过程中都要记在脑中)。你要确保那些愚蠢的用户不能通过试图做一些你还没有实现的操作而把你的套用弄坏(参考白盒和黑盒测试)。你同时还要确保你的程式能够在各种浏览器里(希望不是IE6)都能正确的运行。
现在也是你做一些小的调整,改进你的应用程式给人的感觉的时候,让它趋于完美。
步骤五:发布和后续工作
这最后一步(但不是就此完结)是发布你的套用,让用户能够真正使用它(如果这个套用是个公众开发的套用,别忘了做新闻宣传)。如果你愿意,先发布一个Beta版,这样只有一小部分用户能够发现你的套用里的大问题(因为你的程式里肯定会有bug),他们会帮助你改进程式的质量。不要忙着增加功能,要专注于把你目前的程式变的稳固。
当经过了beta阶段,你的程式已经变得十分的稳固,听取用户反馈的意见,自己试用一下自己的套用,你可以开始思考如何使套用变的更好。找出不和谐的地方,消除掉。以后每次的叠代都要经过上面所说的五个步骤,但就像我最初说的,你现在已经有了一个可以运行的应用程式,你很容易直接在心里完成这些步骤,直接奔向在代码里测试你的功能。
优点
- 网路应用程式不需要任何複杂的“展开”过程,你所需要的只是一个适用的浏览器;
- 网路应用程式通常耗费很少的用户硬碟空间,或者一点都不耗费;
- 它们不需要更新,因为所有新的特性都在伺服器上执行,从而自动传达到用户端;
- 网路应用程式和伺服器端的网路产品都很容易结合,如email功能和搜寻功能;
- 因为它们在网路浏览器视窗中运行,所以大多数情况下它们是通过跨平台使用的 (例如Windows,Mac,Linux等等)
缺点
- 网路应用程式强调浏览器的适用性。如果浏览器方没有提供特定的功能,或者弃用特定的平台或作业系统版本(导致不适用),就会影响大量用户;
- 网路套用依靠网际网路远程伺服器端的套用档案。因此,当连线出问题时,套用将不能正常使用。但是,如果使用HTML5 API,这些套用就可以被下载安装而可离线使用。Google Gears,就是一个好例子;
- 许多网路应用程式不是开源的,只能依赖第三方提供的服务,因此不能针对用户定製化、个性化,而且大多数情况下用户不能离线使用,因而损失了很多灵活性;
- 它们完全依赖套用服务商的可及性。如果公司倒闭,伺服器停止使用,用户也无法追索以前的资料。对比而看,即使软体製造商倒闭了,传统的安装软体也可以继续运行,儘管不能再更新或有其他用户服务;
- 相似地,提供方公司对软体和其功能有了更大的控制权。只要他们愿意就能为软体添加新特性,即使用户想等bugs先被解决再更新。跳过较差的软体版本也不可能了。公司可以强加不受欢迎的特性给用户,也可以随意减少频宽来削减开支。当然,公司会儘量地讨用户欢喜——只在有竞争者提供更好的服务与方便的转接性的情况下。否则用户别无选择,只能默默承受;
- 公司理论上可以检索任何的用户行为。这有可能引起隐私安全问题。
B/S架构优点
浏览器/伺服器架构(Browser/Server,简称B/S)能够很好地套用在广域网上,成为越来越多的企业的选择。浏览器/伺服器架构相对于其他几种应用程式体系结构,有如下3方面的优点:
(1)这种架构採用Internet上标準的通信协定(通常是TCP/IP协定)作为客户机同伺服器通信的协定。这样可以使位于Internet任意位置的人都能够正常访问伺服器。对于伺服器来说,通过相应的Web服务和资料库服务可以对数据进行处理。对外採用标準的通信协定,以便共享数据。
(2)在伺服器上对数据进行处理,就处理的结果生成网页,以方便客户端直接下载。
(3)在客户机上对数据的处理被进一步简化,将浏览器作为客户端的应用程式,以实现对数据的显示。不再需要为客户端单独编写和安装其他类型的应用程式。这样,在客户端只需要安装一套内置浏览器的作业系统,如Window98或Windows2000或直接安装一套浏览器,就可以实现伺服器上数据的访问。而浏览器是计算机的标準设备。
相关信息
套用
理解了什幺是浏览器/伺服器架构,就了解了什幺是Web应用程式。常见的计数器、留言版、聊天室和论坛BBS等,都是Web应用程式,不过这些套用相对比较简单,而Web应用程式的真正核心主要是对资料库进行处理,管理信息系统(Management Information System,简称MIS)就是这种架构最典型的套用。MIS可以套用于区域网路,也可以套用于广域网。基于Internet的MIS系统以其成本低廉、维护简便、覆盖範围广、功能易实现等诸多特性,得到越来越多的套用。
套用扩展
信息化,网际网路,移动化,云计算的不断发展,使得公司的业务需求越来越多。因此很多公司的页面因为缺乏高度的可扩展性,因而流失了大量的用户。如果你不希望重蹈这些公司的覆辙,你就急需要找到一条可以扩展自己web套用的途径。
对Web套用来说,扩展能力很重要,随着用户群和工作量的增加,处理器在增加,它应该能够进行扩展。对于Java套用来说,扩展更複杂,不只是简单的购买和安装20个新的处理器就可以的。然而,Java平台能够也确实支持套用扩展,通过外围设备语言,例如Scala、Clojure和Groovy。利用JAVA程式语言,开发者很难使JAVA套用进行线性扩展。
另外,按需的云计算本质使得可扩展的Web应用程式融入到了各种规模的业务中。进入到这个领域不能说没有障碍,即使是很小的公司得到这类计算能力也很难,而且数据存储一度曾经只适用于企业级用户。这使你得到想要的伺服器空间,不仅比以往更便宜,而且更容易。云计算可以订购更多的资源,而且就像行车路过订购快餐一样方便。