首页 > 编程语言 >[TSG@Site开发日志3]从C#到Qt,再从Qt到C# 和 Qt的组合开发,浅谈在采集端工控设备开发中不同技术之间选型的利与弊

[TSG@Site开发日志3]从C#到Qt,再从Qt到C# 和 Qt的组合开发,浅谈在采集端工控设备开发中不同技术之间选型的利与弊

时间:2023-07-22 15:57:52浏览次数:37  
标签:Qt C# 图形界面 Windows 跨平台 开发

[TSG开发日志3]从C#到Qt,再从Qt到C#,浅谈不同技术之间选型的利与弊

当前在South公司的开发历经了几个时代,第一个时代是用C#进行的开发,第二个时代是从C#向Qt逐渐转型,第三个时代是我现在站在十字路口上,又需要将采集端软件从Qt的路上拉回来。

为什么

先看看AI怎么说

选择使用C#还是Qt来进行设备控制的上位机开发,取决于多个因素。下面我将详细讨论每个方面以及两种技术的优势和特点:

  1. 语言特性和生态系统: C#是一种现代的面向对象编程语言,拥有丰富的特性和强大的生态系统。它是Microsoft的主要开发语言之一,并且在Windows平台被广泛使用。C#具有简洁的语法、强大的标准库和活跃的开发社区,这可以帮助你快速开发应用程序并解决问题。此外,C#还有一些用于设备控制和通信的特定库,如.NET SerialPort类和第三方库(例如Modbus库)。

  2. Qt是一个跨平台的应用程序开发框架,使用C++编写。它提供了丰富的功能和模块,包括图形界面、网络通信、数据库访问等等。Qt拥有广泛的跨平台支持,可以在Windows、Mac、Linux等多个操作系统上运行。此外,Qt具有信号和槽机制、自动内存管理、良好的国际化和本地化支持等特性,使开发变得更加方便。

    结论:如果你的设备控制应用程序主要是在Windows平台上运行,并且你已经熟悉C#和相关技术生态系统,那么选择C#可能会更加适合。如果你需要跨平台支持,或者对C++和Qt有很好的熟悉度,并且希望获得强大的图形界面和其他功能模块,那么选择Qt会是一个不错的选择。

  3. 图形界面开发: C#和Qt都提供了图形界面开发的功能。C#使用Windows Presentation Foundation (WPF)和Windows Forms来创建丰富、交互式的用户界面。WPF使用XAML来定义界面,提供了强大的数据绑定、样式和动画特性。Windows Forms则是更传统的Win32窗体应用程序开发方式,易于上手和使用。

    Qt提供了一套成熟的图形界面开发框架,使用Qt Widgets或Qt Quick,可以创建各种各样的界面。Qt Widgets是基于传统的Widget和Layout的方式,易于掌握和定制。Qt Quick则使用基于QML的语言,提供了更现代和声明式的方式来构建界面。

    结论:如果你希望使用现代化的图形界面技术,并且以Windows平台为主,C#和WPF可能更适合你。如果你需要跨平台支持或者对Qt的图形界面开发有更多的了解,那么选择Qt会是一个不错的选择。

  4. 性能和资源使用: C#以及相关的.NET框架在性能方面表现良好,并且拥有优秀的垃圾回收机制。如果你的设备控制应用程序需要处理大量数据、实时控制或者对性能有较高要求,使用C#可能会更合适。

    Qt使用C++编写,底层性能较高,且具有较低的资源消耗。如果你的应用程序对性能和资源使用有严格的要求,或者需要对底层进行优化,Qt可能会是更好的选择。


结论:如果你对性能和资源消耗有较高要求,或者需要进行底层优化,Qt可能会更适合你。如果你对性能要求较低或者使用相关的优化技术(如并行处理和异步编程),那么C#也可以满足大多数需求。

