首页
学习
活动
专区
圈层
工具
发布

ABP框架 - 模块系统

模块系统介绍 ABP提供了基础设施功能来构建模块,并通过组合这些模块来创建应用。一个模块可以依赖于另一个模块。一般来讲,一个程序集被认为和定义成一个模块。...在ABP中提供了一个默认实现PlugInFolderSource, 用于从指定的文件夹中获取插件模块。...ASP.NET CORE 在ABP ASP.NET Core模块的Startup类中,ABP为AddAbp扩展方法定义了添加插件模块源的选项: services.AddAbp<MyStartupModule...base.Application_Start(sender, e); } } 插件模块中的Controllers 如果你在插件模块中定义了MVC / Web API Controllers, ASP.NET...ABP为这两个接口提供了默认实现,在默认实现中,仅仅从上述模块(通过启动模块定义的模块依赖解析出的模块,以及插件模块)中来查找程序集和类型。

1.6K40

ABP框架 - 模块系统

模块系统介绍 ABP提供了基础设施功能来构建模块,并通过组合这些模块来创建应用。一个模块可以依赖于另一个模块。一般来讲,一个程序集被认为和定义成一个模块。...在ABP中提供了一个默认实现PlugInFolderSource, 用于从指定的文件夹中获取插件模块。...ASP.NET CORE 在ABP ASP.NET Core模块的Startup类中,ABP为AddAbp扩展方法定义了添加插件模块源的选项: services.AddAbp<MyStartupModule...base.Application_Start(sender, e); } } 插件模块中的Controllers 如果你在插件模块中定义了MVC / Web API Controllers, ASP.NET...ABP为这两个接口提供了默认实现,在默认实现中,仅仅从上述模块(通过启动模块定义的模块依赖解析出的模块,以及插件模块)中来查找程序集和类型。

