现在的情况是这样的:有两个项目,一个是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层所在的项目宕机了,那两个项目都宕机了。所以我还是倾向于使用第一种方法。各位大神,你们觉得哪种方式会更好一点。为什么?求指导。。

解决方案 »

  1.   

    目测这应该是两个相关度很高的项目,如果是业务逻辑基本相同的两个项目,就没有耦合度高不高的问题(你这边的耦合度高应该是说公用了业务逻辑类),至于使用curl是会造成一些额外的网络带宽(感觉之前你们这个项目的开发者仅仅是为了省事),如果你心有余力可以将curl层去除掉直接在代码层加载model层,直接调用其中的函数而节省掉这部分开销,至于宕机的问题就不用怎么考虑了,如果是单点的话肯定有这方面的可能性,可以考虑加个负载均衡来解决这方面的疑虑。如果真是业务逻辑基本相同,你可以把相同的逻辑拿出来,app和pc都调用这部分公用类,各自实现。
      

  2.   

    相关性高,就必须共用model
    pc端应该在内存中调用,手机api则是http
      

  3.   

    你这应该是一个项目的两个分支吧,一个PC一个APP。
    因为公司选了2,那肯定是因为两个项目用的同一套数据库。如果用同一套数据库,当然应该底层共用的。
      

  4.   

    你用 MVC 的思维去看一个 REST 架构,当然是怎么看都不顺眼了
      

  5.   


    问题他也是采用mvc的架构来开发的。
      

  6.   

    这样手机app不是相当于请求了两次http。手机-》手机服务器-》pc服务器?
      

  7.   

    他的项目可能是 MVC 的,但 API 肯定是 REST 的
    开始流行 SOAP 后来都退到 RPC ,现在的 API 都采用原始的 REST 了
      

  8.   

    这样手机app不是相当于请求了两次http。手机-》手机服务器-》pc服务器?我说的手机api是指http访问到某个接口后,该接口去调用内存中的model,将结果处理打包输出
    只是个人想法,不管是pc端还是手机端,不管是html页面还是需求json数据,想处理数据都必须依赖model层,而model层也不能直接被用户访问到。
      

  9.   


    楼上给位大神都已经帮你解决了!打个酱油!我就想知道是CSDN系统发出的邀请还是您!!!
      

  10.   

    为什么会邀请我!
    现在的CSDN都会根据上线间隔推选邀请人吗?