“服务器端软件”可以指很多不同的东西,例如一个简单的应用程序只是在特定端口上“回显”所有内容,或者是一个 Telnet/FTP 服务器,或者是运行许多“服务”的 Web 服务器。
那么你的特定应用程序在这个可能性范围内的哪里?如果没有更多的信息,很难提出任何建议,但让我们看看...
1. Web 服务,即您的“服务器端”需求是处理单个请求并在完成某些业务逻辑后作出响应。通常通过 SOAP/XML 进行通信,如果您有基于 Web 的客户端,则这是理想的(尽管没有阻止您通过独立客户端访问这些服务)。通常您将这些托管在 Web 服务器上,通常它们最容易用 Java 编写(我还没有遇到过需要使用 C++ 编写的 Web 服务!)
2. 简单的网站 - 与上述略有不同,响应 HTML get/post 请求并提供静态或动态内容(我猜这不是您想要的!)
3. 独立服务器响应某些特定内容,在这种情况下,您必须实现自己的“消息”/协议等,服务器将在收到请求时执行特定功能,可能会发送响应。关键是服务器执行某些特定任务,而不是通用容器(此时,1更有意义!)
那么您的应用程序在哪里?如果是 1/2,请使用 Java 或某些脚本语言(例如 Perl/ASP/JSP 等)。如果是 3,则可以使用 C++,如果这样做,请使用适当的抽象,例如 boost::asio 和 Google Protocol 缓冲区,可以节省很多麻烦...
关于安全性,当然会不断发现漏洞和安全漏洞,但某些 OS 项目的好处是社区将处理并修复它们。让我们这样说,使用它们比使用自己定制的手动实现更安全,您能够解决它们多年来遇到的所有问题的可能性非常小(不是贬低您的能力!)
编辑:现在有了一些更多的信息,这是一个可能的方法(这是我过去所做的,并且我大部分时间都使用 Java..)
1. 面向客户端的服务器应该是可靠的,特别是如果它在互联网上,这里我会使用经过验证的产品,例如 Apache 或 IIS(取决于您有哪些技术)。在我看来,我会选择 jBoss AS - 非常强大且易于定制的工具,并与许多不同的东西集成得非常好(当然全部是 Java!)然后,您可以有一个简单的 Java 位,可以委托给实际执行工作的服务器进程..
2. 对于服务器进程,如果您熟悉,则可以使用 C++
我之前漏掉了一个关键点,那就是1和2如何相互通信。在这里,您应该查看开源消息产品(比asio或协议缓冲器更高级),我会推荐Zero MQ或Red Hat Messaging(两者都是MQ消息协议)。这种“消息总线”的巨大优势在于服务器之间没有紧密耦合,如果使用自己编写的实现,您将需要做很多样板来使交互正常工作,而使用MQ等产品,您将拥有跨平台通信而无需深入了解细节...如果选择使用这样的产品,您可以节省很多时间和麻烦。(顺便说一句,还有其他消息产品可用,有些更易于使用,例如Tibco RV或EMS等,但它们是商业产品,许可证将花费很多钱!)
使用消息传递解决方案后,您的服务器变得非常简单,因为它们只需要处理传入的消息并将消息再发送出去,您可以专注于业务逻辑...
以上是我的两分钱意见... :)