【问题标题】:How to run code immediately in some other application如何在其他应用程序中立即运行代码
【发布时间】:2017-12-23 14:20:15
【问题描述】:

我有两个 Asp.Net 网络应用程序,应用程序 1 和应用程序 2。它们都使用相同的数据库。我正在尝试从 App 1 发出命令并立即在 App 2 中运行一些代码。

我能想到的唯一方法是在数据库中插入一个命令,让 App 2 每隔几分钟轮询一次数据库。但这意味着运行代码可能会有延迟。

有没有办法立即在 App 2 中运行代码?

【问题讨论】:

  • 应用程序通常不是通过数据库进行通信,而是通过 HTTP 请求(Web API)或总线消息(Azure Service BusRabbitMQ 等)进行通信

标签: asp.net .net web-applications push polling


【解决方案1】:

您可以从一个应用程序向另一个应用程序触发 HttpRequest,代码几乎会立即运行。

我不知道你使用的是什么语言和平台,所以很难给你具体的例子,但这里是大纲:

在 App2 中创建一个页面。在标准 ASP.Net 中,您可以使用处理程序。在 ASP Core 中,您可以使用 API 控制器。两辆车都以 JSON 或 XML 格式返回单个值或完整对象。或者,如果您想返回 HTML,您可以使用标准页面。后面的代码就是你想要运行的。来自处理程序或控制器的呈现页面或返回值是您希望 App1 作为响应返回的内容。

然后从 App1 向 App2 中的该页面发出 HttpRequest 并检查响应以了解如何继续(例如,代码是否成功运行)。

HttpRequest 是为了以防您想从 App1 的服务器端进行调用。如果您想从客户端进行调用,那么您可以使用 Ajax。在 Ajax 的情况下,您必须注意安全方面,因为您不希望允许任何人从 App2 调用该页面,除非它背后的代码不会造成任何安全风险并且不返回任何敏感数据。

最后一个特定于您的场景的想法,因为两个应用程序都使用相同的数据库,您可以按照您的计划将所需的值添加到数据库中,然后发出一个简单的 HttpRequest。这样,您无需担心安全性或传递任何敏感信息。当 App2 收到请求时,它会检查数据库以查看请求是否真的来自 App1,然后处理它,否则忽略它。

【讨论】:

  • 您的答案是每次编辑都在增长,并且每次都变得更好:) 好主意,我会试一试。这些类型的处理程序通常是如何保护的?在 URL 中传递一个键?
  • 这取决于代码和返回数据的敏感程度。是的,您可以在 GET(即 URL 字符串)或 POST 中使用令牌,但您必须通过 HTTPS 进行调用。或者,如果两个应用程序位于同一服务器或 LAN 上,您可以将处理程序限制为仅响应本地请求。正确执行此操作有点棘手,但如果操作正确,您将不需要安全令牌或 HTTPS。
  • 我不想要任何返回数据,这将是一场大火而忘记的事情。应用 1 会在收到响应之前被阻止吗?
  • 使用异步请求避免阻塞App1。取回一些东西总是一个好主意,至少是状态。你不在乎请求是否成功?如果你真的不在乎,那么你可以简单地忽略返回的值,并确保你返回一个非常小的值,以避免将资源浪费在你不需要的东西上。
  • 我根本不想放慢或阻止 App 1,任何成功/失败都将在 App 2 中处理。
猜你喜欢
  • 2022-06-26
  • 1970-01-01
  • 1970-01-01
  • 2023-02-24
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多