问题描述
如果用java写移动端的服务器是不是可以直接抛弃基于servlet的框架了,感觉那些框架能做的netty都可以做。而且struts等等框架还多了个无用的view。其实就是问一下java编写移动app的服务器端可以用什么技术?Netty肯定可以用的,好像也可以直接写servlet然后发布到j2ee容器?感觉nodejs也可以,不过不是java语言的了。而且nodejs似乎不能处理业务逻辑非常复杂、计算很多的业务。请指教,刚转服务器端开发的不是很明白这些。。。
解决方案
其实理解本质即可:1. servlet是放到http容器中运行的,也就是说,容器已经替你完成底层的工作,例如处理连接,协议解析等,这样自己可以专注于业务逻辑的处理。拿tomcat举例,tomcat底层已经tcpip,之后实现http协议,具体io的处理是bio还是nio,这些可以配置,用户只需要写servlet处理get,post等方法即可。2. 如果不写servlet,使用netty等框架,就等于更底层一点,netty只负责tcpip的链接的处理,提供了一个框架给你,具体的协议的制定,实现等一般自己完成,使用bio或nio等需要自己控制。优缺点:1.使用tomcat,编写servlet等的方式,优点:开发效率高,client端处理灵活,只要支持http协议即可;缺点:性能相对来说,会比较低,毕竟http传递的消息头和消息体的传输还是比较大的2. 使用netty,优点:性能较高,支持的协议更灵活,可以是http,可以是自定义的协议。缺点:开发效率低,对编程要求高。
解决方案二:
完全可以,走简单字符串协议交互,并发还能得到保障,但是不方便与第三方合作与接入,还是推荐http型的api网站,json交互。这样调用方便,扩展容易。首选springMVC
解决方案三:
推荐使用GO
解决方案四:
在你的设计中是否需要,或完全应用 HTTP协议。比如消息头 状态码 消息格式 消息体这类信息。 如果你本身没有把HTTP当成应用层协议,而只是作为传输层协议,那么是的,可以完全用纯tcp替代。
解决方案五:
的确可以考虑抛弃servlet,不过那样对开发的效率来说可能会比较糟糕,这就好像要你用单纯的nodejs实现一个网站一样,有好多的基础处理要自己来写。如果你追求的是执行效率,如在一些要求低成本并发量又很高的场景下,可以考虑使用netty,但是难度真的很高。