问题标签 [middleware]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1283 浏览

python - 在中间件中修改 Django 设置变量

我在 settings.py 中设置了一个变量 MAX_REQUEST = 100

我编写了一个中间件,它可以通过以下代码降低来自代理 IP 地址的请求的此值:

但是,看起来上述修改会影响所有合法用户。

正常吗?

0 投票
2 回答
349 浏览

ruby-on-rails - 你能让用户上传 Sinatra 应用程序并在 Rails 中作为中间件运行它们吗?

我想让用户编写小型自定义应用程序(想想 Wordpress 上的主题或插件)并在我的网站上上传/运行它们。

我正在考虑为此使用 Sinatra 应用程序,因为它会给用户很大的灵活性,然后在我的 rails 应用程序中将它们作为中间件运行。

但我无法弄清楚这对安全的影响。我尝试创建一个简单的 sinatra 应用程序作为中间件,它可以访问所有的 rails 模型和所有东西——所以这很糟糕。有没有办法让机架保持这些独立,以便 sinatra 应用程序有效地沙盒化并且不能做任何坏事(在 API 或我为它们设置的某种特定方式进行通信之外)?

可能有一种更简单的方法可以实现这一点,我也没有想到,所以欢迎提出想法。谢谢!

0 投票
2 回答
1100 浏览

ruby-on-rails - Rails 3 作为 Rack 中间件

由于 Rails 与 Rack 完全兼容,我一直在思考如何设置 rackup 文件,以便 Rails 应用程序只是一个中间件,然后一个请求可能会在中间件堆栈的下方到达另一个应用程序。

我真正想要的是使用 Rails 应用程序稍后在中间件堆栈中处理较小的机架应用程序的身份验证和授权,这可能在 Rails 3 中实现吗?

0 投票
1 回答
1334 浏览

middleware - 使用 ZeroC 中间件

我目前正在研究各种中间件解决方案,这些解决方案将使我能够创建能够相互通信的各种语言的应用程序。

ZeroC 产品套件似乎很理想,因为它提供了一种与语言无关的方式来定义数据和对数据进行操作的服务(通过其 Slice IDL),并提供对所有主流语言的支持。它似乎还提供了许多我们想要的其他东西,例如负载平衡、网格计算和托管部署。

但是,我的 google-fu 让我失望了,我无法从使用它来实现系统的人那里找到信息。我正在寻找使用它的项目的反馈,以及他们遇到的问题/成功。我也对评估它并选择不使用它(以及为什么)的项目的反馈感兴趣。

0 投票
3 回答
2146 浏览

pylons - 任何 WSGI 中间件可以在特定状态码上进行 HTTP 重定向?

我正在使用 Pylons 并想向其中添加一些中间件,以便它捕获401 状态代码并使HTTP 重定向(302)到登录页面。

我知道 Pylons 中有内置的 StatusCodeRedirect 以类似的方式运行,但它不会产生 HTTP 重定向,而是在内部进行重定向(这是我不想要的)。

是否有任何现有的中间件要添加,或者任何可以轻松修改以在特定状态代码上进行 HTTP 重定向的通用中间件?

0 投票
1 回答
1472 浏览

c# - Windows NT 服务关闭问题

我开发了中间件,为我们组织内多个平台上的多个客户端应用程序提供 RPC 功能。中间件是用 C# 编写的,并作为 Windows NT 服务运行。它处理诸如对网络共享的文件访问、数据库访问等事情。中间件托管在两个运行 Windows Server 2008 的高端系统上。

当我们的一位服务器管理员重新启动机器时,主要是为了进行 Windows 更新,系统在我的 NT 服务方面的行为存在严重问题。我的服务旨在立即停止侦听新连接,立即开始拒绝现有连接上的新请求,否则在 SCM 发出 OnStop 或 OnShutdown 请求的情况下尽快关闭。尽管如此,为了保持系统完整性,当前正在进行的操作仍可继续进行一段合理的时间。通常服务器会在 30 秒内关闭(例如手动停止服务时)。但是,当系统被指示重新启动时,我的服务立即失去对网络驱动器和 UNC 路径的访问权限,导致任何打开的文件和对这些位置的部分写入的数据完整性问题。我的服务确实将 Workstation(以及因此 SMB Redirector)列为依赖项,因此我认为如果 Windows 尊重这些依赖项,则需要在停止 Workstation/Redirector 之前停止我的服务。

