本人作为程序员刚满一年,刚开始做安卓开发,后转做JAVA服务端,时间大概半年左右。
这段时间所做的一个项目是JAVA HTTP的服务端,通过SpringMVC框架来进行HTTP POST请求的分发,纯服务,没有页面展示,为手机端提供数据服务。
这个程序最终通过打包成war然后放到TOMCAT上运行,属于正常的J2EE程序。
现在接下去要做一个有关通讯的JAVA项目,服务端采用MINA框架进行手机与服务器的TCP长连接处理,其中还有基于ICE的转发和推送等内容,等于是一个C/S架构的程序。
请问各位大神,对于这样一个程序,目前阶段的设计是把它做成一个类似WEB项目,放到TOMCAT上来启动,这样会不会有什么问题?我总感觉这不应该是一个C/S程序的运行方式,因为TOMCAT提供的WEB容器是给WEB程序提供运行环境的。
假如这样是不合理的,那么对于JAVA的C/S程序,一般性的做法是如何启动的?发布成JAR包通过MAIN方法来启动?还是有其他更规范的做法?
------解决思路----------------------
以jar包方式运行,main方法启动,不要放到tomcat下。因为mina框架本身就是一种socket框架了,可以直接连接,不需要再次经过tomcat。并且tomcat是按照http协议(短连接)设计的,不适合用来做长连接服务器;再者经过tomcat处理,就相当于多出了tomcat服务器的处理时间,对性能也有一定的影响的。
------解决思路----------------------
我总感觉这不应该是一个C/S程序的运行方式,因为TOMCAT提供的WEB容器是给WEB程序提供运行环境的。
你的感觉有误,现在都这么玩的,比如网上很多开放平台的后台接口都是Rest风格的,这些东西肯定也是跑在web容器里的,没有界面(或者只对内),依然对外提供服务。
------解决思路----------------------
完全没有问题,即使是是一个web工程你将他打成war包,放在容器中,既可以作为接口服务器,也可以作为C/S的S端
------解决思路----------------------
楼主提出的问题,感觉涉及到架构方面的内容了,不是一个刚刚接触编程1~2年的人应该考虑的。
原有的程序是基于TCP协议进行通信的,无论用Java还是C++来实现,都是可以的。
一般来讲,服务器和服务器之间的通信,数据量较大,都采用长连接,批量传输的形式。
个人PC(或者智能手机)与服务器的通信,一般由于数据量小,收发频率不高,而采用短连接或者UDP协议来做。
注意,我说的是服务器而不是通信的服务端,这个是有区别的。
楼主要开发的程序要面向最终的用户,那么,选用Web网站的形式是可行的。用户只要通过浏览器访问站点即可。
如果楼主的项目是要给每个用户的PC端上都装一个Tomcat,每个用户访问自己本机的Tomcat项目,这种架构我是不赞同使用的。
我这里可以提供两种方案:
一。开发一个网站,用户通过浏览器进行上网,访问统一的站点。
二。开发一个客户端程序,直接和服务通信,客户端程序负责数据的展现和用户的交互。