我想请教下各位前辈,前端用PHP,后端用Java,怎么进行交互额?
AJAX的话可以用JSON
可是如果只是页面跳转的话,用啥额,PHP不可能懂得SpringMVC吧
我想请教下各位前辈,前端用PHP,后端用Java,怎么进行交互额?
AJAX的话可以用JSON
可是如果只是页面跳转的话,用啥额,PHP不可能懂得SpringMVC吧
java只暴露api,然后php拿到json数据,渲染页面,页面跳转放到php呢?
突然想起来之前看到过淘宝ued的一篇文:
主要思想也就是酱紫吧:
前端:负责View和Controller层。
后端:只负责Model层,业务处理/数据等。
文中前端是:node+js+html
你换成:php+js+html
然后看到楼下说的rpc,也不是很懂,就查了一下,可以看这个回答理解一下:
对应的就可以用php的rpc框架了,比如yar,当然不用也是可以的吧
1、可以使用http的方式进行RPC(这也是最基础的方式啦)
2、利用yac等RPC框架(虽然也是基于HTTP的,但是反序列化和序列化会更爽)。
3、使用RabbitMQ等队列。
4、socket。。。。。。(这个比较底层,如果你对连接有特殊需求的话,建议自定义化,当然会复杂以及难度变大)
目前我公司就是这种架构,但是也不是说让php只负责前端,跟淘宝UED的那篇文章,多少有点出入。php当然可以只负责前端来调用java数据接口。但是也可以去负责一些php擅长的逻辑。
java负责大数据的处理之类的。从业务上与PHP分离开。
楼主的问题是如何交互,@seanlook 说的几种方式,比较完整了。大致就是webservice、RPC,soap这几种方式。用java虚拟机跑php,我觉得要比rpc调用会坑很多。
我们公司是用的RPC,但是是自己实现的RPC框架,数据转为二进制的,使用google 的 protobuffer。
rpc调用也很方便。几行代码就搞定了。因为数据传输使用二进制,所以效率上是比soap之类的快。应该是最优的选择了。希望能帮到题主。
更新!
我去,没仔细看楼主的问题,原来只是要交互啊,最简单的,如果你用springmvc,那么你直接把action作为接口暴露出来,php发起http请求调用java的接口就哦了~!
这种情况下,用 Hprose 是个不错的选择。
关于 REST 介绍的文章已经很多了,这里只对 RPC 部分做一个介绍:
RPC(远程过程调用)是什么
远程过程调用发展历程
早期的 RPC
XML-RPC,SOAP,WebService
PHPRPC
Hessian
JSON-RPC
Microsoft WCF,WebAPI
ZeroC Ice,Thrift,GRPC
Hprose
3 回答2.5k 阅读✓ 已解决
3 回答4k 阅读✓ 已解决
8 回答3.4k 阅读
4 回答2.6k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
2 回答3.1k 阅读✓ 已解决
很有意思,我曾经也是老大让我做过这个调研,当时还用php与java结合做了一个项目。看到这里前面的回答,大部分都是说通过RESTfull API或json去调用java处理业务逻辑的结果,而我想题主可能更需要的是
Quercus
、PHP/Java Bridge
或SOAP
这三种技术的一种。Quercus是一个完全以java实现的PHP5引擎,可以让PHP程序在JVM上执行,前端php代码就像引入java包一样,然后就可以直接new一个java对象来使用。这也是我在调研项目中选用的。
PHP/Java Bridge 本质上也是通过XML去前后端交互数据的,但是它实现的PJB协议不需要我们自己去解析XML获取数据,php-java-bridge帮我们做好了数据类型映射这类功能。
SOAP具有与程序语言、平台和硬件无关的特性,不仅可以引用于php和java之间,但是据说效率不怎么高。
实际测试结果,个人真觉得没必要把一个项目用这种实现方法,一个字,zuo。
有了上面这些信息,我相信谷歌可以告诉你更多。