我即将开始开发一个使用spring的常规和移动版本的网站。在这一点上,我需要决定如何处理这个问题。我预见到两种选择:
同一服务器上的独立站点。为每个站点开发一组独立的控制器和视图。尝试尽可能多地重用控制器。
混合网站。开发内容感知控制器,根据设备类型发送到不同的视图。控制器根据设备发送到不同的视图。
选项1似乎更实用,但我担心我最终会失去很多控制器重复。另外,我需要将网站分为http://something.com/和http://something.com/m作为移动版本的基础。
选项2似乎很快就会变得无法管理,因为常规版本的变化会对移动版本产生影响。然而,它将有更多的代码重用。
你会怎么做?
答案 0 :(得分:3)
选项2总是看起来很诱人,但根据我的经验,结果证明是不切实际的。总是,除了琐碎的网站之外,全流量和移动版本之间的页面流量变得不同,数据呈现的数据不同。它不仅仅是一个不同的皮肤。
我的建议是努力确定常见的业务逻辑,并将其纳入通用代码。保持控制器尽可能薄,但通过使用桌面和移动专用控制器,您可以将它们集中在一起。是的,会有一些重复,但希望它可以最小化。
将公共逻辑定义为webapp级别/WEB-INF/applicationContext.xml
beans文件中的bean。然后为每个站点定义一个单独的DispatcherServlet
,包含特定的控制器,共享公共bean。
答案 1 :(得分:0)
如果只是表示不同,即不同的视图,但相同的模型和相同的业务逻辑,我建议尝试在每个控制器的方面识别客户端。
如果他们应该使用不同的底层调用,我会选择具有不同url但仍在同一servlet中的额外控制器。