66820
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    集群环境下,你不得不注意的ASP.NET Core Data Protection 机制

    引言 最近线上环境遇到一个问题,就是ASP.NET Core Web应用在单个容器使用正常,扩展多个容器无法访问的问题。...Microsoft.AspNetCore.Session.CookieProtection.Unprotect(IDataProtector protector, String protectedText, ILogger logger) 通过排查,发现了是由于 ASP.NET...Data Protection(数据安全)机制:为了确保Web应用敏感数据的安全存储,该机制提供了一个简单、基于非对称加密改进的、性能良好的、开箱即用的加密API用于数据保护。...//添加数据保护服务,设置统一应用程序名称,并指定使用Reids存储私钥 services.AddDataProtection() .SetApplicationName(Assembly.GetExecutingAssembly...FullName; }); //添加Session services.AddSession(options => { options.Cookie.Name = Assembly.GetExecutingAssembly

    1.2K20

    Core + Vue 后台管理基础框架8——Swagger文档

    再闲扯一句,我曾听一位同事说,搞.NET的,前端后端全栈一把梭,要毛的文档。。。我仔细回想了下早几年,好像.NETer确实全栈比较多,所谓的人少事儿多高效钱少。。。...}); c.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, $"{Assembly.GetExecutingAssembly...c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme)这部分代表告诉swagger,系统是采用bearer token认证的,方便swagger在页面上提供...OpenApiSecurityRequirement)这部分则是告诉swagger全局应用上述认证模式; c.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, $"{Assembly.GetExecutingAssembly...提供了JWT,现在我们再从swagger调用获取个人信息接口: ?   可以看到,已经成功调用接口了。既然前言部分我们说到了接口自描述,那我们就来看看,文档是否做到了自描述。

    74430

    .NET简谈互操作(五:基础知识之Dynamic平台调用)

    互操作系列文章: .NET简谈互操作(一:开篇介绍) .NET简谈互操作(二:先睹为快) .NET简谈互操作(三:基础知识之DllImport特性) .NET简谈互操作(四:基础知识之Dispose...非托管内存) .NET简谈互操作(五:基础知识之Dynamic平台调用) .NET简谈互操作(六:基础知识之提升平台调用性能) .NET简谈互操作(七:数据封送之介绍) 我们继续.NET互操作学习...public static void Test() { string currentdirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly...动态平台调用示例2 第一个示例我们是省略了系统调用过程,我们手动调用LoadLibrary来加载;可能没啥大的变化,示例2是通过非托管函数委托来进行动态调用的; 都知道托管委托就好比非托管的函数指针,幸好微软为我们提供了委托来调用非托管方法...public static void Test() { string currentdirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly

    60020

    Autofac正式发布2.1版

    Nicholas Blumhardt经过了2年多的开发,设计和试验,Autofac发布了第二版,针对1.4版本进行了重组,提供了更好的开发体验,你可以到这里下载正式的版本。...2.1版本也带来许多新特性: 组件发现:Autofac 2可以从一个程序集的注册类型设置根据用户指定的规则: var dataAccess = Assembly.GetExecutingAssembly...Enumeration A needs to know X about B before using it Meta and Meta Metadata interrogation 组件元数据:.NET...NET 3.5(以及4.0)版本的提供了一个弱类型的Meta类 集成Managed Extensibility Framework (MEF),具体内容参看Autofac MEF integration...ASP.NET MVC的Controller注册更灵活和更简单,通过方法RegisterControllers() 进行注册,参看文章MVC Integration Changes in Autofac

    752100

    详解全志V853上的ARM A7和RISC-V E907之间的通信方式

    其独立于 A7 主核心中的 Linux 系统。可以独立运行。 在 E907 Melis 中,提供 OpenAMP 软件框架来与 A7 Linux 系统进行通信。...BOOT0 会在 A7 主核心中运行 Linux 系统,也会在 E907 核心中运行 RTOS 系统。启动的两个系统是独立运行的。...当主核需要和从核进行通信的时候可以分为四步: 主核先从USED中取得一块内存(Allocate) 将消息按照消息协议填充 将该内存链接到 AVAIL 缓冲区中(Send) 触发中断,通知辅助核有消息处理...反之,从核需要和主核通信的时候也类似: 主核先从AVAIL中取得一块内存(Allocate) 将消息按照消息协议填充 将该内存链接到 USED 缓冲区中(Send) 触发中断,通知主核有消息处理。...对于 V853 来说,remoteproc 用于对 E907 进行生命周期管理,一般来说包含有加载固件、 检测远端处理器是否崩溃等功能。

    82410

    快学会这个技能-.NET API拦截技法

    前言 前言翻译自一个国外的文章,他写的更容易让人理解 - Hacking .NET – rewriting code you don’t control: 您是否曾经遇到过不属于您但想要更改其行为的类库方法...Harmony用于在运行时修补替换和装饰 .NET/.NET Core 方法的库。 但是该技术可以与任何.NET版本一起使用。它对同一方法的多次更改是累积而不是覆盖。...再次分析可能产生的场景需要拦截,加深您对本文的记忆: .NET的一些方法,我们直接在代码层面可能无法直接修改; 第三库未提供源码,但我们想改它的部分方法; 第三库提供了源码,虽然可以修改它的源码,但万一第三库后面迭代升级...,我们又不得不更新时,那自己做的修改跟着升级可能麻烦了; 拦截注意:如您所见,这提供了大量新的可能性。....NET 7 Runtime Skipping Patches #504,将程序降级为.NET 6即可。

    1.1K40

    CVPR 2025 Oral | 港大提出OverLoCK:模仿人类视觉机制,让模型“先见森林,再见树木”

    与此同时,现有的卷积算子也难以同时满足动态全局建模与强局部归纳偏置的双重要求:大核卷积/动态卷积:感受野受固定核尺寸限制,在高分辨率输入下仍局限于局部。...Focus-Net(聚焦网络):进行“凝视观察”。它在Overview-Net提供的全局先验指导下,对关键区域进行精细化特征提取与分析,最终形成鲁棒的特征表示。...最关键的是,来自Overview-Net的全局先验信息,会贯穿并持续指导Focus-Net的每一个计算步骤,不仅在特征层面进行调制,还直接参与动态卷积核权重的生成,实现了自上而下信号的全方位、深层次注入...简单来说,ContMix让每个局部的卷积操作都“心中有全局”。它不仅计算高效,而且保持了卷积的局部性和平移等变性优势。...在设计中,团队发现将Focus-Net的当前特征作为“查询”(Query),而将Overview-Net的全局先验作为“键”(Key),来生成动态核权重,能获得最佳性能。

    12110

    .NET Core开发实战(第25课:路由与终结点:如何规划好你的Web API)--学习笔记(上)

    25 | 路由与终结点:如何规划好你的Web API 路由系统在 ASP.NET MVC 框架里面就已经存在了,在 ASP.NET Core 框架里面进行了改进 路由系统的核心作用是指 URL 和 应用程序...Core 提供了两种路由注册的方式: 1、路由模板的方式 2、RouteAttribute 方式 这两种方式分别适用于的场景是不一样的 路由模板的方式是之前传统的方式,可以用来作为 MVC 的页面 Web...的时候使用 RouteAttribute 方式去做 在定义路由,注册路由的过程中间,有一个重要的特性就是路由约束,是指路由如何匹配 有以下简单的几种约束: 1、类型约束 2、范围约束 3、正则表达式 4、是否必选...5、自定义 IRouteConstraint 另外路由系统提供了两个关键的类,用来反向根据路由的信息生产 URL 地址 1、LinkGenerator 2、IUrlHelper IUrlHelper...c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" }); var xmlFile = $"{Assembly.GetExecutingAssembly

    93110

    .NET自带IOC容器MEF之初体验

    本文主要把MEF作为一种IOC容器进行讲解,.net中可用的IOC容器非常多,如 CastleWindsor,Unity,Autofac,ObjectBuilder,StructureMap,Spring.Net...概述 官方说法: Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)等。...实际上MEF提供了发现和组合的能力使你的应用程序可以加载扩展,为运行时的可扩展性提供了一种简单的解决方法:  MEF为宿主应用提供了一种标准的途径来暴露自身并使用外部扩展。...每个可组合的Part提供了一个或多个Export,并且通常依赖于一个或多个外部提供的服务或Import。每个Part管理一个实例为应用程序运行 ? MEF 提供一种通过“组合”隐式发现组件的方法。.../MEFTest1/bin/Debug"));//这个我们通过路径找到部件 //catelog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly

    2.3K21

    ASP.NET那点不为人知的事(三)

    有了以下的知识: ASP.NET那点不为人知的事(一) ASP.NET那点不为人知的事(二) 想必开发一个小型服务器以不是问题了,功能补复杂,能够响应客户端浏览器的请求,并根据请求文件的类型返回响应的信息...客户端发送的请求(报文)交给服务器软件分析,判断是否为静态页面、图片还是动态aspx文件,若是静态文件能直接返回。...处理动态页面稍稍麻烦,需要反射创建页面类(原因详见ASP.NET那点不为人知的事(二))  开启服务 ?...pageClassName = System.IO.Path.GetFileNameWithoutExtension(requestFile); string assemblyName = Assembly.GetExecutingAssembly...pageClassName = assemblyName + "." + pageClassName; //通过反射创建页面类对象 object pageObj = Assembly.GetExecutingAssembly

    68290
    领券