我正在为Java中的远程文件存储设计一个服务器,并试图决定是使用异步java.nio.SocketChannels还是使用旧的套接字阻塞模型。在选择这两种服务器架构时,我应该考虑哪些因素,哪种任务更适合其中一种?
具体来说,我想知道这些不同的方法是如何比较的:
此外,还有什么其他的因素,我应该知道,这将有利于一种方法,而不是另一种?
发布于 2015-03-13 15:57:36
你为什么要解决一个已经解决的问题?至少已经有两个好的例子:
用Java™编程语言编写可伸缩的服务器应用程序一直很困难。在Java /O (NIO)出现之前,线程管理问题使得服务器无法扩展到数千个用户。Grizzly框架旨在帮助开发人员利用Java。Grizzly的目标是帮助开发人员使用NIO构建可伸缩和健壮的服务器,并提供扩展的框架组件: WebSocket (HTTP/S)、WebSocket、Comet等等!
Netty是一种NIO客户端服务器框架,它支持网络应用程序(如协议服务器和客户端)的快速和轻松开发。它大大简化和简化了网络编程,如TCP和UDP套接字服务器。“快速和简单”并不意味着最终的应用程序会受到可维护性或性能问题的影响。Netty是根据许多协议(如FTP、SMTP、HTTP以及各种二进制和基于文本的遗留协议)的实现所获得的经验精心设计的。因此,Netty成功地找到了一种在不妥协的情况下实现轻松开发、性能、稳定和灵活性的方法。
在我看来,你对自己解决问题不太感兴趣,而不是仅仅解决问题--这样你就可以拥有远程文件存储。就我个人而言,我在我的应用程序中使用了Netty,它工作得很好。不要重新发明轮子--用别人的。
https://softwareengineering.stackexchange.com/questions/275117
复制相似问题