我正在一个项目中,其中很大一部分是服务器端软件。我开始使用套接字库在C++中进行编程。但是,我的一位合作伙伴建议我们使用IIS,Apache或nginx等标准服务器。
从长远来看,哪个更好?当我使用C++进行编程时,我可以直接访问原始请求,而在使用标准服务器的情况下,我需要使用脚本语言来处理请求。无论如何,哪个是更好的选择,为什么?
此外,当涉及DDOS攻击等事件的安全性时,标准服务器是否已具有保护功能?如果我想在我的套接字服务器中实现它,最好的方法是什么?
最佳答案
“服务器端软件”可能意味着很多不同的事物,例如,这可能是一个琐碎的应用程序,它将所有内容“回显”到特定的端口,telnet/ftp服务器到运行许多“服务”的网络服务器。
那么,您的特定应用程序在这一切可能性中位于何处?没有更多信息,很难提出任何建议,但让我们看看。
那么您的应用程序在哪里呢?如果1/2使用Java或某些脚本语言(例如Perl/ASP/JSP等),如果使用3,则可以使用C++;如果使用3,则可以使用适当的抽象,例如boost::asio和Google Protocol Buffer ,省去很多头痛...
关于安全性,当然总是会发现错误和安全漏洞,但是其中一些OS项目的好处是社区会解决并修复它们。只是说,您将比使用自己的自定义滚动植入更加安全地使用它们,能够解决他们生活多年以来遇到的所有问题的可能性很小(不尊重尽你所能!)
编辑:现在,有了更多的信息,这是一种可能的方法(这是我过去所做的,并且我在大多数情况下都认为Java ..)
我遗漏了一个关键点,这就是1和2彼此交谈的方式。在这里,您应该查看开源消息传递产品(比asio或 Protocol Buffer 更高的级别),在这里,我将看到零MQ或Red Hat Messaging(都是MQ消息传递协议(protocol))之类的东西,这是一个很大的优势这种“消息总线”的类型是,服务器之间没有紧密的耦合,使用自己的手动实现,您将做很多样板工作,以使交互工作正常进行,例如MQ,您将无需深入细节即可进行多平台交流...您将节省大量时间,并且如果选择使用类似的东西也可以节省很多时间。.(顺便说一句,还有其他消息传递产品,其中一些更易于使用-例如Tibco RV或EMS等,但是它们是商业产品,许可证将花费很多钱!)
使用消息传递解决方案,您的服务器变得无足轻重,因为它们仅处理传入的消息并再次发送回消息,因此您可以专注于业务逻辑...
我的两个便士... :)
关于c++ - 套接字服务器与标准服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4117648/