首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Windows环境下开发服务器

如何在Windows环境下开发服务器
EN

Stack Overflow用户
提问于 2012-03-10 14:16:06
回答 2查看 174关注 0票数 3

作为一个有着强大Linux系统编程背景的人,我问这个问题。我在Windows开发方面的经验很少,到目前为止,这只限于“控制台应用程序”-type程序。

知道服务器必须在Windows上运行,开发服务器的规范过程是什么?

是否立即构建Windows应用程序?调试过程真的是尽管看上去很讨厌吗?Windows开发人员是否为了调试而从命令行应用程序开始,并仅将其转换为用于部署的服务?

作为比较,我将提供Linux“服务器”是所选语言中的常规命令行程序。我将把服务器定义为一个典型的程序,

  1. 以日志的形式产生大部分人类可读的输出,
  2. 接受来自操作系统的输入(例如网络或文件系统事件),而不是“用户单击按钮”或“用户键入命令”,以及
  3. 作为守护进程部署。

Windows系统管理员可能需要完全不同的接口来启动、停止和管理服务器。我对此完全开放,我只是还没有看到事情的整个方面。

代码语言:javascript
复制
$ ./my-server &
Starting...
$ head /var/my-server.log
2012-3-10 14:34:43.934 [info] Server started! Waiting for connection from client
$ 
EN

回答 2

Stack Overflow用户

发布于 2012-03-11 22:15:59

首先:是的,Windows上的服务器通常都是作为系统服务来实现的。但是,如果服务器也可以从命令行运行以进行故障排除,这将是一个额外的好处。

通常不太难构造代码,以便将特定于服务的逻辑抽象到函数中,这些函数可以检查您是作为服务运行还是在命令行上运行,并相应地运行。我更喜欢只有一个源模块,只包含main()函数和特定于服务的内容。要获得最佳效果,请确保只有此模块知道您在哪种模式下运行。(还请注意,这个模块通常可以从一个项目继承到另一个项目,只需进行少量的更改。)

这样做的另一个优点是,它意味着您可以在命令行模式下完成大部分调试,而无需多个构建选项。您仍然需要测试(可能还需要调试)服务逻辑本身,但这是一项小得多的工作。

您可能已经看到了一些附加信息-- 这里

票数 3
EN

Stack Overflow用户

发布于 2012-03-10 14:24:02

在Windows上,服务是

  1. 以发送到事件日志的事件形式产生大部分人类可读的输出;
  2. 通过操作系统希望响应的任何事件接受来自操作系统的输入,但必须始终响应来自服务控制管理器(SCM)的请求(如“启动服务”“停止服务”、“暂停服务”、.)。 这些事件的确切传递方式取决于您使用的所选编程语言的功能;在C(即OS级)中,您必须设置一个事件循环并检查所接收的事件。通常,您将在分隔的线程中执行实际工作,在事件循环中使用主线程。
  3. 作为服务部署,该服务通常是向SCM注册自身的控制台可执行文件。

有关.NET中的服务的更多信息,请参见这里;关于这些服务在C级(即没有任何高级语言工具)如何工作的细节,请参见这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9647125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档