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

C# 什么';这是部署简单服务/守护进程(具有简单UI)的最佳跨平台方法(Windows/Mac),c#,java,ruby,service,cross-platform,C#,Java,Ruby,Service,Cross Platform,我对开发选项的范围感到困惑&在Windows和Mac上部署一些简单的代码和UI。有人能帮忙吗?我们这里的方向很好。我确实喜欢Ruby,但是如果离开它(例如java、c#)是有意义的,那就随它去吧。人们会为此建议哪种发展方案 要求 1.对Windows和Mac的支持 2.安装应该一键完成,并尽可能多地打包所有必需的依赖项。 3.所需的调度功能-因此,可以通过(a)安装为服务/守护进程,或者(b)安装能够调度对脚本的定期调用(首选前者) 4.功能组件需要-能够访问/解析网站,然后能够对我的网站进行H

我对开发选项的范围感到困惑&在Windows和Mac上部署一些简单的代码和UI。有人能帮忙吗?我们这里的方向很好。我确实喜欢Ruby,但是如果离开它(例如java、c#)是有意义的,那就随它去吧。人们会为此建议哪种发展方案

要求 1.对Windows和Mac的支持 2.安装应该一键完成,并尽可能多地打包所有必需的依赖项。 3.所需的调度功能-因此,可以通过(a)安装为服务/守护进程,或者(b)安装能够调度对脚本的定期调用(首选前者) 4.功能组件需要-能够访问/解析网站,然后能够对我的网站进行HTTP调用以存储解析的数据。因此,HTTP(S)方法就更重要了。应用程序中需要代理支持,因此用户可以输入代理服务器的主机/端口/用户名/密码

开发选项??-这就是我需要帮助/建议的地方。我想到的许多选择中的一些: 1.在Ruby中开发,然后找到打包产品来创建Windows和Mac安装包-不确定这是否可行?特别是如果我需要安装来有效地作为服务安装。 2.用Java进行跨平台开发?但是用户需要安装JRE吗? 3.作为Firefox插件开发?我不了解这一点,但即使您可以编写自定义代码,那么问题将是firefox必须运行。 4.分别开发windows和Mac版本,例如使用Visual Studio Express开发windows版本(假设它可以执行HTTP工作并创建用于安装服务的包)

这里的人们会有什么建议?(最好写一次,按下一个按钮,然后把Mac&Windows安装包吐出来)

谢谢

将支持跨平台Windows和Mac要求

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

一些GUI控件的行为稍有不同,但如果您正在编写服务,则可能不会创建复杂的GUI

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

我在Windows计算机上使用Visual Studio 2008开发该应用程序,与其他任何.NET Windows窗体应用程序完全相同。然后,通过将生成的可执行文件作为参数传递给mono运行时,可以直接在Mac计算机上运行


您可能希望将安装/部署视为实际应用程序代码实现的独立问题。您可能需要每个支持的平台的特定平台安装程序,但是每个安装程序都会在每个平台上部署相同的二进制(或二进制集),这是由于Moo.</P> < P>我编写了跨平台的C++代码,这是我们面临的决定。

请提前道歉,但我不知道有任何跨平台库可用于此目的,因为系统差异很大,需要不同的部署策略

建议1:

  • 在Mono中构建应用程序
  • 构建两种部署策略,将部署问题分为“安装程序”
  • 在windows上部署一些脚本语言或安装程序应用程序,将应用程序插入任务计划程序,或编写一些简单的C#代码(见下文)
  • 在Mac上,使用内置的UNIX cron demon定期调用您的应用程序
我认为这个策略相当简单。特定于平台的工作集中在部署上。该应用程序在运行之前不使用任何资源,它使用简单的机制来激活它。可以使用文件系统完成日志记录和错误处理

建议2:

  • 将平台无关代码作为程序集编写
  • 根据需要为每个平台编写特定于平台的代码:
    • 在windows上,这是一个windows服务或安装了click once的计划应用程序
    • 我离开mac的时间已经够长了,我不知道;我不知道有什么策略
  • 同样,需要为部署付出更多的努力
此解决方案的开销是编写更具体的代码来与操作系统支持的特定服务进行接口。这样做的好处是,通过额外的努力(即:连接到操作系统级的资源管理、报告、日志和错误管理),它应该与操作系统更好地共存

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