跨平台 原生应用 基于Web构建,你想要的桌面GUI框架这里都有

老铁们,大家好,相信还有很多朋友对于为什么有的大公司的原生软件很少用跨平台技术和不建议使用软件复用的情形的相关问题不太懂,没关系,今天就由我来为大家分享分享为什么有的大公司的原生软件很少用跨平台技术以及不建议使用软件复用的情形的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

本文目录

  1. 采用什么技术可提高软件开发效率和实现软件复用
  2. BS结构软件与一般的网站之间有什么区别
  3. 为什么有的大公司的原生软件很少用跨平台技术
  4. IO多路复用到底是不是异步的呢

采用什么技术可提高软件开发效率和实现软件复用

软件工程,cmmi,组件化开发。

BS结构软件与一般的网站之间有什么区别

bs架构与cs架构的区别C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准。。B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows98/Windows2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。C/S与B/S区别:Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的.

1.硬件环境不同:C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务.B/S建立在广域网之上的,不必是专门的网络硬件环境,例与电话上网,租用设备.信息自己管理.有比C/S更强的适应范围,一般只要有操作系统和浏览器就行

2.对安全要求不同C/S一般面向相对固定的用户群,对信息安全的控制能力很强.一般高度机密的信息系统采用C/S结构适宜.可以通过B/S发布部分可公开信息.B/S建立在广域网之上,对安全的控制能力相对弱,面向是不可知的用户群.

3.对程序架构不同C/S程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑.B/S对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上.比C/S有更高的要求B/S结构的程序架构是发展的趋势,从MS的.Net系列的BizTalk2000Exchange2000等,全面支持网络的构件搭建的系统.SUN和IBM推的JavaBean构件技术等,使B/S更加成熟.

4.软件重用不同C/S程序可以不可避免的整体性考虑,构件的重用性不如在B/S要求下的构件的重用性好.B/S对的多重结构,要求构件相对独立的功能.能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子

5.系统维护不同系统维护是软件生存周期中,开销大,-------重要C/S程序由于整体性,必须整体考察,处理出现的问题以及系统升级.升级难.可能是再做一个全新的系统B/S构件组成,方面构件个别的更换,实现系统的无缝升级.系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.

6.处理问题不同C/S程序可以处理用户面固定,并且在相同区域,安全要求高需求,与操作系统相关.应该都是相同的系统B/S建立在广域网上,面向不同的用户群,分散地域,这是C/S无法作到的.与操作系统平台关系最小.

7.用户接口不同C/S多是建立的Window平台上,表现方法有限,对程序员普遍要求较高B/S建立在浏览器上,有更加丰富和生动的表现方式与用户交流.并且大部分难度减低,减低开发成本.

8.信息流不同C/S程序一般是典型的中央集权的机械式处理,交互性相对低B/S信息流向可变化,B-BB-CB-G等信息、流向的变化,更象交易中心

为什么有的大公司的原生软件很少用跨平台技术

理解跨平台不能解决大型企业软件开发的核心问题,大型企业在追求经验,质量和性能来进行软件开发,跨平台不可避免地会带来上述局限性和挑战是的。例如,性能下降,平台差异并不能提供一致的体验,甚至产品经理也可能需要不同的体验和样式。为了很好地解决这些问题和冲突,您需要投入大量的人力和资源来维护它们。通过优化跨平台解决方案,这些增加的成本可能大于在平台本身上重用大部分代码缩减的成本。

IO多路复用到底是不是异步的呢

题主详细描述的“IO复用属于同步IO”大致上是没问题的。

你的迷惑关键在于没有注意到部分与整体的关系。

首先统一下对同步和异步的看法:同步/异步是协作机制,如果是和线程相关时,线程阻塞(sleep)或者空转(轮询)时可以看成是该线程在同步等待事件发生。

对于服务器网络模块设计来说,I/O多路复用必定会有一个轮询线程,这个线程可以看成同步的,它负责了全部的通信数据(请求)的接收。然后一般都是利用线程池的线程开始异步解析应用层协议消息,并进行请求的服务处理(当然考虑请求的性质,可能还会继续在服务内部进行并行处理)。所以从整体请求处理的角度看,是异步的。

所以,你可以说IO复用是同步的,twisted是异步的。

I/O多路复用

与I/O多路复用(I/Omultiplexing)对应的是PPC和TPC模型,这里不展开。

I/O多路复用目前有几种模型:select,poll,pselect,epoll。简要说下。

select:调用select(),调用线程一直循环阻塞等待消息,调用线程是同步的。

pselect:相比select提供了更精准的超时时间而已,调用线程是同步的。

poll:poll本质上和select没有区别,只是描述fd集合的方式不同,poll使用pollfd结构而不是select的fd_set结构,调用线程是同步的。

epoll:同样需要一个线程在无限循环中调用epoll_wait等待注册的事件,调用线程是同步的。

他们之间的最大的区别,是文件描述符数量限制,文件描述符遍历、事件反馈机制方面的导致的cpu和内存资源消耗等方面。所以linux的epoll和windows的完成端口都是高并发大量连接的服务器必须考虑的,也催生了libevent和libuv之类优秀的跨平台异步IO(这里的异步就是从并发请求处理来看的)库的产生。这里就不多说了,有很多详细的文章可看。

关于为什么有的大公司的原生软件很少用跨平台技术的内容到此结束,希望对大家有所帮助。

移动互联网这十年,跨平台技术的演进及 Flutter 的未来