GUI应该与应用程序的逻辑分开?
当然是….
>如果是分开的,逻辑和GUI如何沟通? TCP / IP套接字是一个很好的选择吗?还有什么其他的可能性?
…但不是那么多。套接字将是过度的(例外:见问题5)。通常你会在GUI和后端部分中分类。然后GUI类调用后端的方法。
使用不同于C语言的GUI是个好主意?如果是 – 哪种语言?
如果是这样,你必须整合这两种语言,所以我建议用相同的语言写出所有内容。但是为了回答你的问题,你可以为后台创建Python绑定,并用Python编写GUI(使用PyGTK,PyQT或wxWidgets)。
>使用基于浏览器的GUI是个好主意?
这取决于您如何部署应用程序。如果应该安装在每台客户端计算机上,那么Web界面就没有意义。如果要集中托管,那么您可以选择一个Web界面。
>即使项目的核心逻辑是跨平台的,我可以决定GUI只能是基于Windows的(.NET?),它将通过Socket或类似的方法与相关的Win / Linux机器上的逻辑进行通信。这是一个好主意吗?
我认为这是有道理的,只有后端必须是某种安全的(即不能安装在用户的计算机上),或者如果您有一个类似于客户端的瘦客户端方法。写跨平台GUI比编写跨平台后端(在我看来),所以你应该做这两个部分跨平台。顺便说一下,基于.NET的GUI不是仅Windows – Mono已经支持Windows Forms的一个很大的子集,例如(但不是WPF,可悲的是)。
编辑:
关于你的单声道问题:单声道大部分是稳定的,但并不是一切都没有实现。可以肯定的是,您可以运行The Mono Migration Analyzer (MoMA),以了解在Mono中有什么不起作用。但是我认为so many companies在生产环境中成功使用Mono意味着您至少应该将Mono视为一种选择!