Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用什么来构建跨平台应用程序?_C#_Java_Frameworks - Fatal编程技术网

C# 使用什么来构建跨平台应用程序?

C# 使用什么来构建跨平台应用程序?,c#,java,frameworks,C#,Java,Frameworks,我正在寻找一些关于我试图构建的跨平台应用程序的实现建议。我希望能有一个直截了当的结果 我想创建一个可以在Windows和Mac上运行的小应用程序,允许用户在安装时键入用户名和密码,一旦完成,就充当后台服务,每秒轮询我的服务器以执行任务。它们主要是文件读/写和上传操作 我目前正在考虑使用,但是,我从未使用过它,尽管我对C#很熟悉 我还有别的选择吗?我对Java不太确定,因为我感觉不同平台的接口可能很难看/不同 我希望我的应用程序在用户必须去获取的依赖性方面没有摩擦 我非常感谢您在这方面的任何意见。

我正在寻找一些关于我试图构建的跨平台应用程序的实现建议。我希望能有一个直截了当的结果

我想创建一个可以在Windows和Mac上运行的小应用程序,允许用户在安装时键入用户名和密码,一旦完成,就充当后台服务,每秒轮询我的服务器以执行任务。它们主要是文件读/写和上传操作

我目前正在考虑使用,但是,我从未使用过它,尽管我对C#很熟悉

我还有别的选择吗?我对Java不太确定,因为我感觉不同平台的接口可能很难看/不同

我希望我的应用程序在用户必须去获取的依赖性方面没有摩擦


我非常感谢您在这方面的任何意见。

对于用户界面,有一些细节需要调整,但使用系统外观,体验相当流畅(它看起来像其他本机应用程序)。在Java应用程序中,您可以为整个应用程序配置外观,使其看起来非常集成和自然。所以我不会太害怕


对于C#,我认为这只适用于Windows而不适用于Mac,但也许这已经改变了?

关于外观:

我不会太担心跨平台Java应用程序的外观。Java的Nimbus外观实际上看起来相当不错,并且已经与Java捆绑在一起:

此外,您可以找到许多不同的免费、跨平台、外观和感觉,您可以与您的软件捆绑在一起。我本人就是TinyLAF外观的忠实粉丝:

我用Java编写了几个经济学应用程序,我认为它们在Mac和Windows机器上都很不错。(我唯一发现的是,Mac电脑上的菜单栏有时看起来很奇怪。)

--


另一件需要注意的事情是Mac和Windows机器上的文件结构差异;如果你的程序涉及外部文件,确保你在任何特定于平台的硬盘中都不需要硬编码(如目录分隔符)。

< P>如果你想要一个漂亮的UI,你也可以考虑JavaFX(基于java的RIA技术)。使用Mono,你必须安装它。Java也是如此

我会考虑在客户端应用程序中有两个组件。一个是后台工作人员,负责轮询服务器并完成工作。另一个是处理登录的GUI应用程序,诸如此类。前者可以是用Java编写的应用程序。GUI客户机可以是Java或其他平台,甚至可以为每个操作系统提供一个端口,因为此时它应该是一个非常简单的应用程序


就我个人而言,我建议避免使用Mono,因为这个项目实际上不再由任何人维护。如果你真的不喜欢java提供的UI选项,也许你应该考虑Flex。然而,您现在谈论的是一个拥有昂贵开发工具的专有平台。真的,我认为您应该重新考虑一下Java的可用性。它不像以前了,有着丑陋的、粉红色的、90年代的X-windows界面。Eclipse就是一个很好的例子。

在最后一部分中,我建议大部分时间使用正斜杠(“/”)。只有在与本机API(例如File.getCanonicalPath()或JFileChooser.getSelectedFile())交互时,才能在Windows上获得反向sleads。您可以创建一个
新文件(“c:/test.txt”)在Windows上没有问题。感谢您提供有关文件路径和主题的提示。这让我有点担心,尤其是在Mac电脑上@GuillaumePolet“大部分时间使用正斜杠('/')”使用
System.getProperty(“file.separator”)
而不是硬编码!或者,使用
新文件(父级,名称)
构造函数创建文件,以自动获得正确的分隔符。@AndrewThompson我正在开发一个应用程序(使用Unix和Windows共享的模型文件),该应用程序使用了大量文件和内容,最终,当我们主要使用(如果不仅仅是)正斜杠时,代码变得简单多了。在某些情况下,它可能是有用的,我不否认Mono听起来很棒。Mono是一个软件平台,旨在让开发人员轻松创建跨平台应用程序@Abs我从来没有用过C,所以我不在乎。我不知道他们是怎么做的(效率高吗?),也不知道用户界面是如何在Windows以外的其他平台上实现的。我所能说的是,你们可以在Java中有一个本机的外观和感觉。我想听听关于安装过程的想法。例如,是否有JAVA安装程序使其作为服务运行?C#在这方面的问题是,您可能会失去对该语言最重要的一个方面的支持:大部分特定于Windows的Microsoft.NET库。“不同平台之间的界面可能不美观/不同。”鉴于用户通常认为他们的“默认外观”是“好”,你最好的办法是使用当地的外观和感觉。Java提供了这种“开箱即用”的能力。有关Windows、OS X和*nix.Mono上的本机PLAF的图像,请参见上的此答案。Xamarin仍在维护该图像。请参阅Novell发布的新闻稿。