【问题标题】:Program with C# front-end and Java back-end: Good or Bad Practice?使用 C# 前端和 Java 后端的程序:好的还是坏的做法?
【发布时间】:2008-12-12 18:58:47
【问题描述】:

我和我的朋友在应用程序开发问题上存在分歧。这是一个简单的生产管理应用程序。

据我的朋友说,前端将数据存储在 XML 中,Java 程序将读取 XML 文档,将其存储(在后端),然后应用一些业务逻辑并将结果再次存储到另一个 XML文档。一个 C# 前端将显示结果(他想使用套接字来传达 XML 的状态)。

我认为这是个坏主意。我建议整个应用程序应该用 C# 或 Java 编写。

注意:该应用程序是独立的。它不能通过网络使用。

你们有人试过吗?请分享你的想法:)

【问题讨论】:

  • 澄清一下:Java 中唯一建议做的事情就是重新格式化 XML?

标签: c# java desktop-application


【解决方案1】:

你是对的,你的朋友提出了一个坏主意。另外,从你的问题中,我看到有几个困扰的问题,我不知道从哪里开始,所以我只是列出它们而不是任何特定的顺序。但是您要继续阅读的基本规则是,您必须同意越简单越好,正如爱因斯坦所说的“事情应该尽可能简单,但不能更简单”(或者类似的东西,我不记得确切的引用)。

  1. 前端和后端的概念并不真正适用于桌面应用程序。相反,您希望使用 MVC 模式来分离关注点。维基百科可能是开始学习或复习的好地方。
  2. 如果没有必要,为什么还要使用套接字(这完全没有必要)。这是为什么这是一个坏主意的第一个原因,因为如果一切都是用语言完成的,在相同的进程空间中运行(您的应用程序是桌面或独立应用程序),您就不需要使用套接字。
  3. 同样,为什么是 XML(再次不必要)。不需要,因为您可以传递 Java 或 C# 对象。对于 XML,当标签被添加到真实数据时,首先存在信噪比问题。然后是解析、构建 XML、潜在的附加库等的时间。这将是您朋友方法中引入的所有代码。

这些是最明显的原因。从经理或公司的角度来看,还有其他原因:

  1. 要维护此应用程序,经理或公司需要雇用 2 个不同的技能组。这可能不是真的,因为大多数程序员都是多语言的。但情况并非总是如此。
  2. 在部署方面,现在您强制您的用户同时安装 JRE 和 .NET 框架,以便能够运行您的应用程序。其中任何一个都不是很小的足迹。

【讨论】:

  • 你甚至不知道他的问题是什么,你在暗示一个模式?还有一个非常模棱两可的名字 (tinyurl.com/5gjfjt)。否则,我同意你的看法。
【解决方案2】:

谈论让它变得复杂。 Java 或 C#。一个真的不是另一个的后端。它们都与语言“做同样的事情”。唯一的区别是您是想利用 .NET 的力量,还是想利用巨大的 Java 框架的力量。

【讨论】:

    【解决方案3】:

    这是一个“不通过网络使用”的桌面应用程序......我根本看不到需要真正的“后端”。

    用单一语言编写桌面应用程序,并将数据存储在 XML 中。

    【讨论】:

      【解决方案4】:

      所以你的应用程序是独立的,不需要通过网络工作,但你的朋友坚持使用套接字连接应用程序的前端和后端?这个设置有问题,好像是more complicated than it needs to be

      听起来你的朋友想使用 Java,因为他更了解 Java 的 XML 处理框架。就个人而言,我认为 Java 和 .NET 之间的互操作是多余的。通过使用您选择的单一语言编写应用程序,您将节省大量工时和挫败感。

      【讨论】:

      • 那个链接很完美。我要把那个链接发给他并说服他:)谢谢
      【解决方案5】:

      你朋友的建议是保持模块化。你使用什么语言并不重要,但如果把它放在一个大项目中,你可能会使其成为非模块化的。

      【讨论】:

        【解决方案6】:

        对于那种类型的应用,我会只使用一种语言。

        【讨论】:

          【解决方案7】:

          可以在前端利用 C# 桌面应用程序的强大功能,并在后端使用 Java Ejb+Web 服务 (Jax-ws)。 C# 应用程序可以读取 SOAP wsdl 来创建存根和访问由 Jax-ws 实现的 Java 后端的接口。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-02-21
            • 2020-05-19
            • 1970-01-01
            • 2015-10-23
            • 1970-01-01
            • 2016-11-10
            • 2011-04-17
            相关资源
            最近更新 更多