应用架构B/S与C/S优劣比较(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/njpjsoftdev/article/details/52355953

三、发展态势分析

1.   C/S最新发展

桌面应用主要以Windows系统和移动设备为主。我们主要讨论windows下的桌面应用发展技术。

l  C/S架构

1)     二层结构

早期的C/S使用两层结构:前端是客户机,完成界面展示、接受用户输入、校验数据有效性,处理业务逻辑,访问数据库并接收结果;后端服务器主要运行数据库系统,提供数据持久化和数据管理。

2)     三层结构

划分为表示层、业务逻辑层、数据存储层三层,增强了C/S架构的可扩展性,提高了系统的可维护性。

l  开发技术/平台

1)     Win32 API/MFC

开发难度大,对开发人员的要求非常高。没有使用过。

2)     Windows Form开发

BorlandDelphi、使用VB.NetC#开发的WinForm

3)     跨平台桌面应用

包括JavaAWTSWINGSWT;此外还有跨平台的桌面和嵌入式UI软件开发平台Qt

4)     WPF应用

微软的新一代桌面应用开发技术,基于DirectX技术的WPF支持2D/3D界面,支持矢量图和流式文本,且做到了分离界面设计人员与开发人员的工作。

5)     UWP应用

通用Windows平台(Universal Windows Platform),是微软用来实现在任意windows10平台下运行,包括win10平板、手机、PC(它会根据设备类型自动选择相适应的UI控件)。

6)     移动终端界面开发

为了保证使用体验,移动终端下的大部分APP都是客户端应用。例如iOS系统使用Swift语言开发应用界面和大部分逻辑,而其核心库底层为c/c++Android系统下的APP使用Java语言开发;C#语言的Xamarin可以同时开发iOSAndroid平台的APP

l  WPF应用开发特点

作为VistaWin7操作系统的开发技术,WPF的主要特点:

1、入门的门槛大大降低

如果有网页前端开发经验,则在开发WPF界面时会觉得非常熟悉,诸如布局、背景、Canvas等非常相似。对于初学者,写出第一个WPF程序和网页程序的学习代价相差不大。

作为一种中间语言(IL),.Net程序支持跨平台运行。但是由于WPF涉及到图形底层技术,如3D、适量图,与图形技术的相关性太大,因此WPF代码目前只能在Windows系统下运行,而且.net的跨平台实现Mono也没有计划移植WPFLinuxWe do not have any plans because theproject is too large and there has not been any serious interest from thecommunity to make this effort move forward.)。

2、进阶学习的要求较高

但是,如果要掌握和精通WPF,自定义控件、制作3D动画,要求具备一定的编程技能,更多地体现在学习,否则就是拿来主义,利用第三方控件快速开发应用。而与网页前端开发相比,WPF的第三方控件和组件要少许多,成体系且成熟的不超过10个,如DevExpressNetAdvantageComponentOneTelerikSyncfusionXceed等。

3WPF应用部署

最好的部署方式是ClickOnce。它提供了Windows软件自动更新机制,把软件发布为一个站点(website)、共享目录、CD,应用软件会自动检查发布位置,并且在有更新时自动升级软件。

利用ClickOnce,可以较好的解决客户端应用的发布与更新问题,避免了传统客户端软件发布和更新非常繁琐的难题。

l  WPF的后续发展

从目前的情况来看,网页应用还无法替代客户端应用程序,只要windows操作系统继续保持着PC桌面的霸主地位,那么WPFUWP将仍然是最好的客户端应用开发技术。

由于Windows平板和手机发展受阻,UWP应用的适用面较窄,而且界面看起来还比较简陋,所以WPF是保持其PC桌面应用领先地位的关键技术。

2.   B/S最新发展

l  B/S架构

B/S使用典型的三层架构:前端负责界面展示、完成数据输入检查;后端负责业务逻辑,提供数据访问并返回结果数据;数据存储管理则提供数据的增、删、改、查等功能。

本质上,B/S也属于C/S的范畴,只不过这里的Client是通用的Web浏览器。所以,B/S的一切与浏览器的能力密切相关。顾名思义,Web浏览器的重点是界面展示,浏览器的功能直接限制了B/S的个性化功能,尤其是与本地硬件设备交互的能力。

一个典型的例子就是浏览器无法在本地存储数据,直到html5的出现才具备了有限的本地数据存储能力,而且没有与本地硬件设备交互的能力。

l  B/S开发技术

B/S应用的开发离不开html + javascript + css,它们组成了网页应用前端的开发技术体系,其中html是构成了页面的骨架,css决定了页面的显示样式和风格,而javascript完成交互控制和少量的逻辑处理,但是前端javascript脚本是无法操纵本地资源的。

而网页后端的开发技术非常多,phpjavapythonc#javascript等都可以用于动态页面生成、业务逻辑实现的开发语言。

l  B/S应用开发特点

浏览器可以渲染UI界面,目前在html5规范下,通过javascript可以较好的实现UI交互。因此,B/S模式下可以较好的分离UI交互和业务逻辑代码。

1、学习门槛低

经过一些简单的学习就可以编写网页前端代码,对于开发专用应用而言,在没有历史代码负担的情况下,其实基本不用考虑浏览器的兼容性问题(可以指定使用chrome浏览器)。

对于后端代码开发,在不考虑性能和安全性问题的前提下,根据应用的特点合理的选择语言和框架。例如,开发一个实时聊天的网页应用,Nodejs就是最佳选择,但是如果业务逻辑复杂、功能模块多,则建议采用djangoasp.netstruct等成熟且应用广泛的框架和平台。

2、进阶要求

网页界面开发的难点主要在前端,分为两块:

一、javascript不是OOP,所有东西都是对象,而且都是有Object衍生而来,需要对原型链有深刻的理解和认识。

二、掌握CSS的难点在于对各属性的理解和对WEB标准化的掌握上,尤其是相同的属性在不同浏览器下可能会有不同的效果。(现在已经有很大的改观)

在掌握了上述两块的知识后,我认为网页前端开发的关键就是选择一套合适的框架来构建自己的应用,例如bootstrap。(自己开发框架还是比较困难的)

对于后端开发,则需要根据项目选型,熟练的掌握框架的内部工作机制。因此,一个开发团队在实际应用开发中不建议同时涉足多种框架。

l  网页应用后续发展

随着html5规范的正式出炉,浏览器可以直接支持音视频播放、访问本地文件系统、具备了本地存储能力、获取地理位置信息的API,更好的HTTP通讯,包括WebSocketHTTP/2.0等。

因此,随着技术标准的发展,网页应用在保持其部署和维护简单、应用范围更广的基础上,将会在运行速度、功能自主性等方面不断前行。使用B/S架构是未来软件开发的必然趋势。

四、总结

总而言之,C/S响应速度快,但是开发和维护成本相对较高;B/S可以实现跨平台,客户端零维护,但是个性能力低,响应速度慢。现阶段,B/S还无法做到完全替代C/S,两者都将长期存在。

采用何种架构,最终还是要对软件需求进行细致了解,来确定使用的架构,避免单纯的追求技术的先进性。

题外话:有一个想法,为了兼具B/SC/S的优点,在开发专用软件时将二者融合,即在C/S的客户端内部集成浏览器,需要追求性能、访问本地资源、个性化交互时由本地代码实现,其他则用web app实现。这个想法已经经过了简单验证,在可行性上没有问题。

猜你喜欢

转载自blog.csdn.net/njpjsoftdev/article/details/52355953
今日推荐