4

我们正在考虑将未来项目的技术从 C++ 切换到 Java 或 C#。所以很自然地,现在正在进行一场大讨论,选择什么。问题是我们都没有 EMF 或 RCP 的行业经验,如果它符合我们的需求,那就太好了。

所以我想问你更喜欢什么。我们的计划是:

  • gui 重(很多对话框,属性)

  • 相当大的模型(序列化的 xml 现在占用大约 15mb)

  • 应用程序应该集成到我们的框架-应用程序中心

  • 数据格式(xml 和二进制)必须与我们当前的格式相同

  • 需要图形编辑(创建、移动、连接形状+编辑它们的属性)

  • 数据模型中有许多相似但微小的不同对象

实际问题是:

  • C# 中是否有等效于 EMF 的功能?

  • C# 中是否有与 RCP 等价的功能?(例如编辑数据模型的命令,gui 前端,...)

  • RCP 中的 gui 编辑是否与 windows 窗体或 WPF 一样好且灵活?

  • EMF 的刚性/灵活性如何?

  • 我们在数据模型之间有很多相互依赖关系(一些控制其他模型或允许对它们进行不同的选择)——你将如何对这些模型进行建模?

  • 你会选择哪些选项?

非常感谢您的任何建议或意见

曼尼

4

3 回答 3

4

作为 Java 开发人员,我不能对 C# 说太多,但我可以给你一个关于 Java 方面的概述:RCP 有几个不错的选择(最突出的当然是 Eclipse,但还有其他的如 NetBeans)。学习曲线非常陡峭,但是一旦你运行了“hello world”,它就会变得容易得多。GUI 编程没有问题(您有多种选择,并且存在许多免费和商业小部件),并且您有多种处理 XML 的方法。一般来说,几乎所有东西都有一个(通常是免费的)库。因此,如果您喜欢有选择,Java 适合您。

另一方面,C# 语言在技术上处于领先地位。Java7 可以缩小差距,但不会缩小差距,这是肯定的。

如果你想同时拥有 JVM 的优势(开放、广泛、平台独立、大量的库......)和现代语言的优势,那么你应该看看 Scala(你可以混合使用 Scala 和 Java 代码没有问题)。Scala 非常创新,混合了 OO 和函数式特性,但对于习惯于 C++/Java 样式语法的程序员来说,仍然非常“易于访问”。

于 2010-08-31T07:15:57.443 回答
2

我对 EMF 和 RCP 一点都不熟悉,但从我快速浏览的内容来看,.Net 中肯定有“等价物”。但是我有很大的偏见,所以不要相信我的话。

有从 xml/xsd 生成数据类的工具,反之亦然 (xsd.exe),Visual Studio 中的图形集成建模工具等。

还有 WPF,我强烈推荐它用于任何项目(不仅仅是图形繁重的项目);对象模型易于使用,它具有声明性 GUI 设计 (XAML),并且与 WinForms 等较旧的 .Net 技术相比,它使类似图表的工具(如您所描述的)更容易制作。特别是在使用 WPF/Silverlight 时,请查看 MVVM(模型-视图-视图模型)以获得最广泛的模式。

于 2010-08-31T06:50:12.460 回答
2

对于大部分应用程序,我强烈推荐 Eclipse RCP + EMF(Eclipse RAP 也是一个优势,因为您可以单一来源的应用程序并“免费”获得基于 Web 的丰富 Ajax 应用程序)。

如果您需要访问本机功能,您总是可以用另一种语言编写它或使用 JNI,或实现一种 IPC 形式或使用 Web 服务 (SOAP) 或 REST-JSON 或 DBus 或任何您喜欢的通信机制。

我有时会从我的 Java 应用程序中调用 Linux 工具来完成这项工作(例如,“ssh someserver”或“rsync”)并且感觉很舒服。当其他工具完美地完成工作并且我可以继续下一个有趣的任务时,我认为获得“用于 Java 的纯 SSH 库”或“用于 Java 的纯 Rsync 库”并不是一个紧迫的理由。

顺便说一句,虽然我偏向于 Eclipse 和 JVM(注意:Java 语言不是我最喜欢的,我更喜欢 Scala 和 Groovy,但是使用 EMF 使用 Java 语言更容易),我对 .NET 有一些经验。虽然 .NET 有一些优点(一个是 C# 优于 Java 语言,但仅此而已,第二个是 Microsoft 内置的功能比 Sun/Oracle 提供给 Java[SE] API 的功能更多),还有有些事情你需要考虑。

首先是跨平台性。虽然有 Mono,但整个 .NET 很难移植。虽然您可能不需要这个,但它可能会派上用场。此外,Eclipse RCP 不仅“更跨平台”,而且优于 .NET Framework 提供的开箱即用功能。(我知道这不是一个公平的比较,将它与 Visual Studio Shell 比较更公平)

其次是许可证,然后是工具和成本(制造三个项目)。整个 Eclipse 工具都是免费提供的。它们是开源的(您可以修复任何错误,贡献补丁)。许可证是开放的,您可以在其上正确地创建商业产品。

三是功能性。RCP 本身有很多功能,当与 EMF、其他 Eclipse 项目和 Java 生态系统的其他部分(更不用说 JVM 语言)结合使用时,您有很多基本功能的选择。

另见:http ://eclipsedriven.blogspot.com

于 2010-12-22T15:17:58.280 回答