5

是的,当面试官提到他们在 C/C++ 应用程序中使用 Java-swing GUI 时,我有点惊讶。我很好奇,问他他们是如何将这些整合在一起的,他的回答是“通过消息传递”。有趣的!好吧,我对这种方法很陌生,我很好奇那里的公司是否真的使用这种设计。如果是,那么这种设计有很大的优势吗?我有点难以理解这种设计如何运作良好,如果您有任何参考,请分享。

仅供参考,该产品是基于数据备份的应用程序(可能在 Linux/Unix 平台上)。谢谢你。

简历

4

4 回答 4

7

我看不出有什么问题。通过消息传递集成不同的组件是很常见的。我确实认为拥有同质环境通常更好(例如,所有用 Java 编写的应用程序,而不是 Java 和 C++),但是通常情况下,您必须与用其他语言编写的遗留或 3rd 方组件集成,或者成本原因还是因为没有其他选择。

消息传递是执行此操作的常用方法。我认为 HTTP 属于“消息传递”的范畴,几乎每种语言都有一个 HTTP 库——这使得它成为一种通用的消息传递“语言”的不错选择。当集成一个非常异构的系统时,有专门的工具/框架不仅可以集成组件,还可以集成消息系统(例如ESB)。

于 2011-10-20T22:01:30.983 回答
3

如果没有关于应用程序要求的更多信息,很难判断这是否是一个好的设计。

另一件需要考虑的事情是,有时面试官会提出一些奇怪的设计来看看候选人的反应。当我招聘一个不是我个人能力的职位时,我通常会这样做,但我有经验(通常是搞砸了)。我的目标是看看候选人是否比我更擅长解决问题!糟糕的候选人会盲目地接受我糟糕的解决方案。更好的候选人会立即提出更好的解决方案。最好的候选人会将我的弱解决方案与他们更好的解决方案进行比较和对比,并探索每个选项何时有意义。

我猜想选择 Java 前端是出于可移植性的原因。我会主张使用基于浏览器的界面来实现相同的目标,但也许他们的 UI/UX 人员真的很喜欢 Java。

于 2011-10-20T21:52:08.093 回答
1

这是一种可行/好的方法,当我在 2005-2006 年作为承包商工作时,我看到它在一家非常大的公司(如果有的话,财富 20)使用。

当我问为什么时,我被告知:

  1. 需要Linux GUI,java/SWING 是个不错的选择。我还认为他们有一些需要工作的 Java 开发人员。
  2. 他们在 C++/C 中拥有庞大的、性能关键的代码库。
  3. 他们已经广泛使用消息传递并为此提供库。
  4. 消息接口虽然开发成本更高,但允许团队编写测试程序(例如用 python 脚本替换生产 GUI)。

综上所述,Qt 和 GTK/Gtkmm 都是非常好的 GUI 框架,为什么不使用它们呢?

于 2011-10-20T22:29:49.887 回答
1

关于为什么他们必须首先调用 C++ 函数,然后除此之外,他们可能已经分发了客户端需求,这可能会受到限制。您将如何开发解决方案,因此您构建了一个消息传递系统并与服务器端的 C++ 接口。归根结底,这是一个可行的解决方案。我不希望 ui 必须用 C++ 构建,因为服务器端是用 C++ 编写的,有时您需要将不同的技术组合在一起来实现您的解决方案。

于 2011-10-20T22:18:59.100 回答