一、SOUI5跨平台解决方案的实现框架介绍

SOUI5 是一款专为跨平台客户端开发设计的国产框架,源代码:Github or Gitee, 其核心优势在于通过自主实现的 Swinx,在 Linux 平台下完美复现 Windows API,从而实现跨平台功能。这种独特的实现方式,使得开发者能够无缝迁移现有的 Windows 客户端代码至 Linux 平台,极大地降低了跨平台开发的门槛和成本。
目前soui5已经在包含ubuntu, debian, centos, fedora, openKylin, uos, deepin等系统中测试通过。

二、SwinX介绍

SwinX是作者经过近一年时间开发的一套运行在linux平台下的Windows APIs,源代码:Github or Gitee S代表Simple也代表启程软件出品,win代表Windows,X代表跨平台。一个带GUI的客户端项目,首先需要操作系统提供常规的进程启动,线程调度等支持,这是OS的常规功能;更重要的是,它还需要系统提供以窗口为基础的UI支持。SwinX提供Windows平台下的窗口管理API(HWND系列API), 图形绘制API(GDI系列API),内核对象API(EVENT,MUTEX,Symaphore等),所有API都经过了大量的单元测试,确保产品稳定运行。

和SwinX类似的产品有Wine,Wine的设计目标是在linux平台二进制兼容Windows平台上现有程序。这一设计目标使Wine非常庞大。然而,实际应用中,Wine能完美运行的大型项目非常少(例如QQ,微信等产品都不可能通过Wine来实现在Linux平台运行)。

SwinX参考了Wine的设计,但SwinX的设计目标是源代码级兼容Windows平台的产品,软件厂家有一个现有的运行在Windows平台的软件产品,通过链接SwinX,再配合适当的跨平台调整代码就可以编译出原生运行在Linux平台的软件(后续MacOS平台的支持也在计划中)。和Wine不同在于,Wine基于X11 API,X11 API是Linux平台早期推出的一套同步API。现在Linux平台提供了性能更高的XCB API,XCB采用异步框架,相对于X11性能有显著提升。

不同于Wine的宏大,SwinX只实现必须的APIs,因此SwinX非常精简,稍有经验的程序员都可以简单地驾驭SwinX,在开发过程中如何发现缺少哪个API的实现,用户可以方便的自己增加这些API。

三、现有支持跨平台的竞品分析

除Wine外,目前能够实现客户端跨平台的框架主要包含Qt, GTK, Electron这三种。

  • Qt:Qt 是一个历史悠久、功能强大的跨平台开发框架,支持多种编程语言,如 C++、QML 等。它在桌面和嵌入式应用开发中广泛使用,具有丰富的控件库和强大的图形渲染能力。然而,Qt 的学习曲线较陡,且其开源版本在商业使用中可能需要遵循较为严格的开源协议,商业授权的费用非常高。
  • GTK:GTK 是一个开源的跨平台图形用户界面库,主要用于开发 GNOME 桌面环境下的应用程序。它支持多种编程语言,并且在 Linux 平台上表现优异。不过,GTK 在 Windows 和 macOS 上的兼容性相对较弱,且其界面风格与现代应用的审美存在一定差距,此外GTK提供的C语言API,大型项目中使用成本很高。
  • Electron:Electron 是一个基于 Web 技术(HTML、CSS、JavaScript)构建跨平台桌面应用的框架。它允许开发者利用 Web 开发经验快速构建应用,并且可以轻松集成各种 npm 模块。然而,Electron 应用通常体积较大,性能消耗较高,且在原生系统功能的集成上存在一定的局限性。

四、SOUI5的优势

