标签: middleware

消息驱动与事件驱动的应用程序集成方法

我想知道当我们引用SOA或中间件时,以及通常在应用程序和企业集成的情况下,消息驱动和事件驱动的环境之间是否有明显的区别.我知道用户界面类似于事件驱动模型,我们的系统拦截用户的操作.

此外,很明显消息传递支持基于发布/订阅,同步或异步通信,事务等的系统.

但是中间件/ soa /应用程序集成上下文有区别吗?(架构级别).我正在尝试咨询维基百科这样的来源(这里这里),但我仍然有些困惑.开发人员何时应该选择一种解决方案?

是否存在一种方法或案例,其中一种方法比另一种更有意义?或者是否有任何全面的资源和指南来实施每一个?

非常感谢任何见解.

integration messaging soa events middleware

52
推荐指数
6
解决办法
3万
查看次数

Connect/Express中'session'和'cookieSession'中间件有什么区别?

Connect/Express捆绑了两个与会话相关的中间件.有什么不同?我该如何选择?

我假设会话中间件与cookieSession中间件相同,但具有额外的存储机制.

session middleware connect node.js express

49
推荐指数
2
解决办法
9131
查看次数

在ExpressJS中为特定路由链接多个中间件

我想验证一些东西,但无法在Express文档或在线上找到任何关于此的内容(虽然我知道这是一个功能).

我可以测试一下,但我真的没有一个很好的模板,并希望听到社区的意见.

如果我在Express中定义一条路线,如下:

app.get('/', function (req, res) {
  res.send('GET request to homepage');
});
Run Code Online (Sandbox Code Playgroud)

我也可以定义一个中间件并直接加载它,例如

middleware = function(req, res){
  res.send('GET request to homepage');
});

app.get('/', middleware)
Run Code Online (Sandbox Code Playgroud)

但是,我也可以链接这些路由中的至少一个来运行额外的中间件,例如身份验证,如下:

app.get('/', middleware, function (req, res) {
  res.send('GET request to homepage');
});
Run Code Online (Sandbox Code Playgroud)

这些是无限可链接的吗?如果我愿意,我可以在给定路线上粘贴10个中间件功能吗?我想看看app.get可以接受的参数,但提到我在文档中找不到它.

middleware node.js express

47
推荐指数
3
解决办法
4万
查看次数

启动服务器后无法加载反应应用程序

(节点:13176)[DEP_WEBPACK_DEV_SERVER_ON_AFTER_SETUP_MIDDLEWARE] DeprecationWarning:“onAfterSetupMiddleware”选项已弃用。请使用“setupMiddlewares”选项。(用于node --trace-deprecation ...显示创建警告的位置)(节点:13176)[DEP_WEBPACK_DEV_SERVER_ON_BEFORE_SETUP_MIDDLEWARE] DeprecationWarning:“onBeforeSetupMiddleware”选项已弃用。请使用“setupMiddlewares”选项

在此输入图像描述

router middleware loading reactjs

43
推荐指数
4
解决办法
7万
查看次数

你在哪里放置你的Rack中间件文件并要求?

我正在将构建在Rails应用程序中的一些逻辑重构为中间件,而我遇到的一个烦恼似乎是缺乏将它们放在何处的约定.

目前我已经确定了,app/middleware但我可以轻松地将其移至vendor/middleware或者vendor/plugins/middleware......

最大的问题是必须要求顶部的单个文件 config/environment.rb

require "app/middleware/system_message"
require "app/middleware/rack_backstage"
Run Code Online (Sandbox Code Playgroud)

或者我在线上得到未初始化的常量错误config.middleware.use.这可能会很快变得混乱.我宁愿将它隐藏在某个地方的初始化器中.

这个东西有传统的地方吗?


我正在寻找的具体答案是:我可以在哪里放置需求行,以便它们不会混乱environment.rb文件,但仍然在config.middleware.use调用之前加载?我尝试过的所有内容都会导致未初始化的常量错误.


更新:现在我们正在使用Rails 3.0,我像任何其他Rack应用程序一样对待Rails应用程序; 中间件的代码文件进入lib(或列出的宝石Gemfile)并且是必需的和加载的config.ru.

rack middleware ruby-on-rails conventions

42
推荐指数
4
解决办法
2万
查看次数

具有不同中间件的Compojure路由

我目前正在使用Compojure(以及Ring和相关的中间件)在Clojure中编写API.

我正在尝试根据路由应用不同的身份验证代码.请考虑以下代码:

(defroutes public-routes
  (GET "/public-endpoint" [] ("PUBLIC ENDPOINT")))

(defroutes user-routes
  (GET "/user-endpoint1" [] ("USER ENDPOINT 1"))
  (GET "/user-endpoint2" [] ("USER ENDPOINT 1")))

