在单个项目中使用多个平台

时间:2009-12-01 18:26:10

标签: c# java .net php cross-platform

我想在即将开展的项目中使用C#,Java和PHP。我应该注意哪些潜在的陷阱?为项目使用多个平台是否有优势?目标开发团队是具有不同背景的人,在这个项目上通过互联网工作。

编辑:请具体一点,让我知道我可能面临的问题...请不要过于笼统,答案不好,会引起问题,等等请具体。

我的整合计划是使用2种方法。

1。)WebServices(常见于php,.Net和JAVA)

2。)MYSQL数据库(通常可由PHP,.Net和JAVA访问)

我的项目是面向企业的ERP + CRM项目,开发人员可以自由地在他们喜欢的任何平台上进行编码,以集成和开发模块/插件。

11 个答案:

答案 0 :(得分:19)

你会陷入困境。选择一个平台并坚持下去。

答案 1 :(得分:5)

<强>优点:

某些技术对某些事物有益,对其他事物则有害。使用多种技术可以发挥多种技术的优势。

<强>缺点:

复杂性。组合多个系统可能会导致复杂性的大爆炸。 (这通常会权衡利益)

答案 2 :(得分:3)

我想将这三种技术结合使用的场景将是一个分布式系统,它具有丰富的GUI(Windows上的C#),强大的后端(EJB或类似的Java Framework)和远程用户的Web前端(PHP)

虽然可以对每种情况下最佳的人提出合理的论据,但这种安排的问题是重复。每个数据结构都必须在数据库,后端,GUI和PHP中复制。此外,集成测试和调试问题变得更加复杂。所有东西都必须归结为基元,以便在层之间传输数据,难以改变解码消息的协议将以三种语言构建,并且事情会从那里开始。

更好的方法是在整个平台上拥有产品(您的代码)的核心功能。然后以MySQL中的Web服务和缓冲表的形式提供集成点,允许通过定义的路径与您的应用程序进行通信,并让想要编写插件的开发人员使用他们偏好的语言进行这些集成。关于与数据库的集成,一种合理的方法可以是为此目的使用已定义的表,以及为将这些表映射到内部数据结构而编写的存储例程。这将为您提供比模块直接写入数据模型更好的封装。

答案 3 :(得分:2)

您应该使用1个平台。这3个平台在功能上或多或少相等。正如jjnguy所说,你将面临巨大的复杂性,因为没有多少回报。你会遇到足够的问题和问题,而不会让人工变得困难!

答案 4 :(得分:2)

嗯。如果管理不当,这听起来像是灾难的秘诀:)

为什么有三项技术?是否存在需要它的技术事实(例如PHP对某些部分来说太慢)或者仅仅是因为参与者的偏好?在后一种情况下,我会认真考虑。将团队与三种技术整合在一起的过程中存在太多陷阱和问题。

答案 5 :(得分:2)

只有在绝对必要时才会混合使用这些技术。否则,您会花费大量时间以不同语言实现问题的相同部分,并修复源于该技术的错误。

答案 6 :(得分:2)

正确使用代码重用已经成为代码问题,您通过选择三种不同的语言使其无法实现。您还要确保在项目的某个部分工作的人不能轻易转移到不同的部分工作,除非他们也知道该语言......

那么与系统运行的交互情况如何,您打算如何调试跨三种语言的调用?

精神错乱。我同意最受欢迎的问题,你选择的只是选择一个,而只选择一个。

答案 7 :(得分:1)

我不得不说PHP可能是与C#一起使用的一个很好的选择,因为你没有说ASP.NET。我从未试图使用它的互操作性,但如果你使用PHP作为你的UI表示逻辑,并在C#中进行后端/数据访问仍应相对可维护。

答案 8 :(得分:1)

对于Web服务部分,我认为为每种语言的Web服务提供本机支持是一个非常好的功能,因为对于C#端,您可以使用svcutil和数据协定dll公开WCF服务以及已生成的WSDL这避免了在多个服务主机中存在的常见类可能出现的所有问题。

答案 9 :(得分:0)

当然有很好的理由这样做。 如果您喜欢WPF MMI - 您将使用MSVS c#开发... 但是如果你需要很多服务器,那么也没有理由在那里使用c#。您可以使用Java / Eclipse开发,在Linux上部署并在许可证上节省大量资金......

答案 10 :(得分:0)

您肯定会遇到的一个问题是州和会议管理;每个平台都有自己的方式,如果有的话,他们就不会很好地相互交谈。

通常,在这种环境中保持理智的唯一方法是仅在互操作性明显要求的点(例如服务接口)之间切换平台。如果它真的是一个多层环境(“层”意味着跨越机器之间的界限),那么你可以绘制一条简洁的线条。否则,我同意其余的建议;选择一个平台并坚持下去。