SOUI是一套在windows平台上持续维护了10+年的客户端开发框架,5.0之前,通过在windows平台上持续开发维护,形成了自己独特的开发模式,已经在包括:百度,YY,金山,金碟,迅游,富途,韩信等公司的产品中大量使用。

  • 完整的控件系统:SOUI5 提供了丰富多样的控件,涵盖了从基础按钮、文本框到复杂的虚表控件等,满足不同应用场景的需求。
  • 完整的布局系统:支持多种布局方式,包括线性布局、相对布局、网格布局等,开发者可以根据界面需求灵活选择,轻松实现复杂界面的布局。
  • 完整的事件系统:SOUI5 的事件机制结合了 WTL 的消息映射表和 Qt 的 sigslot 两种方式。WTL 的消息映射机制将所有事件响应集中在一起,便于代码维护;而 sigslot 的灵活性则允许开发者在代码的任意位置实现事件响应。
  • 完整的矩阵变换系统及动画系统:具备强大的图形处理能力,支持矩阵变换,能够实现复杂的图形变换效果。同时,其动画系统提供了丰富的动画效果,如平移、缩放、旋转等,帮助开发者打造流畅、生动的用户界面。
  • 完善的扩展机制:SOUI5 提供了灵活的扩展机制,开发者可以扩展系统提供的控件(IWindow),绘图对象(ISkinObj),布局对象(ILayout)等定制UI,还可以通过插件等方式轻松扩展框架的功能。这种机制使得框架能够根据项目需求进行定制化开发,满足不同业务场景的特殊需求。
  • 国产化自主知识产权:SOUI5 是一款国产的跨平台开发框架,拥有自主知识产权。这不仅意味着在技术上不受制于国外框架,还能够更好地支持国内的开发需求,为国产软件的发展提供有力支撑。
  • 体积更小,性能更高:相较于一些竞品框架,SOUI5 在设计上更加精简。它通过优化代码结构和资源管理,实现了更小的体积和更高的性能。这使得基于 SOUI5 开发的应用程序在运行效率和资源占用方面更具优势。
  • 通过soui4js项目,soui已经在windows平台实现了全部使用js开发原生客户端项目的能力,使用js开发客户端项目可以大大缩短软件产品的开发周期,后续soui4js也将支持SwinX。
  • 方便现有 Windows 客户端产品移植:SOUI5 通过自主实现的 Swinx 在 Linux 平台下模拟 Windows API,为 Windows 客户端产品的移植提供了极大的便利。开发者无需对现有代码进行大规模修改,即可快速将应用迁移到 Linux 平台(后续也将对macos提供支持)。
SOUI5 以其独特的跨平台解决方案、强大的功能优势以及对国产化需求的支持,为国内客户端软件开发提供了一个高效、可靠的框架选择。无论是从技术层面还是从市场需求角度,SOUI5 都展现出巨大的潜力和价值。对soui5感兴趣的朋友,欢迎联系作者(参见demo中的QQ群)。也欢迎大家加入soui5的开发。
 