基本上,我的应用程序被迫崩溃和烧毁,远程过程调用失败,并最终在超时时间过后(似乎大约为 20-30 秒)被操作系统强制终止。

与 Windows 应用程序不同,我的 Windows NT 服务似乎没有任何能力来停止正在进行的系统关闭、延迟系统关闭,甚至没有机会在被强制断开连接和关闭之前保存任何挂起的网络共享磁盘写入. NT 服务开发人员应该如何在这种环境中拥有任何类型的应用程序完整性?为什么表单应用程序在关闭之前获得了所有完成业务的机会,而服务似乎没有这样的好处?

我试过了:

通过 p/invoke 调用 SetProcessShutdownParameters 以尝试尽快通知我的应用程序关闭,以避免重定向器在我之前关闭。

使用小于或等于两分钟限制的值调用 ServiceBase.RequestAdditionalTime。

调整 WaitToKillServiceTimeout

我能想到的一切都能让我的服务更快地关闭。

但最后,我仍然有大约 30 秒的问题时间,我的服务似乎还没有收到 OnShutdown 事件的通知,但由于重定向器不再为我的网络共享请求提供服务,请求失败。

这个问题打算如何解决?我可以做些什么来延迟或停止关闭,或者至少允许关闭我的活动任务而不会从我下面消失重定向器服务?我可以理解微软试图做些什么来防止服务拖拖拉拉并显示关闭,但这似乎是 Windows 客户端操作系统的一个伟大目标,而不是服务器。我不希望我的服务器快速关闭,我希望操作完整性和正常关闭。

提前感谢您提供的任何帮助。

更新:我已经完成了确切的时间安排。在测试关机中,我在 23:55:58 收到关机通知,并注意到在 23:56:02 失去了网络共享连接。所以在四秒钟之内,我就失去了保存任何活动状态的能力。

0 投票
2 回答
394 浏览

soa - 如何处理所有这些中间件?

我的组织最近一直在争论我们是否应该将不同的中间件产品/概念整合到我们的应用程序中。我们正在研究的产品有 Pegasystems、Oracle BPM / BPEL、BizTalk、Fair Isaac Blaze 等,等等等等。

但我很难掌握这一切。在我继续评估这些不同产品的有用性(正面或负面)之前,我试图了解这个领域的所有不同概念。BPM、ESB、SOA、CEP、WF、BRE、ERP 等的字母汤让我不知所措。有些产品似乎涵盖了这些方面的一个或多个方面,而其他产品则专注于做一个。这些术语似乎都非常模棱两可并且相互混淆。

有没有很好的资源来处理所有这些不同的中间件概念/模式?一本书?一个网站?一篇总结得很好的文章?如果有一种资源可以将各种流行产品映射到他们所解决的模式中,则可以获得奖励积分。

谢谢,

〜贾斯汀

0 投票
5 回答
2594 浏览

facebook - 没有浏览器的 Facebook 打开图形

对于带有互联网的中间件系统(在机顶盒内工作),我想开发一个原始的 Facebook 界面,用户可以在其中输入他们的用户名和密码,在电视屏幕上显示他们最新的通知、消息和其他随意的东西使用最近的Facebook Graph API

这个中间件程序使用 Java ME 来运行程序(例如这个简单的 facebook 应用程序),它可以连接到互联网,但是它没有真正的网络浏览器。如果没有浏览器,它可以连接到任何 url 以检索 JSON 响应,但是我不确定如何在没有真正浏览器的情况下实现身份验证。

在这种情况下,是否可以进行 Facebook 身份验证?如果你这么认为,你会建议什么方法?

谢谢

0 投票
1 回答
1139 浏览

python - 使用中间件修改 Pylons 中的标头

我正在尝试使用 Pylons 中的中间件修改标头,以使我的应用程序 RESTful,基本上,如果用户"application/json"通过GET它请求是他得到的。

我的问题是,变量headers基本上是一个很长的列表。看起来像这样:

现在,我只想根据请求修改值 - 但这些位置是否固定?将'Content-Type'永远是位置headers[0][0]

最好的祝福,

安德斯

0 投票
3 回答
1174 浏览

django - 是否可以从中间件呈现模板?

我有一个做一些处理的中间件。在某些情况下,它会引发异常并且用户会看到我的500.html模板 - 正确响应 500 http 状态。

现在,在某些例外情况下,我想呈现与 default 不同的模板500.html。是否有可能/如何实现?