什么是Asp.Net core

我相信很多C# Developer已经对于.net core不算陌生了,就算没有正式使用相信也应该有所了解。微软在推出来.net core的同时为了方便一些原有的项目可以方便迁移,同时推出了Asp.net core。那么.net core和Asp.net core是不是同一个东西呢?如果不是又有什么区别呢?     下面我们分别说明一下,首先Asp.net core和.net core肯定不是同一个东西(废话,如果是同一个东西还写这么多干啥!)。      Asp.net core其实就是仍然基于.net Full Framework(最低要求Framework 4.6.2)的项目, 但同时保留了.net core一些新的设置理念,比如Asp.net core默认使用Kestrel作为Http请求的监听器,而不是使用原来庞大的Https.sys。Kestrel不仅仅是微软下一代的跨平台Http请求监听器,同时还提供了比Https.sys更轻量级以及更快速的Http请求处理。另除此之外,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%.     而.net core其实就是保留了上面所说的优势的同时支持跨平台运行。.net core的系统是可以真正运行在除Windows以外的其他平台的。轻量级、跨平台、模块化是.net core整体的设计理念,同时也是微软产品理念转变的一个体现。.net core虽然有千般好,但是我们当前仍然没有直接使用它,因为它现在有一个致使的“缺陷”那就是生态环境,由于.net core的API已经完全重写,虽然当前已经提供了.net farework 90%以上的API,但是仍然会造成一些开发上的不便,当然这还不是最大的问题,最大的问题在于一些第三方Nuget包仍然不支持.net core。这样就会造成一些项目无法直接迁移或是迁移成本太高的问题。

如何创建一个Asp.net core的项目

说了这么多,我们来看一下在创建项目时Asp.net core和.net core有什么不同吧,我们以Vistual studio 2017上创建项目为例,首先打开VS2017后点击创建项目-> Asp.net core web应用,这时会弹出模版选择的窗口。

在这个选择窗口中我们可以看到在左上角的那个下拉列表中可以选择.net framework以及.net core。当我们选择.net framewrok时创建出来的项目工程即为asp.net core。项目创建成功后可以在项目的属性中看到使用的Framework版本是4.6.2。但是项目文件的组织结构已经和.net core的项目结构一样了。

Asp.net core项目的"坑"

近期在对新的项目进行性能测试时发现系统的内存占用似乎只能使用到1.5G。经过多次测试以及代码检查终于发现新创建出来的Asp.net core的项目默认的目标平台是X86而不是AnyCPU。当尝试在VS中新目标平台改为AnyCPU时发现项目不能运行,抛出异常"无法加载 DLL“libuv”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。",无奈只能将项目的目标平台改为X64,然后发现在开发环境已经一切正常,但是当将代码部署到Azure App Service上时系统仍然不能访问,异常和上面的相同。最后检查了项目的工程文件(*.proj)然后发现虽然PlatformTarget一项中已经改为X64,但是在PlatformTarget的属性中Platform仍然是AnyCPU,手动修改工程文件将AnyCPU改为X64后一切正常

http://www.mamicode.com/info-detail-2164237.html

什么是Asp.net Core?和 .net core有什么区别?(转)的更多相关文章

  1. asp.net core + mysql + ef core + linux

    asp.net core + mysql + ef core + linux 以前开发网站是针对windows平台,在iis上部署.由于这次需求的目标服务器是linux系统,就尝试用跨平台的.NET ...

  2. 003.ASP.NET Core tutorials--【Asp.net core 教程】

    ASP.NET Core tutorials Asp.net core 教程 2016-10-14 1 分钟阅读时长 本文内容 1.Building web applications 构建web应用 ...

  3. Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)

    目录 SignalR系列目录(注意,是ASP.NET的目录.不是Core的) 前言 一晃一个月又过去了,上个月有个比较大的项目要验收上线.所以忙的脚不沾地.现在终于可以忙里偷闲,写一篇关于Signal ...

  4. ABP 教程文档 1-1 手把手引进门之 ASP.NET Core & Entity Framework Core(官方教程翻译版 版本3.2.5)

    本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 官方文档分四部分 一. 教程文档 二.ABP 框架 三.zero 模块 四.其他(中文翻译资源) 本篇是第一部分的第一篇. 第一部分分三篇 1- ...

  5. ABP CORE 框架入门视频教程《电话薄》基于 Asp.NET Core2.0 EF Core

    ABP框架简介 ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. ASP.NET Boilerplate是一个用最佳实践和流行 ...

  6. ASP.net core 使用UEditor.Core 实现 ueditor 上传功能

    ASP.net core 使用UEditor.Core 实现 ueditor 上传功能 首先通过nuget 引用UEditor.Core,作者github:https://github.com/bai ...

  7. ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门

    一.前言 1.本教程主要内容 ASP.NET Core MVC 集成 EF Core 介绍&操作步骤 ASP.NET Core MVC 使用 EF Core + Linq to Entity ...

  8. ASP.NET Core 与 .NET Core 演变与基础概述

    https://github.com/dotnet/corehttps://github.com/aspnet/home 今天看到 .NET Core 的改名计划,感觉跨平台的时代快要来了,从之前的 ...

  9. 【ASP.NET Core】EF Core - “影子属性” 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1

    [ASP.NET Core]EF Core - “影子属性”   有朋友说老周近来博客更新较慢,确实有些慢,因为有些 bug 要研究,另外就是老周把部分内容转到直播上面,所以写博客的内容减少了一点. ...

  10. ASP.NET Core and .NET Core Library Support

    ASP.NET Core and .NET Core Library Support 详情参见:https://github.com/linezero/NETCoreLibrary/blob/mast ...

随机推荐

  1. MinGW的gdb调试

        MinGW(Minimalist GNU for Windows)提供了一套简单方便的Windows下的基于GCC程序开发环境.MinGW收集了一系列免费的Windows是用的头文件和库文件: ...

  2. linux系统管理的基本命令

    系统管理类命令: 关机或重启: halt, poweroff reboot -f: 强制,不调用shutdown -p: 切断电源 shutdown: shutdown [OPTION]... TIM ...

  3. bzoj2209

    题解: splay打标机 往下传递 记录x,y为化简后,区间有多少(,) 代码: #include<bits/stdc++.h> ; using namespace std; ],sum[ ...

  4. Java——IO类,转换流简化写法

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  5. WordCount:C语言实现

    项目地址:https://github.com/m8705/WordCount 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数. 这个项目要求写一个命令行程序,模仿已 ...

  6. C++ error C2440: “类型转换” : 无法从“std::vector::iterator”转换为“

    原文地址:http://blog.csdn.net/onlyou930/article/details/5602654 圆环套圆环之迭代器 话说这一日是风平浪静,万里乌云,俺的心情好的没得说,收到命令 ...

  7. Python 常用扩展库(八)

  8. iOS多线程编程:线程同步总结

    1:原子操作 - OSAtomic系列函数 iOS平台下的原子操作函数都以OSAtomic开头,使用时需要包含头文件<libkern/OSBase.h>.不同线程如果通过原子操作函数对同一 ...

  9. pandas DataFrame 索引(iloc 与 loc 的区别)

    Pandas--ix vs loc vs iloc区别 0. DataFrame DataFrame 的构造主要依赖如下三个参数: data:表格数据: index:行索引: columns:列名: ...

  10. Apache和iis的冲突处理

    http://wenku.baidu.com/link?url=N4GYFpkQyr8G0kVEy3AR2Q5FBho8EOle-_5inEfEq6QSxlyzB3xSbcpeugRdExkSU-tw ...