【问题标题】:What is the ideal method for creating a Windows application and service package?创建 Windows 应用程序和服务包的理想方法是什么?
【发布时间】:2017-02-09 22:02:52
【问题描述】:

我正在处理一个项目,我需要为 Windows 创建应用程序和服务包。我希望服务进程作为 SYSTEM 或 LOCALSYSTEM 运行,这样凭据就无关紧要了。应用程序前端将由机器上的任何用户安装和执行。来自前端应用程序的数据将被传递给服务——最有可能是用户选择的目录路径。一旦启动,服务将在接受上述路径的同时侦听执行某些操作的命令。

我在 .NET 平台上使用 C#,我已经研究过分别创建一个独立服务和一个独立应用程序,以及创建一个 WCF 服务库和宿主应用程序 - 这就是我所得到的。

对于我想要实现的目标而言,所有这些方法似乎都过于复杂。尝试这样的事情时,现代惯例是什么?我愿意并且能够学习前进的最佳方法。

编辑:这被标记为重复。我不是在寻找有关如何与 Windows 服务进行通信的信息。这是补救措施,根本不是我要问的。我正在寻找我在正确轨道上的验证,如果我不是,我正在寻找建议。有人告诉我,我走在正确的轨道上,并指出了命名管道绑定。

【问题讨论】:

  • 听起来你已经走上了正轨。
  • IInspectable - 该链接实际上只是在重复创建 Windows 服务并与之交互的 MSDN 示例。我正在尝试找出最理想的方法 - 更具体地说,仅限于 Windows 服务或 WCF 服务
  • 我同意@ScottChamberlain - 除非您正在寻找互操作性能的极端前沿,否则您​​走在正确的轨道上。尝试使用命名管道绑定。
  • 谢谢,我在其他地方看到过命名管道绑定,我会检查一下。

标签: c# .net windows wcf service


【解决方案1】:

Windows 服务无疑是托管 WCF 的一种选择,尽管它有点像部署噩梦。这实际上取决于您的环境以及系统管理员的能力和支持,因为我有很多客户端部署 Windows 服务,因为您需要管理员权限来安装和更新它,这根本不切实际。

控制台应用程序听起来可能是个糟糕的主意,但能够将它们放在共享上并运行 powershell 脚本来启动它们的实用性非常引人注目。

但坦率地说,IIS 托管在我看来具有最大的优势,因为该产品旨在易于部署和正常运行时间。您可以在 IIS 中使用任何可以在 Windows 服务或控制台中使用的传输绑定。

至于绑定本身,命名管道在许多企业场景中并不是一个流行的选项,因为它与 .NET 以外的任何东西都不兼容。尽管对于作为性能更高的绑定之一的二进制也可以这样说。在需要未知调用者的场景中,WSHttpBinding 可能是最流行的绑定。 WebHttpBinding 是一个有趣的选项,因为它基于 HTTP/REST,尽管这需要进一步修饰您的操作,老实说,如果您走这条路,您应该真正使用 Web API。

【讨论】:

  • 很遗憾,您的回答存在多个问题。命名管道通常不适合,不是因为它们仅适用于 .net,而是因为它们仅限于进程在同一台机器上处理通信。 Windows 服务从什么时候开始成为部署的噩梦?并在控制台应用程序中托管生产服务?就是不行。此外,WSHttpBinding 不可互操作,因此实际上不适合未知调用者。在不了解如何使用服务的情况下推荐 IIS 作为默认设置也是错误的。我可以继续。
  • IIS 并不适合我正在做的事情。这将是一项服务,它从一个简单的应用程序传递非常少量的数据,然后在后台处理文件和实际上整个卷。我在搞乱 WCF,但它似乎并不适合。我目前正在研究传统的 Windows 服务和接口应用程序。令我震惊的是,来自 MSDN 的 WCF 教程让我使用控制台应用程序来自托管我的服务。至少立即让我离开了那条路线。
  • 那么本教程就是这样做的,因为它是迄今为止最简单的部署范例,并且特别隔离了您对 WCF 所做的事情和仅对 WCF 所做的事情。从您的应用程序的角度来看,如何部署 WCF 服务并不重要,它只关心它在哪些绑定上公开其操作和地址。从您的描述来看,WCF 似乎非常适合在应用程序和您的服务之间进行通信。
猜你喜欢
  • 2011-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多