(defroutes admin-routes
  (GET "/admin-endpoint" [] ("ADMIN ENDPOINT")))

(def app
  (handler/api
    (routes
      public-routes
      (-> user-routes
          (wrap-basic-authentication user-auth?)))))
      (-> admin-routes
          (wrap-basic-authentication admin-auth?)))))
Run Code Online (Sandbox Code Playgroud)

这不能按预期工作,因为它wrap-basic-authentication实际上包装了路由,因此无论包装路由如何都会尝试它.具体来说,如果需要将请求路由到admin-routes,user-auth?仍将尝试(并失败).

我使出context在一个共同的基本路径部分航线,但它是一个相当的限制(下面的代码可能无法正常工作,它只是说明的想法):

(defroutes user-routes
  (GET "-endpoint1" [] ("USER ENDPOINT 1"))
  (GET "-endpoint2" [] ("USER ENDPOINT 1")))

(defroutes admin-routes
  (GET "-endpoint" [] ("ADMIN ENDPOINT")))

(def app
  (handler/api
    (routes …
Run Code Online (Sandbox Code Playgroud)

middleware routes clojure compojure ring

38
推荐指数
3
解决办法
8599
查看次数

为什么我的Django单元测试不知道MessageMiddleware是否已安装?

我正在研究一个Django项目并正在为它编写单元测试.但是,在测试中,当我尝试登录用户时,我收到此错误:

MessageFailure: You cannot add messages without installing django.contrib.messages.middleware.MessageMiddleware
Run Code Online (Sandbox Code Playgroud)

登录实际站点工作正常 - 并使用MessageMiddleware显示登录消息.

在我的测试中,如果我这样做:

from django.conf import settings
print settings.MIDDLEWARE_CLASSES
Run Code Online (Sandbox Code Playgroud)

然后它输出:

('django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware')
Run Code Online (Sandbox Code Playgroud)

这似乎表明在运行测试时安装了MessageMiddleware.

我有一个明显的步骤吗?

UPDATE

根据下面的建议,它确实看起来像是一个设置的东西.

我目前settings/__init__.py喜欢这个:

try:
    from settings.development import *
except ImportError:
    pass
Run Code Online (Sandbox Code Playgroud)

settings/defaults.py包含大部分标准设置(包括MIDDLEWARE_CLASSES).然后settings.development.py覆盖其中一些默认值,如下所示:

from defaults import *

DEBUG = True
# etc
Run Code Online (Sandbox Code Playgroud)

使用开发设置看起来我的开发站点本身工作正常.但是,虽然测试似乎加载设置OK(默认和开发)settings.DEBUG设置为False.我不知道为什么,或者这是否是问题的原因.

django unit-testing middleware messages

38
推荐指数
1
解决办法
6528
查看次数

Django中的非全局中间件

在Django中有一个设置文件,用于定义要在每个请求上运行的中间件.此中间件设置是全局的.有没有办法在每个视图的基础上指定一组中间件?我希望特定的URL使用一组与全局集不同的中间件.

python django middleware django-middleware

36
推荐指数
3
解决办法
1万
查看次数

访问ExpressJS/ConnectJS中间件内的"app"变量?

这可能不是我的正确方法,但我想有条件地将一个对象/参数添加到appexpressJS/connectjS中间件调用内的变量中.

由于此功能是回调,app从中间件调用中访问的标准/最佳方式是什么?

  //app.js
  var myMiddleware = require('./lib/mymiddleware.js');
  ...
  app.configure( function(){
    app.use( myMiddleware.func() );
    ...
  }

  if( 'object' !== typeof app.myObject ){
    cry( 'about it' );
  } 


  //mymiddleware.js
  module.exports.func = function( ){
    return function( req, res, next ){
       //append app object
       //app.myObject = {}
       next();
    }
  };
Run Code Online (Sandbox Code Playgroud)

注意,这不是用于localssettings稍后呈现的内容,而是稍后将在执行链中的路由和套接字中使用的内容.

middleware node.js express

36
推荐指数
2
解决办法
1万
查看次数

重定向到HTTPS

建议的方法是将所有不安全的传入请求重定向到HTTPS.我是否需要编写中间件组件?如果是这样,我无法弄清楚如何获取服务器名称.

public class RedirectHttpMiddleware
{
    RequestDelegate _next;

    public RedirectHttpMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        if (context.Request.IsSecure)
            await _next(context);
        else
        {
            var server = "";  // How do I get the server name?
            context.Response.Redirect("https://" + server + context.Request.Path);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# https redirect middleware asp.net-core

35
推荐指数
3
解决办法
2万
查看次数