国产开源跨平台软件开发框架新选择:SOUI5的更多相关文章

  1. 破解“低代码”的4大误区,拥抱低门槛高效率的软件开发新选择 ZT

    最近,每个人似乎都在谈论“低代码”.以美国的Outsystems.Kinvey,以及国内的活字格为代表的低代码开发平台,正在风靡整个IT世界.毕竟,能够以最少的编码快速开发应用的想法本身就很吸引人.但 ...

  2. 2015年热门的国产开源软件TOP 50

    2015年热门的国产开源软件TOP 50 开源中国在 2015 年得到了快速的发展,单开源软件收藏量就接近 40000 款,其中不乏优质的国产开源项目.本文从软件的收藏.下载.访问等多角度挑选出了 2 ...

  3. Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架

    Enterprise Solution 是一套管理软件开发框架,在这个框架基础上开发出一套企业资源计划系统Enterprise Edition. 现将Enterprise Solution开发过程中遇 ...

  4. 2016国产开源软件TOP100(Q1)

    随着互联网的发展.开放标准的普及和虚拟化技术的应用等诸多IT新领域的创新及拓展,开源技术凭借其开放性.低成本.稳定性.灵活性.安全性和技术创新性等特点迅速走向成熟,逐步发展成为一种主流模式,日益改变着 ...

  5. 我发起了一个 .Net 开源 跨平台 GUI (界面开发框架)项目 HtmlCore

    大家好 , 我发起了一个 .Net 开源 跨平台 GUI (界面开发框架)项目 , 名字叫 HtmlCore  . 项目的一个主要目标是可以用 .Net 在 移动设备 上 开发 GUI 程序 (界面程 ...

  6. GitHub 上最热的10款国产开源软件

    衡量一个开源产品好不好,看看产品在 GitHub 的 Star 数量就知道了.由此可见,GitHub 已经沦落为开源产品的“大众点评”了.一个开源产品希望快速的被开发者知道.快速的获取反馈,放到 Gi ...

  7. 2016国产开源软件Top100(Q1)

    2016国产开源软件Top100(Q1) 随着互联网的发展.开放标准的普及和虚拟化技术的应用等诸多IT新领域的创新及拓展,开源技术凭借其开放性.低成本.稳定性.灵活性.安全性和技术创新性等特点迅速走向 ...

  8. 开源server软件

    Java缓存server jmemcached http://www.oschina.net/p/jmemcached jmemcached 是一个Java版的 memcached 缓存server, ...

  9. 开源GIS软件初探

    谈到GIS软件,首先让我们想到的便是GIS界的龙头大哥ESRI公司旗下的ArcGIS产品,从最初接触的version 9.2到如今的version 10.1,其发展可谓风生水起.MapInfo软件也不 ...

  10. .NET Core:面向未来的开源跨平台开发技术

    作为一种全新的开源和跨平台的开发平台,.NET Core 历经两年多的开发,终于在于2016年6月27日针对所有主流服务器和桌面操作系统发布 1.0 RTM 版本..NET Core 是一种通用开发平 ...

随机推荐

  1. php xattr操作文件扩展属性

    观摩了这篇文章后https://www.cnblogs.com/zyblog-coder/p/15013804.html 学到了php还有操作文件扩展属性的扩展 快速安装了一下 sudo apt-ge ...

  2. 崖山数据库-监控运维平台-YCM 配置部署详解

    准备工作:操作系统版本:[root@node10 ~]# uname -aLinux node10 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 ...

  3. go mod使用小结

    转载请注明出处: go mod 命令是用于管理 Go 语言项目的模块依赖关系的工具.Go 语言从 1.11 版本开始引入了模块支持,并在后续版本中逐渐完善.模块是 Go 语言代码的一个集合,每个模块都 ...

  4. Qt 在线程中invokeMethod采用QueuedConnection模式,调用带指针参数槽,实际不会调用

    widgetObject有操函数Test: void Test(int *v); 在线程中调用Test,会被忽略,实际不会调用. QMetaObject::invokeMethod(widgetObj ...

  5. RPM 与 YUM

    RPM 与 YUM rpm 包的管理 rpm 用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中.它生成具有.RPM 扩展名的文件.RPM是 RedHat Package Manag ...

  6. 对象存储 AVIF 图片压缩,邀您参与免费内测!

    对象存储 AVIF 图片压缩免费内测正式开放!AVIF 作为压缩图片中的新主力军,都有哪些特点呢?通过对象存储又要如何使用 AVIF 压缩呢?这篇文章将深入浅出的为您介绍~ ​具体介绍 现在硬件设备越 ...

  7. JAVA-通过大疆TSDK的API直接获取红外图片温度信息

    一.前言 看过很多关于大疆红外图片用TSDK取温的方式,但是网上能搜到的大部分教程都是通过官方下载文件smple编译出来的程序来取温,如果这样做,虽然确实也能够实现目的,但不得不说,不但会降低运行速度 ...

  8. [转]OpenSSL主配置文件openssl.cnf

    https://www.cnblogs.com/f-ck-need-u/p/6091027.html openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/ ...

  9. 为什么 Llama 3.3 70B 比 GPT-4o 和 Claude 3.5 Sonnet 更优秀

    过去七天的 AI 新闻如狂风暴雨般涌来,AI 世界发生了许多重大变化.在这篇文章中,我们将深入探讨来自 Llama 3.3 70B.GPT-4o 和 Claude 3.5 Sonnet 等主要参与者的 ...

  10. Qt音视频开发45-音视频类结构体参数的设计

    一.前言 视频监控内核组件重构和完善花了一年多时间,整个组件个人认为设计的最好的部分就是各种结构体参数的设计,而且分门别类,有枚举值,也有窗体相关的结构体参数,解码相关的结构体参数,同时将部分常用的结 ...