1.类库的创建尽量选择.net standard.
如果选择.net core 则.net framework不能调用该类库, .net core和.net framework都可以调用.net standar。
2. Controllers的创建,需在每个Controllers类中添加区域特性并注明区域名称[Area("Name")], 和之前的版本不一致。
.net framework中创建区域文件夹时,会自动创建区域注册类。同一区域文件夹中的类,可以不用加区域特性。
3. .net core web/webapi中没有web.config配置文件,所以读取配置文件不能使用configurationManager类。
配置文件使用json文件,读取json配置文件如下:
var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile("configs/buildConfig.json", optional: true, reloadOnChange: true) .AddInMemoryCollection(conf) .AddEnvironmentVariables();
4. oracle对asp.net core 的支持还不够充分,目录仅有一个预览版:Oracle.ManagedDataAccess.Core
它对entity framework core还不支持,估计18年第三季度会发布预览版本。
5. 文件上传接口也有变化:
.net core: public IActionResult Upload(IFormCollection form)
.net framework: public ActionResult Upload(HttpPostedFileBase fileUseless)
6. asp.net core默认使用Kestrel作为Http请求的监听器,而不是使用原来庞大的Https.sys。不再依赖IIS,为跨平台提供平台基础。
Kestrel不仅仅是微软下一代的跨平台Http请求监听器,同时还提供了比Https.sys更轻量级以及更快速的Http请求处理
7. Asp.net core与原来的Web设计另一个最大的区别在于Asp.net core(及.net core)完全抛弃了原来的使用管道模式来接收以及处理HttpRequest。在Asp.net core中允许处理中间件(Middleware)来对所有的HttpRequest来进行请求,当请求被接收到时,Asp.net core会调用注册的中间件(按照注册的顺序)对HttpRequest进行处理。这样做相比与原来使用HttpApplication的管道方式而言,其优势在于完全由开发人员决定HttpRequest需要执行怎么样的处理,没有多余的其他步骤。而原来的方式既使开发人员不希望对一个HttpRequest进行任何处理,但HttpApplication仍然会按照管道的设置依次创建HttpModel -> 激活HttpHandler -> 处理Session等。据.net core团队给出来的性能测试数据来看,Asp.net core(.net core)相比与原来的Web(.net framework 4.6)程序性能提升了2300%.
8. 对依赖注入的内置支持。在.NET Core中DI的核心分为两个组件:IServiceCollection和 IServiceProvider
public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IOperationSingleton, Operation>(); // 自定义传入Guid空值 services.AddSingleton<IOperationSingleton>( new Operation(Guid.Empty)); // 自定义传入一个New的Guid services.AddSingleton <IOperationSingleton>( new Operation(Guid.NewGuid())); )