首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel消费者和提供商应用程序架构

Laravel消费者和提供商应用程序架构
EN

Stack Overflow用户
提问于 2015-07-07 14:44:23
回答 5查看 669关注 0票数 16

我正在使用Laravel构建一个应用程序,帮助用户找到服务提供商。将有2个像Uber这样的应用程序,1个用于用户,1个用于提供商。用户将发出请求,根据请求的不同,选定的提供者将收到通知。就像Uber一样。

问题是,我应该如何设计它。我的想法是:

  1. 2应用程序:有2个带有公共数据库的Laravel应用程序。但是,当用户生成请求时,我如何通知提供者呢?只有数据库改变了,那么我如何告诉提供商应用程序,用户应用程序生成了一个request?
  2. Single应用程序2 FrontEnds:有一个单一的Laravel应用程序和2个前端。将有单独的应用程序在播放商店,但单一服务器应用程序。我该怎么做?

这种方法有没有更好的解决方案?Uber是如何做到这一点的?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-07-09 17:13:06

我建议你应该使用给定的服务,比如PubNub (see Demos)

这样你就可以保存你的服务器开发,还有一个Android-Example,你可以简单地在你的应用程序中使用它,如下所示:

代码语言:javascript
复制
dependencies {
    ....
    compile 'com.pubnub:pubnub:3.7.4'
    //'com.pubnub:pubnub-android-debug:3.7.+' For the debug version
}

代码语言:javascript
复制
import com.pubnub.api.*;
import org.json.*;

Pubnub pubnub = new Pubnub("demo", "demo");

try {
  pubnub.subscribe("my_channel", new Callback() {
      @Override
      public void connectCallback(String channel, Object message) {
          pubnub.publish("my_channel", "Hello from the PubNub Java SDK", new Callback() {});
      }

      @Override
      public void disconnectCallback(String channel, Object message) {
          System.out.println("SUBSCRIBE : DISCONNECT on channel:" + channel
                     + " : " + message.getClass() + " : "
                     + message.toString());
      }

      public void reconnectCallback(String channel, Object message) {
          System.out.println("SUBSCRIBE : RECONNECT on channel:" + channel
                     + " : " + message.getClass() + " : "
                     + message.toString());
      }

      @Override
      public void successCallback(String channel, Object message) {
          System.out.println("SUBSCRIBE : " + channel + " : "
                     + message.getClass() + " : " + message.toString());
      }

      @Override
      public void errorCallback(String channel, PubnubError error) {
          System.out.println("SUBSCRIBE : ERROR on channel " + channel
                     + " : " + error.toString());
      }
    }
  );
} catch (PubnubException e) {
  System.out.println(e.toString());
}

如果你想知道优步是如何做到这一点的,可以看看教程"The PubNub Connected Car Solution Kit“。

所以我希望我能回答,Uber是如何做到这一点的,以及您如何让它变得更好:-)

票数 8
EN

Stack Overflow用户

发布于 2015-07-09 16:18:03

我认为一个好的解决方案是将所有业务逻辑放到一个Laravel应用程序中,该应用程序可以通过REST访问。因此,您不必更新文件两次。

“真正的”应用程序只能作为中间层工作,并使用此API。

例如,在前面,你可以设置Angular Apps。如果您使用nginx,您可以为每个域定义不同的位置。这样,所有以"api“开头的请求都会被路由到您的Laravel应用程序。其余的被路由到你的静态Angular应用程序。

代码语言:javascript
复制
{
    listen 80;
    server_name customer.com;

    location /api{
        root /var/www/api;
    }

    location / {
        root /var/www/static/customer;
    }
}

{
    listen 80;
    server_name internalarea.com;

    location /api{
        root /var/www/api;
    }

    location / {
        root /var/www/static/restricted;
    }
}

https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms

如果你也用Laravel构建你的前端应用,API就会变成一个自己的URL,供前端系统使用。对于这个请求,我喜欢使用Zend\Http\Client,它非常舒服。

票数 5
EN

Stack Overflow用户

发布于 2015-07-09 15:51:49

如果您想为普通用户和提供商开发应用程序。

然后我会建议你开发两个独立的应用程序和一个服务器(永远不要为任何应用程序创建不同的服务器)

或者,您可以在注册时指定用户类型

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31261533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档