【问题标题】:Web service for LaravelLaravel 的网络服务
【发布时间】:2017-02-16 18:12:41
【问题描述】:

假设我有一个带有 SDK 的第三方数据库应用程序,可用于从 XML 数据库中检索数据。

另一方面,我使用 PHP 的 Laravel 框架开发了一个网站。该网站应该显示来自应用程序数据库的数据。

关于上述问题,我有以下问题:

  1. 据我了解,我可以将请求的数据存储在我的网站数据库中,也可以直接显示而不存储。你建议什么技术?
  2. 如何实现从数据库服务器到网站的xml数据传输? 考虑到我有 C# 开发经验,我假设我必须开发一些可以在数据库服务器上运行的 Web 服务,检索所需的数据并将其发送到我的网站。因此,Web 服务必须接收来自我的 Laravel 网站的请求,相应地从数据库服务器中检索数据,并将 xml 响应传递给最终显示它的网站。我走对了吗?如果是这样,您能否指导我如何编码和绑定这些部分?

提前谢谢你。

【问题讨论】:

  • 您好,澄清一下 - “第三方数据库应用程序”是指您通过 SDK 处理并返回 XML 的本地数据库吗?或者你的意思是这是一个由第三方托管的为你提供 XML 的 Web 服务?
  • 如果您还没有在源数据库服务上运行 web 服务,为什么不在那里运行整个东西呢?然后你只需要一个运行在那里并服务请求的 Laravel 应用程序......如果不是,那么你将不得不开发 web 服务和与之对话的前端应用程序。这是一个非常广泛的问题......有很多方法可以做到......
  • @RyanLund 确切地说,“第三方数据库应用程序”是指本地数据库,其 SDK 可返回不同类型的 xml 消息。
  • @Serge 问题是 laravel 网站将托管在一些公共托管服务器上,而本地数据库则维护在组织内的本地机器上。
  • 您可以简单地远程连接到组织内的数据库。您可以建立一个 vpn 连接并且非常安全,因为您将以一种或另一种方式通过组织的防火墙...您将使用什么数据库引擎?

标签: c# php xml laravel wcf


【解决方案1】:

我必须同意 cmets 中的@Serge - 有很多方法可以做到这一点,因为这是一个非常广泛的问题。

我的回答主要是要处理第三方数据库的更新频率,但从您的 cmets 来看,我假设它会相当频繁?在这种情况下,我可能会使用此处找到的 firebird 驱动程序从您的 laravel 应用程序直接连接到第三方数据库:https://github.com/jacquestvanzuydam/laravel-firebird(请注意,我从未使用过它,因此我无法评论它的质量)而不是编写 C#网络服务。我对 firebird 本身了解不多,但出于安全原因,您可能希望使用 SSH 隧道或 VPN 进行连接。

然后,如果您知道数据不太可能经常更改,我会将数据存储在 MySQL 中(在这种情况下,您将使用 laravel 命令,按计划运行,每 [X] 天从 firebird 中提取数据/hours/minutes 取决于数据),或者,如果数据可能会在每个潜在的 Web 请求上发生变化,则使用某种形式的缓存系统(redis、memcache、文件缓存等)来加速 Web 请求。

抱歉,如果这不是特别有用 - 如果您能提供更多信息,也许我可以进一步帮助您:)

祝你好运!

【讨论】:

  • 我喜欢你提出的想法——尤其是因为我不需要开发单独的 Web 服务。但是有一个问题——第三方数据库是加密的。因此,我没有关于表及其列结构以及关系的信息。关于第三方解决方案,我唯一拥有的就是它的 SDK。因此,我认为开发 Web 服务将是与数据库通信的唯一方式。但我目前陷入困境,因为我无法想象 xml 数据在系统之间传输的方式。
  • 更具体地说,是的,我知道我的 Web 服务将引用 SDK 中的一些方法,这些方法将从数据库中提取数据,以便在输出中包含一些 xml 消息。你下一步怎么做?我应该如何向我的网站提供响应(发送 xml)?更一般地说,我如何将我的 .Net Web 服务与我的 PHP/Laravel 网站进行通信?我在哪里可以了解更多关于这种框架组合的信息?
  • 当您说加密时,它是如何加密的(请记住,我一般对 firebird 知之甚少)?如果您真的没有其他选择并且数据库中的数据可能会定期更改,那么最简单的方法是使用 C# SDK 编写一个简单的 REST api,然后简单地使用 curl 从您的 laravel 应用程序向该 api 发出请求。您可以通过将 C# 端的数据格式从 XML 更改为更紧凑的格式(如 JSON)来加快速度(无论如何,在 laravel 端更容易解析)......在下一条评论中继续。
  • 这样做意味着,在对您的 laravel 站点的每个 Web 请求中,您都会调用(或多个)您在 C# 中构建的 REST api。为了加快速度,我会采用某种形式的缓存——至少对于最重要/最常用的数据。如果数据不太可能经常更改,那么我会编写一个 laravel 命令,该命令将从 REST api 检索数据,将其保存在数据库/缓存中,并在每个 Web 请求时从该数据库/缓存中读取。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
  • 2018-06-16
  • 2011-09-15
相关资源
最近更新 更多