关于接口的问题

dyz8312752 2015-04-01 11:22:25
现在的情况是这样的:有两个项目,一个是pc端的,一个是app的。服务层都是用php来写的。
现在有两种解决方案。
1、分别建立两个项目,然后分别有自己的业务逻辑和model层。实现两个api完全独立开来。
2、也是建立两个项目,也有自己的业务逻辑,但是共用一个model层。因为是相对应的pc端和app。所以在一些业务逻辑上有很多相似的地方。所以可以把model层放在APP上,然后通过curl之类的一些发起http请求的去获取相对应的数据。这样的好处就是可能是相同的模块请求(指的是app上和pc上的同一个模块,比如说某个列表)会请求同一个url(共用model层,业务上可以用一个标志位来分开,比如,1是app,2是pc上的请求),会减少一定量的代码量(因为model共用),还有可能在修改某个业务逻辑的时候可能修改的地方会少一些。

因为是到一家新公司,所以他们用的2的这种方式来实现。但是我个人总觉得这样是不好的。原因有下:
1、这样的耦合度太高了(项目没有完全区别开来)。
2、在使用curl去获取数据的时候回发起新的http请求,这样会增加额外的带宽,而且会不会出现http请求的过程中出现未知的问题。
3、如果出现一方宕机了,比如说model层所在的项目宕机了,那两个项目都宕机了。

所以我还是倾向于使用第一种方法。各位大神,你们觉得哪种方式会更好一点。为什么?求指导。。
...全文
169 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
LB228988 2015-04-03
  • 打赏
  • 举报
回复
楼上给位大神都已经帮你解决了!打个酱油!我就想知道是CSDN系统发出的邀请还是您!!![/quote]
LB228988 2015-04-03
  • 打赏
  • 举报
回复
楼上给位大神都已经帮你解决了!打个酱油!我就想
dyz8312752 2015-04-03
  • 打赏
  • 举报
回复
总体的来说,各位大神还是没有告诉我到底是哪个比较适合一些。。。。
dyz8312752 2015-04-03
  • 打赏
  • 举报
回复
引用 12 楼 LB228988 的回复:
楼上给位大神都已经帮你解决了!打个酱油!我就想知道是CSDN系统发出的邀请还是您!!!
[/quote] 是我邀请的。。。
LB228988 2015-04-03
  • 打赏
  • 举报
回复
引用 14 楼 dyz8312752 的回复:
总体的来说,各位大神还是没有告诉我到底是哪个比较适合一些。。。。
为什么会邀请我! 现在的CSDN都会根据上线间隔推选邀请人吗?
智商众筹 2015-04-02
  • 打赏
  • 举报
回复
相关性高,就必须共用model pc端应该在内存中调用,手机api则是http
Suckor 2015-04-02
  • 打赏
  • 举报
回复
目测这应该是两个相关度很高的项目,如果是业务逻辑基本相同的两个项目,就没有耦合度高不高的问题(你这边的耦合度高应该是说公用了业务逻辑类),至于使用curl是会造成一些额外的网络带宽(感觉之前你们这个项目的开发者仅仅是为了省事),如果你心有余力可以将curl层去除掉直接在代码层加载model层,直接调用其中的函数而节省掉这部分开销,至于宕机的问题就不用怎么考虑了,如果是单点的话肯定有这方面的可能性,可以考虑加个负载均衡来解决这方面的疑虑。如果真是业务逻辑基本相同,你可以把相同的逻辑拿出来,app和pc都调用这部分公用类,各自实现。
智商众筹 2015-04-02
  • 打赏
  • 举报
回复
引用 8 楼 dyz8312752 的回复:
[quote=引用 2 楼 wander_wind 的回复:] 相关性高,就必须共用model pc端应该在内存中调用,手机api则是http
这样手机app不是相当于请求了两次http。手机-》手机服务器-》pc服务器?[/quote] 我说的手机api是指http访问到某个接口后,该接口去调用内存中的model,将结果处理打包输出 只是个人想法,不管是pc端还是手机端,不管是html页面还是需求json数据,想处理数据都必须依赖model层,而model层也不能直接被用户访问到。
xuzuning 2015-04-02
  • 打赏
  • 举报
回复
他的项目可能是 MVC 的,但 API 肯定是 REST 的 开始流行 SOAP 后来都退到 RPC ,现在的 API 都采用原始的 REST 了
dyz8312752 2015-04-02
  • 打赏
  • 举报
回复
引用 2 楼 wander_wind 的回复:
相关性高,就必须共用model pc端应该在内存中调用,手机api则是http
这样手机app不是相当于请求了两次http。手机-》手机服务器-》pc服务器?
dyz8312752 2015-04-02
  • 打赏
  • 举报
回复
引用 4 楼 jiangbai333 的回复:
第 二种好!
怎么说,能否详细说说。
dyz8312752 2015-04-02
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
你用 MVC 的思维去看一个 REST 架构,当然是怎么看都不顺眼了
问题他也是采用mvc的架构来开发的。。。。
xuzuning 2015-04-02
  • 打赏
  • 举报
回复
你用 MVC 的思维去看一个 REST 架构,当然是怎么看都不顺眼了
jiangbai333 2015-04-02
  • 打赏
  • 举报
回复
第 二种好!
沪php攻城师 2015-04-02
  • 打赏
  • 举报
回复
你这应该是一个项目的两个分支吧,一个PC一个APP。 因为公司选了2,那肯定是因为两个项目用的同一套数据库。如果用同一套数据库,当然应该底层共用的。

20,395

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