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



我正在使用Laravel构建一个应用程序,帮助用户找到服务提供商。将有2个应用程序,如优步,1为用户和1为供应商。用户将提出请求,根据请求,所选的提供者将收到通知。就像优步。

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

  1. 2应用程序:有2个Laravel应用程序与共同的数据库。但是,当用户生成请求时,我如何通知提供者?只有数据库的变化,所以我如何告诉提供商应用程序,用户应用程序生成了一个请求?

  2. 单一应用程序2前端:拥有一个Laravel应用程序和两个前端。将有单独的应用程序在Play商店,但单一的服务器应用程序。我怎么能做到这一点?

对于这种方法是否有更好的解决方案?优步是如何做到这一点的?

我建议您应该使用像PubNub这样的给定服务(参见演示)。

这样你就可以保存你的Server-Development,还有一个Android-Example你只需在APP中像这样使用它:

dependencies {
    ....
    compile 'com.pubnub:pubnub:3.7.4'
    //'com.pubnub:pubnub-android-debug:3.7.+' For the debug version
}

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());
}

如果你正在寻找优步是如何做到这一点的想法,看看教程"PubNub互联汽车解决方案工具包"

所以我希望我能回答,优步是怎么做到的,你怎么能做得更好:-)

我认为一个好的解决方案是将所有业务逻辑放入一个可以通过REST访问的Laravel应用程序中。所以你不需要更新两次文件。

"真正的"应用程序只作为中间层使用这个API。

例如,在前面你可以设置Angular应用程序。如果你使用nginx,你可以为每个域定义不同的位置。这样,所有以"api"开头的请求都会被路由到你的Laravel应用程序。其余部分被路由到你的静态Angular应用。
{
    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,供前端系统使用。为了完成这些请求,我喜欢使用ZendHttpClient,这是非常舒适的。

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

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

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

你应该开发一个通用API和两个像Uber这样的应用程序。或者你也可以像eBay一样,只为卖家和买家开发一款应用。您应该在服务器代码中使用侦听器,这样每当触发事件时,您就应该发送这样或那样的通知。看一下监听器的设计模式

由于存在单个(数据库),因此最好使用单个后端应用程序。当用户添加新请求时,你可以发送推送通知给提供商(android应用程序)。

相关内容

最新更新