为什么我突然会想到要使用C#进行采集端软件开发,其实主要是基于C#的几个优点:

  1. C#本身是内存安全的语言,可以不管你怎么写,反正代码总是可以按照既定的路线往下走。就是什么意思呢,只要一个try catch包住你的代码字段,不管怎么样代码总是能走下去的。C#在流程安全上相比于Qt有绝对得天独厚的条件,可以在作业流程完全跑通的前提下,无视任何分支函数的错误。可以无视内存级别的错误,越界啊,什么的。

  2. C#的开发效率相对较高,而且对网页网络等有更好的优化。这一点也是非常关键的。我们在下一步的开发中即将绑定大量的网页网络内容,甚至有可能让整个软件架构直接建立在网页上。另外因为C#的语法简单,而且可维护性相当高,所以即使后续招过来的开发人员水平参差不齐,依旧不会把这个项目做烂。

  3. C#跨平台的优势。C# 现在在.NetCore上的跨平台我个人感觉支持比Qt好一点,虽然不论怎么说也是微软的亲生儿子,但既然这一次都把.NetCore整个公开了源码且高调支持了跨平台,那肯定是可以相信的,毕竟有微软这么个顶级大公司背书,怎么也不会比Qt这种公司差的。

  4. 代码好维护。C#的代码虽然可能短时间看不懂,但其语法总的来说还是非常简单的,不管你怎么维护,在Try Catch这么高的包容度下基本上不可能写烂,后面来接手项目的人不管代码写的有多垃圾,都是可以维护的下去的。

  5. C#也可以直接调用C++的DLL,虽然过程曲折了一点,但目前我已经大概搞清楚怎么做了。

总而言之,建立在现在.net生态如此强大的前提下,我认为.net是相比起Qt更加强大的平台

标签:Qt,C#,图形界面,Windows,跨平台,开发
From: https://www.cnblogs.com/Leventure/p/17547629.html

相关文章

  • DevExpress中GridControl控件的基本属性设置和使用方法
    (18条消息)DevExpress中GridControl控件的基本属性设置和使用方法_gridcontrol隐藏列_潘达小新的博客-CSDN博客......
  • Excel 中的技巧函数
    Excel常用函数公式20例,第7条条件查询,其中第一列为要查询的列,如果不是怎么办?可以参考Excel函数之王,Vlookup到底怎么用?IF({1,0},B:B,A:A)......
  • JavaScript继承
    继承—通过原型1.共同functionA(){}functionB(){}constg={a:1,b:2,};我想让从A、B构造出来的对象都具有g其中的属性,就可以通过继承A.prototype=gA.prototype.constructor=Aconsole.log(A.prototype)//{a:1,b:2,constructor:[Function:Man]}......
  • Oracle - 关系数据库管理系统
    常见语法1、withas短语,抽取公用数据withA_tableas(select'feiqs'name,18ageFROMdual),B_tableas(select'feiqs'name,29ageFROMdual)select*fromA_table,B_table2、rowid数据唯一标识,该值表明了该行在数据库中的物理具体位置selectrowidfromst_......
  • golang 实现 RPC(远程过程调⽤实例)
    golang实现RPC 前提概要,先了解几个概念,websocket简介什么是websocketWebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的Websocket是一个持久化的协议webs......
  • SQL日期操作函数(CONCAT、DATE_FORMAT、LAST_DAY)
    获取某月底日期:SELECTLAST_DAY('2021-07-01')ASmonth_end_date;拼接年月格式:CONCAT(DATE_FORMAT(hp.planned_payment_date,'%Y-%m'),'-01')如果数据库内存的是2023-07-19经过处理后会变成:2023-07-01SELECTbp.UNIT_ID......
  • windows10 安装docker
    如何在Windows10上安装Docker简介在开始之前,我们需要确保你的电脑满足Docker的安装要求。接下来,我将为你提供一步一步的指导,教你如何在Windows10上安装Docker。以下是整个安装过程的步骤概览:步骤动作1检查系统要求2下载DockerDesktop安装程序3......
  • update ClosedSurfaceRepresentation python
    如何实现"updateClosedSurfaceRepresentationpython"流程概述要实现"updateClosedSurfaceRepresentationpython",需要按照以下步骤进行操作:步骤描述1导入所需的模块2加载或创建3D模型3获取闭合曲面的表示4执行更新操作5保存或显示更新后的结果......
  • el-table中row-click事件调用两次接口问题
       参考:https://blog.csdn.net/jl____/article/details/126975029......
  • 4.C++和Python
    C++是编译性语言,Python是解释性语言C++编译链接的全过程分为:预编译预编译会执行以下内容:宏替换执行条件编译:#ifdef,#ifndef,#endif#include后面文件内容插入并替换当前行删除注释编译编译会执行以下内容:检查有没有语法错误,没有的话转换为汇编语言,汇编过程再将汇编语言转......