Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于以下标准开发桌面应用程序的语言/平台_C#_Java_.net_C++_Desktop Application - Fatal编程技术网

C# 基于以下标准开发桌面应用程序的语言/平台

C# 基于以下标准开发桌面应用程序的语言/平台,c#,java,.net,c++,desktop-application,C#,Java,.net,C++,Desktop Application,面对您可以自由设计的新应用程序的挑战,组建团队进行开发和管理: 您会选择哪种语言/平台 为什么? 背景:桌面应用程序将控制硬件设备并执行计算、分析和显示其返回的数据 要求:(重要性:10=最重要) 需要使用USB和/或以太网与设备通信(9) 具备相关技能的工程师的可用性(8) 高质量IDE/工具的可用性(8) IDE/工具的成本(7) 资源、教程和支持的可用性(9) 语言/API/平台/框架的生命周期-即该应用程序的投资将如何证明未来?。。。产品生命周期长(10) 跨平台(3) 图书馆的丰富性

面对您可以自由设计的新应用程序的挑战,组建团队进行开发和管理:

  • 您会选择哪种语言/平台
  • 为什么?
  • 背景:桌面应用程序将控制硬件设备并执行计算、分析和显示其返回的数据

    要求:(重要性:10=最重要)

    • 需要使用USB和/或以太网与设备通信(9)
    • 具备相关技能的工程师的可用性(8)
    • 高质量IDE/工具的可用性(8)
    • IDE/工具的成本(7)
    • 资源、教程和支持的可用性(9)
    • 语言/API/平台/框架的生命周期-即该应用程序的投资将如何证明未来?。。。产品生命周期长(10)
    • 跨平台(3)
    • 图书馆的丰富性和广度(9)
    • 应用程序需要能够解释脚本语言(6)
    • 单元测试(9)
    假设

    • 对于设备的USB变体,将使用C/C编写设备驱动程序++
    • 应用程序将是一个全新的尝试-从头开始
    • 现有工程师的背景是C/C++,他们有很强的面向对象能力。现有工程师愿意采用最好的语言/平台,并将招聘具有适当技能的新工程师
    短名单(您可以添加到):

    • Java/J2SE
    • C#/.NET
    • C++/wxWidgets
    • C++/QT
    • 等等
    期待听到你的想法

    我会投C的票。即使有了远离C++的学习曲线,开发者也应该更有效率,工具和库也很棒。p>
    <> P>我看到C++增加了你项目的复杂性,只会与你的USB设备接口,但是用P/Ung//C++/CLI来提高你的C/C++驱动程序到.NET ./P>> P>我的第一选择是C++ < /P>
  • “语言的生命”。。。我认为C/C++短期内不会有任何进展
  • 支持与usb/以太网/其他设备的低层通信
  • 您的团队已经具备了相关的知识/技能
  • 大量高质量的库/IDE等可用
  • 桌面应用程序将控制硬件设备


    P>个人,我选择C++或C()来做底层硬件接口,但是我会用一个干净的API把代码包起来,然后用WPF和XAML编写C++中所有面向用户的GUI文件。
    编写设备驱动程序所需的技能集将与GUI开发人员的技能集完全不同(特别是如果您希望提供丰富的图形图表和报告。因此,您可能会有两个不同的团队(即使他们是非常小的团队),并在不同的(但兼容)中实现这两个层语言将提供一种很好的机制来强制在这些层之间分离关注点。

    老实说,基于您的需求,出于以下原因,我选择Java(带有一个C小组件)

    • 语言/API/平台/框架的生命周期-即,该应用程序的投资将如何经得起未来考验?…该产品的生命周期很长(10)<代码>这确实取决于你的意思是多长。我真的不能想象java消失,仅仅因为它的巨大的安装基础。C或C++也没有消失,但是我总是在考虑C语言的未来时考虑VB6到VB.NET迁移问题。

    • 将需要使用USB和/或以太网(9)与设备进行通信。
      虽然Java不是直接实现这一点的理想工具,但它有JNI来完成繁重的工作。您仍然需要一个C组件来完成这项工作(每个平台都会有变化,但最好让大部分代码只写一次——使用C,每个平台的大部分代码都会发生变化,而使用C#,除了Windows之外的其他平台是否真的支持它?)。另一种选择是类似Java的
      “Python ctypes”
      (无需JNI接口层即可访问共享库和DLL)

    • 资源、教程和支持的可用性(9)。
      所有语言在web上都有巨大的资源横截面

    • <> >代码>图书馆的丰富和广度(9).<代码> >您可以增强C++和跨平台的GUI,但它们是必须添加的东西——没有什么开发环境,比如Eclipse/java。
    • 单元测试(9)。
      与下面工具的可用性响应相同-有大量(免费)Eclipse插件可以自动进行单元测试

    • 具备相关技能的工程师的可用性(8)。
      你提到的所有语言都有很多人(我喜欢用这个词)能够胜任这项工作

    • 高质量IDE/tools的可用性(8)。
      这是Eclipse。在我看来,没有两种方法可以解决它。它的插件数量真的非常多。NetBeans可能看起来更好,但我更喜欢功能而不是外观(我的妻子也是如此,所以很幸运:-)

    • IDE/工具的成本(7)。
      Eclipse是免费的

    • 应用程序需要能够解释脚本语言(6)。
      据我所知,Java现在包括JavaScript作为一种内置语言,以及开发人员可以使用的功能

    • Cross-platform(3)。
      C#,没有(尽管存在Mono,但我仍然看到有一天它会与MS发生冲突的风险,而且由于它与MS的关联,自由和开放源码软件世界将不会有太多人使用它)

      • 出于以下几个原因,我将选择C: