了解学习过一段时间的.net core,现对学习和了解的dotnet core相关知识进行一些简单的整理。
首先就以下几个问题展开一些自我的理解,这也是我自己开始学习dotnet core的时候也曾疑惑的几个问题。
1.Dotnet core跟之前我们一直在用的nfx(dotnet framework)有什么区别?(优势劣势)
就我的理解,其实从写法上来说,并没有太大的区别。在官网上有介绍dotnet core的一些优势,诚然,新的技术的出现肯定是有它独特的优势的了,不然谁愿意抛弃一直都熟悉的语言来开始在一个新的语言环境中来编程呢。以下是我了解的dotnetcore的优势:
- 可以跨平台运行,即可以在非windows机器上运行。这对于低配的机器来说可以说是福音了(为什么这么说呢,就我个人而言,一个只有2g内存的机器装windows系统基本做不了什么事,可是装上一个linux系统却可以做很多的事情)
- 可以在非iis中运行,支持容器化。你可以使用linux+nginx+docker特别方便地部署你的应用。core程序本身不关心web服务器的事情,web服务器的比如反向代理,负载均衡之类的,都在nginx中去配置吧。
- 微软提供的模板项目中的asp.net core可以用来快速开发服务。其中框架本身就集成了web项目常用的功能模块,比如ioc,日志,异常处理等。
- 运行速度快(这个具体的我没有测试过)
也有一些dotnetcore跟nfx相比所不具有的优势,我们暂且称之为劣势吧,总结下来有以下几点:
- 在iis中发布网站的时候我们只需要复制文件到iis网站目录就可以了,如果使用iis运行core的程序,则会发现覆盖的时候,如果网站正在运行,会提示文件被使用无法覆盖,必须手动停止网站之后再覆盖文件,然后再手动启动网站。
- nfx中的一些跟windows平台耦合很深的一些类库,比如对office的操作,wpf程序的使用之类的,在core中暂时无法使用。
之所以暂且称之为劣势,是因为对于以上两点都可以忽略。更多的时候推荐的使用core的方式都不是在iis中使用的(应对iis不会自动停止和重启,完全可以自己写个程序实现,监控网站路径中的文件变化,若有变化则自动调用iis的停止该网站的方法,当变化停止后再启动该网站即可,该程序我实现过,可以当做windows服务来运行)。对于跟windows平台耦合很深的,完全没必要使用core来做,比如你的程序在linux上运行了,也不会使用微软的office了吧,也不再需要界面了是吧。
2.core可以用来做什么?
毫无疑问,大家用的最多的是用来做服务端,提供服务。微软提供的模板项目中也包含有服务端做页面的,不过感觉使用的人并不会太多,毕竟现在大家都提倡前后端分离,所以更多的时候,core是用来做服务提供api服务的。当然了,也可以做工具类来使用,比如文件处理之类的。
3.从传统的.net(nfx)转到core容易吗?
如果你之前的项目中就有使用过mvc,ioc,aop之类的一些经验的话,学习dotnet core应该会很快。如果没有,就需要补充一些这些方面的相关知识了,难度相对而言就会大一些。不过也不用担心,毕竟Microsoft的文档写的那是相当的好,参考官当文档就可以了。(这里忍不住吐槽一下google的一些技术文档了,java的也是,看起来没组织没条理 -~_~-)
4.core目前的生态好吗?工作好找不?
目前github上有特别多的关于dotnetcore的开源的项目,开源+跨平台,生态自然比之前nfx好多了,在github上看看就知道了。至于工作好找不,我不知道,只是感觉身边的用core的人在逐渐增多,而且大多数的doter都有一个共识,那就是core是.net的未来。
为了更好的学习和加深了解,准备写完这个系列,目前能想到的包含以下一些内容:
- 运行环境搭建(ubuntu+nginx+docker)
- asp.net core项目中的日志系统探究
- asp.net core项目中的异常处理探究
- asp.net core项目中的依赖注入实现和替换
- 利用core cli工具定义并安装自己的模板项目
- 在控制台项目中使用依赖注入