一、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. 移动端自动化之Autox.js

    github: https://github.com/kkevsekk1/AutoX 官方文档:http://doc.autoxjs.com/ 1. 安装vscode的扩展插件 如果之前有使用 aut ...

  2. 1分钟学会如何提升PCIe通信速率,基于RK3568J + FPGA国产平台!

    测试数据汇总 表 1 PCIe总线介绍 PCIe,即PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准.主要用 ...

  3. 序列化-serialVersionUID作用

    Serializable接口 作用:标记一个类可以被序列化,如果没有实现该接口,则会抛出异常. ObjectOutputStream中源码: 实验: serialVersionUID 作用:表示一个序 ...

  4. 超详细 HarmonyOS 开发教程之开发环境搭建指南

    HarmonyOS开发环境搭建指南:DevEco Studio安装教程 一.系统要求 操作系统:Windows 10 64位或更高版本 RAM:至少8GB,推荐16GB 硬盘空间:至少10GB可用空间 ...

  5. C# 企业微信消息推送对接,实现天气预报推送

    C# 企业微信消息推送对接,实现天气预报推送 迷恋自留地 准备工作 需要获取的东西1. 企业Id,2.应用secret 和 应用ID 获取企业id 注册完成后,在我的企业=>企业信息=>最 ...

  6. C# 学习笔记 0415

    关于零碎的知识笔记总结,你可能需要知道的 一.Linq相关 Find()和First()与FirstOrDefault Find方法只能在List上使用,而后者能更广泛应用在IEnemerable上. ...

  7. 一图一知之python3数据类型

    记录python数据类型和相关的一些知识点

  8. 关于Git上传项目报错error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413

    问题 今天用Git上传项目时,最后一步push时命令行报错 error: RPC failed; HTTP 413 curl 22 The requested URL returned error: ...

  9. 技术实践|数据迁移中GBK转UTF8字符集问题分析

    导语:在国产化创新的大背景下,数据库迁移项目逐渐增多,在数据库迁移过程中,源数据库和目标数据库字符集有时会不同,这时如何进行字符集转换则成为了一个重要的问题,同时在转换过程中还需要确保数据的完整性和一 ...

  10. Go设置GOPROXY国内加速

    go env -w GOFLAGS=-buildvcs=false 在 Linux 或 macOS 上面 需要运行下面命令(或者,可以把以下命令写到 .bashrc 或 .bash_profile 文 ...