.Net Core(三)MVC Core
来源:互联网 发布:cip数据核字号在哪里 编辑:程序博客网 时间:2024/05/24 07:15
MVC Core的改动感觉挺大的,需要的功能大多从Nuget安装,还内置了IOC,支持SelfHost方式运行等等。
一、项目结构的变化
创建的新MVC项目的结构发生了变化,比如:静态文件需要统一放置到wwwroot文件夹,配置文件变成了appsettings.json,用startup.cs文件代替了global文件;原先对view命名空间的引用配置在view下的web.config,现在则改成了使用_ViewImport.cshtml文件,并且用razor语法来配置。
二、内置IOC
a)Autofac是很好的IOC容器,.Net Core下也还是可以用的,同时Core也内置了IOC,typescript也自带IOC,也许注入的方式会作为语言本身的一种功能吧。
内置IOC也支持选择多种对象生命周期,比如Transient(内次请求都会实例化)、Scoped(每次Web请求)、Singleton(整个应用的生命周期)。
b)单个对象的注入只需在Startup.ConfigureServices中设置:services.AddSingleton(typeof(Person));
之后在用到Person的地方通过构造函数注入。
c)实际应用了不可能采用单个对象的注入的方式,根据程序集来配置自动注入的方式为:
var serviceAsm = Assembly.Load(new AssemblyName("2_1 MVC Core Lib"));
var serviceTypes = serviceAsm.GetTypes().Where(t => typeof(IServiceTag)
.IsAssignableFrom(t) && !t.GetTypeInfo().IsAbstract);
foreach (var serviceType in serviceTypes) {
var interfaceTypes = serviceType.GetInterfaces().Where(t => t.Name != "IServiceTag");
foreach (var interfaceType in interfaceTypes) {
services.AddSingleton(interfaceType, serviceType);
}
}
增加t.Name != "IServiceTag"的限制是有必要的,IServiceTag是Service接口的标记,如果不增加这个判断,会将IServiceTag也注入。
d)IOC可以“递归”注入,但要保证根对象也是被IOC创建的,而不是显式new出来的。比如如果用IOC创建ExceptionFilter,那么它自身引用的其它类也可以自动注入了。手动用IOC创建nFilter并添加到MVC中的方法为:
services.AddMvc(options => {
var serviceProvider = services.BuildServiceProvider();
var filter = serviceProvider.GetService<ExceptionFilter>();
options.Filters.Add(filter);
});
在前端代码中还可以用HttpContext.RequestServices.GetService来让IOC创建对象。
学习资料:如鹏网.net提高班http://www.rupeng.com/News/10/4603.shtml
- .Net Core(三)MVC Core
- .net Core mvc开发
- .NET Core MVC路由
- Net Core mvc 使用mysql
- Asp.Net Core 设置MVC
- Pro ASP.NET Core MVC(三)【MVC模式,项目和约定】
- asp.net core mvc剖析:KestrelServer
- asp.net core mvc剖析:KestrelServer
- asp.net core mvc剖析:KestrelServer
- asp.net core mvc剖析:KestrelServer
- asp.net core mvc剖析:KestrelServer
- asp.net core mvc剖析:路由
- asp.net core mvc剖析:启动流程
- .net core mvc中使用ef
- .net core mvc中使用ef
- .net core mvc中使用ef
- Asp.net Core MVC 导出execl
- ASP.NET Core Razor页面 vs MVC
- JAVA工具类(4) ---文件工具类fileUtil(文件增删改,文件拷贝等)
- Perl Win32::Gui 模块学习 (2)---- 添加简单的Label标签
- Java基础——Servlet(八)文件上传下载
- CentOS中iwconfig命令not found的解决方法
- leetcode(337). House Robber III
- .Net Core(三)MVC Core
- linux常用命令(useradd,usermod,userdel,groupadd,groupmod,groupdel)
- hdu3336 Count the string(next数组)
- 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- Python——Python3.6.0+Scrapy安装方法(总算没有bug了)
- POJ 2823 Sliding Window(单调队列~)
- maven+thymeleaf笔记-2
- 判断sql注入漏洞的类型
- maven根据不同的运行环境,打包不同的配置文件