.NET Core IOC AOP

IOC简介

IOC思想

把类当做组件或服务来看待,组件内一定要高内聚,组件之间一定要低耦合,既然要保持低耦合,那就一定不要轻易的去new什么对象。
那组件之间的交互怎么处理呢?那最好的方式就是把new的操作交给第三方的治理框架去做,
比如往大处说的“Dubbo”, Spring Cloud(服务注册,服务发现,服务自动下线,流量分配,熔断,降级),往小处说就是IOC容器

把类往大处想。

把治理框架往小处想。。

IOC能做到那些

1. 对接口和实现类实现了由原来的零散式管理到现在的集中化管理。 (集中化日志,集中化配置系统 etcd,zookeeper)

new

业务驱动 IOC
产品驱动

2. 对类之间,类接口之间的关联关系可以采用多种模式注入(构造器注入,属性注入)等等。

3. 对实现类的生命周期进行了统一管理,能够控制服务的创建,释放和监控。

4. 对类的依赖由编译时推迟到了运行时。

new

.NET Core中IOC

NUGet 包 Microsoft.Extensions.DependencyInjection

            //IOC容器
            ServiceCollection services = new ServiceCollection();
            //注册服务  每次调用都创建新的类
            services.AddTransient<IUserCQRS, UserCQRS>();


            ////注册服务   只new一次
            //services.AddSingleton<IUserCQRS, UserCQRS>();


            //在某个作用于中就是一个单利
            services.AddScoped<IUserCommand, UserCommand>();

            //服务提供者
            var serviceProvider = services.BuildServiceProvider();
            var userQCRSImp = serviceProvider.GetService<IUserCQRS>();
            Console.WriteLine(userQCRSImp.GetUserName("lalala"));


            //创建作用域  usercommand1  usercommand2 同一个实例        usercommand4  usercommand3 同一个实例
            var scope1 = serviceProvider.CreateScope();
            var usercommand1= scope1.ServiceProvider.GetService<IUserCommand>();
            var usercommand2 = scope1.ServiceProvider.GetService<IUserCommand>();

            var scope2 = serviceProvider.CreateScope();
            var usercommand3 = scope2.ServiceProvider.GetService<IUserCommand>();
            var usercommand4 = scope2.ServiceProvider.GetService<IUserCommand>();

 

AOP介绍

AOP思想

 我们知道AOP是面向切面编程,很好的解决了系统级的功能和业务功能的耦合问题。。。

.NETCore AOP实现

nuget包  AspectCore.Extensions.DependencyInjection    对应github地址:https://github.com/dotnetcore/AspectCore-Framework   源码中有帮助文档

他也是基于IOC容器的。

代码下载

代码下载

转载于:https://www.cnblogs.com/wudequn/p/10101388.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值