博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
接口和逻辑--多进程或单一进程
阅读量:5881 次
发布时间:2019-06-19

本文共 1943 字,大约阅读时间需要 6 分钟。

大家好,所有的知识,我要为大家介绍的所有WINCE/windows触摸屏DUI开源框架constvar()在发展过程中比较讨论价格满足值问题。

 

本文要讨论的是业务逻辑与界面的实现与进程数量划分的一些关系.

 

一.单进程

对于比較复杂的应用程序,有可能包括比較多的功能独立的模块,如果用单进程去实现。即全部业务+全部界面都在此进程中。看上去是最简单的.由于:

1.      单进程就没有进程间通讯, 程序之间的通讯相对来说是比較麻烦。跟人与人打交道一样。都是耗时专业户.

2.      界面能够高效的訪问业务数据,而且数据界面渲染缓冲等都仅仅须要有一份,会大量结省内存空间.

3.      执行时更高效.同上所述,由于省去了通讯与数据同步及多份数据拷来拷去的过程等等,理论上单进程执行起来是更高效的,实际上。假设是用DIRECTUI的话。效果差异能够达到能感受得到的级别.单进程仅仅须要一个真窗体即可了.更不用一会儿SHOW一会儿HIDE.

4.      如果实现的程序猿有一定经验。能够在单进程内更easy把业务和逻辑分离得比較好,在这里必须强调的是,业务和逻辑的分离度与在不在同一个进程之内是没啥关系的.之所以说它更好分。是由于原理简单的东西本来就比复杂的东西好分。

 

         单进程的缺点也非常多,比方:

1.      须要开发或维护人员对整个应用程序的全部功能有一个全局总体性的认知.这就让程序的维护和扩展复杂度添加了.

2.      更麻烦的是,对于任一模块的改动都将影响到整个程序.光每次所有编译还算轻的。一但出错,就全崩了。由于仅仅有一个程序,崩了就啥都没有了,问题也更难定位。

3.      实际因人为因素可操作性差,功能会耦合得比理论大得多。改动扩展会很不便.对于须要定制频繁的软件系统来说。此问题就会凸显出来.软件的版本号也会变得很复杂。尤其不同版本号之间差异比較很麻烦.

4.      最关键最重要的是。单进程在多人协作式开发时缺点超级明显.不利于有专长的程序猿干自己专长的事情。也会添加程序猿之间的交互时间.

 

所以单进程这样的,属于软件总体功能不多,功能需求添加不大,而且开发者较少且单兵作战能力极强的项目中.最好不要多于2个人。我觉得1个人最好.

 

 

二 多进程,每一个进程都带自己的UI

         为解决单进程的缺点,把模块按功能划分,独立的模块各自有自己的EXE或者是相关的模块组成一个EXE. 这样单进程的大部分缺点就得到了解决. 针对单个模块的更新也更加方便了.改动。版本号问题也简化了,团队合作也更方便了等等.

可是单进程那些长处同一时候也没了。 比方带来了进程间通讯, 交流是最复杂的,一交流就须要协议(规则),一有协议就有无节操的调试.非常easy出现故障一个人改不了要多个人同理处理这样的奇葩的情况。要是相互协作没那么愉快,能够说项目极不好进展.我认为能一个人做的事,千万不要让2个以上的人去做.

         还有假如每一个进程相应的模块(1个或2个以上)都带有UI的话。那UI缓存也会增多.程序间切换不便和低效就不用再累述了.光去控制进程的前台后台,窗体的前前后后,哪个模块优先级高这些都是一大堆的新问题。

        

         但整体来讲,这样的多进程方式比单进程普遍得太多了.由于模块更easy趋于稳定。出啥问题,谁崩了也一目了然.不管是开发,维护的速度,稳定性,都是比单进程的有优势的.所以这一种应该说是主流.由于复杂没关系,仅仅要不是没完没了就能够了。相对来说,单进程就更像是没完没了类型的。

 

 

三 多进程。一个UI进程, N个业务进程

相对于方式二。此种实现方式更加极端一些.它有一个就极为突出的的长处是更利于功能模块进程的稳定.由于仅仅有功能,没有UI,就不用谈啥界面分离了都,仅仅要功能需求不改,稳定了就是稳定了,有问题也是改一个少一个.UI改变成啥样都不会影响到功能.

底层业务相对于界面来说需求变动是小的.业务easy稳定。而越上层的界面需求变化是非常大的.这样分法有利于业务模块的稳定.而把需求定制多的界面放在单独的进程中。在整个系统实现定制需求的时候更简单.

同一时候。界面切换和画图缓冲啥的也与单进程一样高效低碳了.但它的最明显缺点是进一步复杂了通讯.能够说复杂了太多,原本同一个进程带UI。UI模块直接訪问本进程的数据.

如今由于分离,也须要通过通讯来实现.数据多存了2份不说,效率,多出来的工作量和添加的复杂度是可想而知的.

         可是一但功能稳定。界面定制就比前2种有优势了,由于影响功能模块的概率比其他2种都低非常多非常多。

 

总的来说。 一和三必需要有一个真正的高手才干HOLD住。HOLD住了,这2种方法我想比两个好更好, 但该方法需要2双开发相对不那么高,所以第二个主流,就这么简单。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

你可能感兴趣的文章
推荐系统那点事 —— 基于Spark MLlib的特征选择
查看>>
linux 下RTL8723/RTL8188调试记录(命令行)【转】
查看>>
[Contiki系列论文之1]Contiki——为微传感器网络而生的轻量级的、灵活的操作系统...
查看>>
Android 网络编程 记录
查看>>
微软同步发行Windows 10和Windows 10 Mobile系统更新
查看>>
Zeppelin的入门使用系列之使用Zeppelin运行shell命令(二)
查看>>
form表单下的button按钮会自动提交表单的问题
查看>>
那些年追过的......写过的技术博客
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
CSS魔法堂:Transition就这么好玩
查看>>
Golang协程与通道整理
查看>>
解决win7远程桌面连接时发生身份验证错误的方法
查看>>
C/C++ 多线程机制
查看>>
js - object.assign 以及浅、深拷贝
查看>>
python mysql Connect Pool mysql连接池 (201
查看>>
Boost在vs2010下的配置
查看>>
一起谈.NET技术,ASP.NET伪静态的实现及伪静态的意义
查看>>
20款绝佳的HTML5应用程序示例
查看>>
string::c_str()、string::c_data()及string与char *的正确转换
查看>>
11G数据的hive初测试
查看>>