java语言的高扩展性和跨平台性使得很多网站使用java的ssh框架开发,同时php的方便快捷也是开发网站的利器,往往会出现一个大的项目,由许多小的项目组成,其中就有可能既有java又有php项目,为了体现整体性,就需要在不同模块,不同语言进行数据上的共享,如何进行php与java的数据共享呢,这里根据经验总结了几条:
1.数据库
最常用的方式莫过于数据库了,无论php还是java底层都会用数据,如果项目用的是同一个数据库,那么很好办,可以通过建立视图,也可以直接建立访问多个数据库的连接,这样一段插入,另一端进行读取,就能保证数据的交互了,而且业务逻辑也不用过多的修改,但是缺点是,如果通过视图的话,不利与数据迁移和备份,如果采用建立多个连接的方式,又会出现连接过多的方式,尤其使用数据库连接池的情况,如果有10个库,那么就要建10个连接,OMG,这也是一个不小的开支了。
2.cookie
有些人会问,为什么是cookie,session不是更好吗?虽然通过tomcat配置,session可以跨域共享数据,但是php用的是psession字符串保留key,而java用的是jsession,这就导致通过session共享的复杂行,而cookie是跟浏览器相关的,跟用什么语言没有关系,用cookie就能解决php与java少量数据信息的传递,比如登录信息,完全可以用php登录,然后java通过cookie获取登录状态,解决统一登录问题。
3.jsonp
有些时候,两个系统有共同的需求,如果分别在两个系统单独实现一遍,既繁琐,又浪费时间,代码结构也被打乱,这样可以通过jsonp的方式,发送跨域的ajax,比如加好友的功能。缺点是这能发送get请求,传递信息也是有限的。
4.nginx,apache转发
针对jsonp的局限性,另一种方式也是可选的,通过在服务器配置url rewrite的功能,来实现跨系统发送post请求的功能。
5.缓存memcache
除了以上方案,缓存也是一种考虑,java,php都有访问memcache的客户短,只要定义一种大家都能识别的形式就可以通信了比如json。
6.还有一种万能的解决方案就是直接用代码发送http请求,然后获取返回解决,可以是json,也可以string,但是这种方式在效率上不及前面方法,所以放在最后,不过可以结合缓存进行加速,例如android的客户端与服务端的通信获取数据就是通过这种方式。
阅读(1281) | 评论(0) | 转发(0) |