Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 套接字服务器与标准服务器_C++_Apache_Sockets_Scripting - Fatal编程技术网

C++ 套接字服务器与标准服务器

C++ 套接字服务器与标准服务器,c++,apache,sockets,scripting,C++,Apache,Sockets,Scripting,我正在从事一个项目,其中很大一部分是服务器端软件。我开始使用ScCub库在C++中编程。但是,我的一个合作伙伴建议我们使用像IIS、Apache或nginx这样的标准服务器 从长远来看,哪一个更好?当我用C++编程时,我可以直接访问原始请求,如在使用标准服务器的情况下,我需要使用脚本语言来处理请求。在任何情况下,哪一个是更好的选择,为什么 此外,当涉及DDOS攻击等安全问题时,标准服务器是否已经提供了保护?如果我想在我的socket服务器上实现它,那么最好的方法是什么?服务器端软件可能意味着很多

我正在从事一个项目,其中很大一部分是服务器端软件。我开始使用ScCub库在C++中编程。但是,我的一个合作伙伴建议我们使用像IIS、Apache或nginx这样的标准服务器

从长远来看,哪一个更好?当我用C++编程时,我可以直接访问原始请求,如在使用标准服务器的情况下,我需要使用脚本语言来处理请求。在任何情况下,哪一个是更好的选择,为什么

此外,当涉及DDOS攻击等安全问题时,标准服务器是否已经提供了保护?如果我想在我的socket服务器上实现它,那么最好的方法是什么?

服务器端软件可能意味着很多不同的东西,例如,这可能是一个简单的应用程序,它可以将所有东西“回显”到特定的端口,到telnet/ftp服务器,到运行大量“服务”的Web服务器

那么,在这一系列可能性中,您的特定应用程序位于何处?没有进一步的信息,很难提出任何建议,但让我们看看

  • Web服务,即您的“服务器端”需求是处理单个请求,并在完成一组业务逻辑后作出响应。通常,通信是通过SOAP/XML进行的,如果您使用基于web的客户端,这是非常理想的(尽管没有任何东西阻止您通过独立客户端访问这些服务)。TypAy你在上面提到的Web服务器上托管这些,而且它们通常是用java编写的最简单的(我还没有遇到C++需要编写的)!
  • 简单的网站-与上面稍有不同,响应HTML get/post请求并提供静态或动态内容(我猜这不是您想要的!)
  • 独立服务器对特定的内容做出响应,在这里您必须实现自己的“消息传递”/协议等,服务器将对传入的请求执行特定的功能,并可能将响应发送回。这里的关键是服务器做一些特定的事情,而不是一个通用容器(在这一点上,1更有意义!)
  • 那么你的申请在哪里?如果1/2使用java或一些脚本语言(如Perl/ASP/JSP等),如果3,你当然可以使用C++,如果你使用了一个合适的抽象,比如Boosi::Asio和谷歌协议缓冲区,就可以省去很多的头痛…… 关于安全性,当然,bug和安全漏洞总是被发现的,然而,这些操作系统项目中的一些好处是,社区将解决并修复它们。比方说,使用它们比使用自己定制的手动校正更安全,您能够解决它们在使用这些年中可能遇到的所有问题的可能性非常小(不尊重您的能力!)

    编辑:现在有了更多的信息,这里有一种可能的方法(这是我在过去所做的,我大部分时间都使用Java….)

  • 面向客户机的服务器应该是可靠的,特别是如果它是通过internet的,这里我会使用一个经过验证的产品,比如ApacheIsGood或IIS(取决于可用的技术)。恕我直言,我会选择jBoss作为一个非常强大且易于定制的工具包,并与许多不同的东西(当然都是Java!)进行了很好的集成。然后,您可以使用一点简单的Java,然后将其委托给实际的服务器进程来完成这项工作

  • 对于服务器进程,如果你对

    感到满意,你可以使用C++。 我漏掉了一个关键点,这就是1和2之间的对话方式。这是您应该关注的开源消息传递产品(甚至比asio或协议缓冲区更高的级别),这里我将关注Zero MQ或Red Hat消息传递(两者都是MQ消息传递协议),这种类型的“消息传递总线”的最大优势是您的服务器之间没有紧密耦合,使用您自己的手动实现,您将要做大量的样板文件,以使交互正常工作,使用MQ之类的工具,您将可以进行多平台通信,而无需深入了解细节。。。如果你选择使用那样的东西,你会节省很多时间和麻烦。。(顺便说一句,还有其他的消息传递产品,其中一些更容易使用-如Tibco RV或EMS等,但它们是商业产品,许可证将花费大量资金!)

    使用消息传递解决方案,您的服务器变得微不足道,因为它们只需处理传入的消息并再次发送消息,您可以专注于业务逻辑


    我的两便士……:)

    如果您选择Nim列表中的第一个解决方案(web服务),我建议您看看,并且(如果您不局限于C++)。Web服务可能是满足您需求的最佳解决方案,因为您可以快速构建它们,并将其用作系统服务器端的处理模块或代理模块。

    这完全取决于您的应用程序是什么。如果你正在做的事情已经包含在上面的其中一项中,那么不要重新发明轮子。这实际上取决于你的需求。是否有任何您想做的事情只有在您自己编写服务器时才能做?像Apache和IIS这样的应用程序经过了很好的测试,比您在任何合理的时间内能够自己生成的任何应用程序都更稳定、更安全,因此有很好的理由不使用它们。好的。现在,我有了一个大致的答案,让我试着更具体一点。我的项目在服务器端大约有5个组件,其中只有1个组件提供所有内容。其余部分在多个类似实例之间交互,以处理用户数据并从中得出结果。所有1/2/3似乎都最适合content server,因为它只在