.net core 为非基于HTTP的中间件管道实现IAppBuilder
我想构建一个基于中间件的管道,它与ASP.NET核心或HTTP无关(想想构建数据仓库的提取、转换和加载管道)。目前,这是在使用.net core 为非基于HTTP的中间件管道实现IAppBuilder,.net-core,.net-core-2.2,.net Core,.net Core 2.2,我想构建一个基于中间件的管道,它与ASP.NET核心或HTTP无关(想想构建数据仓库的提取、转换和加载管道)。目前,这是在使用IHostBuilder的自托管应用程序中完成的。这种解决方案有很多步骤,因此,能够像ASP.NET Core那样将中间件插入管道的模式非常吸引人。我想我应该首先基于.NETCore中的IAppBuilder创建自己的管道生成器界面,如下所示 public interface IEtlPipelineBuilder { /// <summary>
IHostBuilder
的自托管应用程序中完成的。这种解决方案有很多步骤,因此,能够像ASP.NET Core那样将中间件插入管道的模式非常吸引人。我想我应该首先基于.NETCore中的IAppBuilder
创建自己的管道生成器界面,如下所示
public interface IEtlPipelineBuilder
{
/// <summary>
/// Gets or sets the service provider that provides access to the ETL engines service container.
/// </summary>
IServiceProvider PipelineServices { get; set; }
/// <summary>
/// Gets the set of ETL features the engine provides.
/// </summary>
//IFeatureCollection ServerFeatures { get; }
/// <summary>
/// Gets a key/value collection that can be used to share data between middleware.
/// </summary>
IDictionary<string, object> Properties { get; }
/// <summary>
/// Adds a middleware delegate to the ETL pipeline.
/// </summary>
IEtlPipelineBuilder Use(Func<JobDelegate, JobDelegate> middleware);
/// <summary>
/// Creates a new instance of a pipeline builder that shares the properties of this IEtlPipelineBuilder
/// </summary>
IEtlPipelineBuilder New();
/// <summary>
/// Builds the delegate used by this application to process ETL job requests.
/// </summary>
JobDelegate Build();
}
公共接口IEtlPipelineBuilder
{
///
///获取或设置提供对ETL引擎服务容器的访问的服务提供程序。
///
IServiceProvider PipelineServices{get;set;}
///
///获取引擎提供的ETL功能集。
///
//IFeatureCollection服务器功能{get;}
///
///获取可用于在中间件之间共享数据的键/值集合。
///
IDictionary属性{get;}
///
///将中间件委托添加到ETL管道。
///
IEtlPipelineBuilder使用(Func中间件);
///
///创建共享此IEtlPipelineBuilder属性的管道生成器的新实例
///
IEtlPipelineBuilder新建();
///
///生成此应用程序用于处理ETL作业请求的委托。
///
JobDelegate Build();
}
现在我需要实现这一点,这就是我的问题的起点
关于问题3,我能想到的唯一一件事是,可能无法利用基于OWIN管道的其他扩展,但请随意提供其他扩展。我会忘记与HTTP有关的任何事情。你可能想看看责任链模式()或者甚至是战略模式,然后根据你的需要修改它。谢谢你的链接。我读了之后,似乎这就是ASP.NET核心团队用来在Http管道中实现中间件的模式。他们似乎提供非http服务和类来帮助处理非http主机,就像我的(通用主机)一样使用服务和中间件实现这种模式似乎非常直观,因此我想知道是否还有其他非基于http的类可以利用,而不是实现整个IAppBuilder类型的代码。我会忘记与http有关的任何事情。你可能想看看责任链模式()或者甚至是战略模式,然后根据你的需要修改它。谢谢你的链接。我读了之后,似乎这就是ASP.NET核心团队用来在Http管道中实现中间件的模式。他们似乎提供了非http服务和类来帮助处理非http主机,就像我的(通用主机)一样,而且使用服务和中间件实现此模式似乎非常直观,因此我想知道是否还有其他基于非http的类可以利用,而不是实现整个IAppBuilder类型代码。