Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 如何从Google云平台服务调用桌面应用程序?_Google Cloud Platform_Websocket_Architecture_Google Cloud Pubsub - Fatal编程技术网

Google cloud platform 如何从Google云平台服务调用桌面应用程序?

Google cloud platform 如何从Google云平台服务调用桌面应用程序?,google-cloud-platform,websocket,architecture,google-cloud-pubsub,Google Cloud Platform,Websocket,Architecture,Google Cloud Pubsub,我正在构建一个桌面客户端应用程序(win/linux/mac),后端托管在GCP中(我也在考虑其他云平台)。桌面应用程序应该是最低限度的,并提供对后端本地机器资源的访问。我正在寻找一种从服务器调用我的应用程序的方法(当一些事件发生时),然后应用程序将在本地机器上执行一些工作。这是我到目前为止试过的 。看起来它满足了我的需要,但要让它发挥作用,我必须创建一个服务帐户,生成JSON密钥并将其存储在本地,这并不好。当然,我可以限制服务帐户的访问权限,但对我来说还是不太好。也许还有其他方法来验证在最终用

我正在构建一个桌面客户端应用程序(win/linux/mac),后端托管在GCP中(我也在考虑其他云平台)。桌面应用程序应该是最低限度的,并提供对后端本地机器资源的访问。我正在寻找一种从服务器调用我的应用程序的方法(当一些事件发生时),然后应用程序将在本地机器上执行一些工作。这是我到目前为止试过的

  • 。看起来它满足了我的需要,但要让它发挥作用,我必须创建一个服务帐户,生成JSON密钥并将其存储在本地,这并不好。当然,我可以限制服务帐户的访问权限,但对我来说还是不太好。也许还有其他方法来验证在最终用户计算机上运行的我的应用程序?我想让我的桌面应用程序最小化(理想情况下没有UI,只是一个“代理”控制台进程/Windows服务)。也许我可以考虑一个登录屏幕来连接应用程序和后端,如果这解决了问题,但我不想过于复杂。< /P>
  • 。这个解决方案看起来也不错,但有一个明显的缺点。只要至少有一个打开的WebSocket,云运行实例就被认为是活动的,因此需要付费。还有与可伸缩性和容器实例同步相关的问题


  • 您对上述选项有何看法,还有哪些其他可能性?我是否只剩下RESTAPI和轮询更新?我对云技术还不熟悉,所以非常感谢您的帮助。谢谢

    如果你想从谷歌云调用你的本地应用程序,你需要两件事

    • 第一个,在谷歌云上注册你的应用,最好是一个认证机制(比如可以是API密钥)。像这样,GCP后端知道在哪里调用你的应用程序(哪个IP/端口)以及如何调用(身份验证机制)
    • 第二是让你的应用程序启动并运行,并收听外部通信。HTTP是最简单的方法。等待注册期间定义的IP/端口上的HTTP调用,检查身份验证并执行该过程
    例如,您可以将数据(位置和身份验证)存储在firestore中,并使用Cloud Run执行HTTP调用


    您还可以反转解决方案,并在后端运行时从本地应用程序轮询(长轮询或常规轮询)


    这两种方法都是可能的,第二种方法稍微简单一些,但在管理安全性方面可能会有挑战性。

    如果你想从谷歌云调用你的本地应用程序,你需要两件事

    • 第一个,在谷歌云上注册你的应用,最好是一个认证机制(比如可以是API密钥)。像这样,GCP后端知道在哪里调用你的应用程序(哪个IP/端口)以及如何调用(身份验证机制)
    • 第二是让你的应用程序启动并运行,并收听外部通信。HTTP是最简单的方法。等待注册期间定义的IP/端口上的HTTP调用,检查身份验证并执行该过程
    例如,您可以将数据(位置和身份验证)存储在firestore中,并使用Cloud Run执行HTTP调用


    您还可以反转解决方案,并在后端运行时从本地应用程序轮询(长轮询或常规轮询)


    这两种方法都是可能的,第二种方法稍微简单一些,但在管理安全性方面可能会有挑战性。

    非常感谢您提供的详细答案。您的解决方案是有道理的,但问题是客户端应用程序将安装在(几乎)始终位于NAT后面的最终用户机器上。这就是为什么我一直在寻找一个现成的解决方案来处理这个问题(比如Pub/Sub)。如果我找不到一个简单的方法来验证我的应用程序,我可能会使用轮询解决方案…PubSub有2种模式。如果使用推送模式,则需要知道目标的IP/url。在NAT背后,它确实是一个问题(与PUbSub或任何其他推送(从云)到您的应用程序的解决方案有关)。第二种模式是拉式:应用程序创建连接并侦听订阅。这是一种轮询解决方案,比其他解决方案更具包装性,但它不是魔术,它也是轮询!这里的挑战是身份验证。根据流程(与用户或非用户)不同的解决方案是可能的。非常感谢您提供的详细答案。您的解决方案是有意义的,但问题是客户端应用程序将安装在(几乎)始终位于NAT后面的最终用户机器上。这就是为什么我在寻找一个随时可用的解决方案来处理此问题(如Pub/Sub)。如果我找不到一个简单的方法来验证我的应用程序,我可能会使用轮询解决方案…PubSub有2种模式。如果使用推送模式,你需要知道目标的IP/url。在NAT背后,这确实是一个问题(使用PubSub或任何其他推送(来自云)应用程序的解决方案。第二种模式是拉式模式:应用程序创建连接并侦听订阅。这是一种轮询解决方案,比其他解决方案更具包装性,但这不是魔术,它也是轮询!这里的挑战是身份验证。根据流(用户与否),可以使用不同的解决方案。