什么是部署简单服务/守护进程(具有简单UI)的最佳跨平台方法(Windows / Mac)

时间:2009-09-15 05:18:29

标签: c# java ruby service cross-platform

我对开发选项的范围感到困惑。部署一些简单的代码和Windows和Windows的用户界面苹果电脑。任何人都可以帮助重新找到一个好方向。我喜欢Ruby,但是如果离开这个(例如java,c#)是有意义的话那就这样吧。人们会为此建议哪种开发选项?

要求 1.支持Windows&苹果电脑 2.安装应该是一键式,并尽可能地包装所有必需的依赖项。 3.需要调度功能 - 通过(a)安装为服务/守护进程,或(b)安装能力安排定期调用脚本(前者是首选) 4.功能组件需要 - 能够访问/解析网站,然后能够向我的站点发出HTTP(S)调用以存储已分析的数据。所以就HTTP(S)方法而言。应用程序需要代理支持,因此用户可以输入代理服务器的主机/端口/用户名/密码。

DEV选项? - 这是我需要帮助/建议的地方。想到的一些选项中有一些: 1.用Ruby开发,然后找到包装产品来创建Windows& Mac安装包 - 不确定这是怎么回事?特别是如果我需要安装才能有效地安装为服务。 2.用Java开发跨平台?但是需要用户安装JRE吗? 3.开发为Firefox插件?我不是这个,但即使你可以编写自定义代码,那么问题就是firefox必须运行我想。 4.开发窗口和窗口Mac版本是单独的,例如使用Visual Studio Express开发Windows版本(假设它可以执行HTTP工作并创建用于安装服务的包)。

人们会在这里建议什么? (很高兴能够写一次,按一下按钮然后让Mac& Windows安装包吐出来)

由于

2 个答案:

答案 0 :(得分:3)

我编写了跨平台的C ++代码,这是我们面临的一种决定。

提前道歉,但我不知道您可以使用任何跨平台库,系统是完全不同的,它们将需要不同的部署策略。

建议1:

  • 在Mono中构建您的应用程序
  • 构建两个部署策略,将部署问题分离到“安装程序”
  • 在Windows上部署一些脚本语言或安装程序应用程序,将您的应用程序插入任务计划程序,或编写一些简单的C#代码(见下文)
  • Mac上的
  • 使用内置的UNIX cron 恶魔定期调用你的应用程序。

我认为这个策略相当简单。特定于平台的工作以部署为中心。该应用程序在运行之前不使用任何资源,它使用简单的机制来激活它。可以使用文件系统完成日志记录和错误处理。

建议#2:

  • 将平台无关代码编写为程序集
  • 根据需要为每个平台编写特定于平台的代码:
    • 在windows上,这是一个Windows服务或安装了click-once
    • 的预定应用程序
    • 我已经远离了Mac,我不知道该策略是什么
  • 再次,部署的额外工作

此解决方案的开销是编写更具体的代码以与OS支持的特定服务进行交互。好处是它应该与OS更好地共存并做出额外的努力(即:挂钩到OS级资源管理,报告,日志记录和错误管理)。

注意:Windows任务调度程序的{C#接口here不幸的是,它可能不是单声道兼容的。

答案 1 :(得分:2)

Mono将支持跨平台的Windows和Mac要求。

Mono允许我在Windows环境中开发Windows窗体可执行程序集,然后在OS X上使用Mono执行完全相同的可执行文件。

某些GUI控件的行为略有不同,但如果您正在编写服务,则可能无法创建复杂的GUI。

检查mono docs,我看到System.Net.WebClient类已实现,并提供了一种通过HTTP检索数据的简单跨平台方法。

我在Windows机器上使用Visual Studio 2008来完全开发应用程序,就像我任何其他.NET Windows Forms应用程序一样。然后,生成的可执行文件可以直接在Mac机器上运行,方法是将其作为参数传递给单声道运行时。

您可能希望将安装/部署视为实际应用程序代码实现的单独问题。您可能需要为每个支持的平台安装特定于平台的安装程序,但是由于Mono,每个安装程序将在每个平台上部署相同的单个二进制文件(或一组二进制文件)。