百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

浅谈.net framework与.net core的区别

ccwgpt 2024-09-23 04:28 40 浏览 0 评论

从零开始用C#做产品系列教程索引(.netcore winform) 此前做了一个基于.net core+winform系列教程,今天收到一个提问:既然都不能跨平台,那选择.net core的理由是什么呢?

这个问题字不多,但实际可扩展的内容有很多,不是一两句话能概括清楚的。归根结底在于.net core与.net framework能干的事情都太多了,无法一概而论。我用framework时间不算短,从.net framework 1.1开始做项目有十几年的时间了,但对.net core的使用,我是一个新兵,今年下半年才开始接触,并没有做过真正的项目,可能还有些坑没踩过。以下分别从windows桌面应用和Web应用来谈下我的个人观点,供大家参考。


开发windows桌面应用


功能表现

在windows平台下,framework跟.net core能实现的功能基本是一样的。由于二者无法共享类库,所以第三方类库的使用上是有些差别的。由于历史原因,framework的可能选择更多些,.net core的可能更新快些,但随着时间的推移,天平会向.net core倾斜。

至于性能,有人说.net core比framework快很多。这个我没测试过,不过相比其他语言,framework已经挺快了。

开发环境

实际开发中,感觉目前的VS下,用framework要比.net core更稳定。我在用.net core的时候,vs2019经常会卡死,尤其是做界面UI设计时,framework从来没有这种问题。应该还是某些地方的兼容性做得不够好。

程序发布

虽然都是只能在windows平台运行,但发布方式.net core要有所超越。framework必须依赖framework框架,系统如果没安装framework,那发布的程序就无法运行。而.net core可以选择不同的发布形式,可以独立发布即不依赖框架运行,比如我上面提到的教程,编译后独立运行程序打包完20多M,相比Framework动辄上百M,框架比程序大多了,对用户来说实在不大友好。

兼容性

framework2.0、framework4.0可以运行在老一点的机器上,比如xp,但.net core就没办法了运行了。

跨平台

目前winform方式,.net core和framework都没办法跨平台。但其实.net core是可以跨平台的,只是目前微软还没有推出跨平台的UI框架,计划于11月份要发布的MAUI就是解决这个困境的,可以期待一下。有些人不看好,我是比较乐观的,对微软来说,技术从来都不是最大的问题。

跨平台,.net core大概率是可以实现的,现在做的都可以看成是为了跨平台而做的积累,等到时机成熟了,你可以很容易地实现跨平台,而framework注定是无法跨平台的。


web应用

web开发,现在网上基本上都大谈MVC、VUE等等,很少有人再谈webform了,我其实是有不同看法的。在我看来,framework和.net core完全就是两个不同的体系,分别适应两种不同的定位。

开发模式

framework是界面、逻辑、数据一体。有人把这个称为噩梦,因为他们认为这样混在一起过于混乱。事实上这种方式对个人开发者,开发效率是非常高的。页面拖放一个控件,后台代码查询,数据就呈现了,感觉不好看就调下css,有动态交互就用ajax+jquery,随便做一个页面的话可能几分钟就能看到雏形了,特别适合对界面要求不高、用户交互不多的独立开发者。

.net core是MVC方式,说白了就是前后端分离,前端负责美和用户体验,后端只负责提供提供数据。这种模式天生就是为团队开发而设计的,多人并行作战,缩短项目时间。但是单人开发,就略显臃肿了,本来一个页面就能完成的事,要好几步才能搞出来。

.net core不再支持webform,我觉得对个人开发者是一个损失。但个人开发者从来都不是主流,适应商业才能更好地活下去,微软也一样。

跨平台

.net core在web开发上是可以跨平台的,据说是可以部署在Linux上,只是我没有亲自测试过,不敢断言。framework则完全没办法,只能依赖于windows server的IIS。

不过话说回来,对独立开发者,网站规模不会很大,现在云服务器都是自带授权的,根本没有版权的问题。想节省费用,还是实实在在的考虑如何优化流量吧,这种意义的跨平台对独立开发者实际作用并不大。


总结

对开发Windows桌面应用:

基于原framework框架下已经开发好的项目或产品,没有必要转到.net core再做一遍,因为不会带来实质性的进步;

新的项目建议直接上.net core,做好业务与UI的分离设计,毕竟未来有跨平台可期;

对开发Web应用:

技术比较全面的个人开发者,我还是建议Framework,毕竟开发效率高。

在公司做项目的,那还是老老实实的.net core吧,公司讲究的是团队配合。


相关推荐

十分钟让你学会LNMP架构负载均衡(impala负载均衡)

业务架构、应用架构、数据架构和技术架构一、几个基本概念1、pv值pv值(pageviews):页面的浏览量概念:一个网站的所有页面,在一天内,被浏览的总次数。(大型网站通常是上千万的级别)2、u...

AGV仓储机器人调度系统架构(agv物流机器人)

系统架构层次划分采用分层模块化设计,分为以下五层:1.1用户接口层功能:提供人机交互界面(Web/桌面端),支持任务下发、实时监控、数据可视化和报警管理。模块:任务管理面板:接收订单(如拣货、...

远程热部署在美团的落地实践(远程热点是什么意思)

Sonic是美团内部研发设计的一款用于热部署的IDEA插件,本文其实现原理及落地的一些技术细节。在阅读本文之前,建议大家先熟悉一下Spring源码、SpringMVC源码、SpringBoot...

springboot搭建xxl-job(分布式任务调度系统)

一、部署xxl-job服务端下载xxl-job源码:https://gitee.com/xuxueli0323/xxl-job二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库三、启动...

大模型:使用vLLM和Ray分布式部署推理应用

一、vLLM:面向大模型的高效推理框架1.核心特点专为推理优化:专注于大模型(如GPT-3、LLaMA)的高吞吐量、低延迟推理。关键技术:PagedAttention:类似操作系统内存分页管理,将K...

国产开源之光【分布式工作流调度系统】:DolphinScheduler

DolphinScheduler是一个开源的分布式工作流调度系统,旨在帮助用户以可靠、高效和可扩展的方式管理和调度大规模的数据处理工作流。它支持以图形化方式定义和管理工作流,提供了丰富的调度功能和监控...

简单可靠高效的分布式任务队列系统

#记录我的2024#大家好,又见面了,我是GitHub精选君!背景介绍在系统访问量逐渐增大,高并发、分布式系统成为了企业技术架构升级的必由之路。在这样的背景下,异步任务队列扮演着至关重要的角色,...

虚拟服务器之间如何分布式运行?(虚拟服务器部署)

  在云计算和虚拟化技术快速发展的今天,传统“单机单任务”的服务器架构早已难以满足现代业务对高并发、高可用、弹性伸缩和容错容灾的严苛要求。分布式系统应运而生,并成为支撑各类互联网平台、企业信息系统和A...

一文掌握 XXL-Job 的 6 大核心组件

XXL-Job是一个分布式任务调度平台,其核心组件主要包括以下部分,各组件相互协作实现高效的任务调度与管理:1.调度注册中心(RegistryCenter)作用:负责管理调度器(Schedule...

京东大佬问我,SpringBoot中如何做延迟队列?单机与分布式如何做?

京东大佬问我,SpringBoot中如何做延迟队列?单机如何做?分布式如何做呢?并给出案例与代码分析。嗯,用户问的是在SpringBoot中如何实现延迟队列,单机和分布式环境下分别怎么做。这个问题其实...

企业级项目组件选型(一)分布式任务调度平台

官网地址:https://www.xuxueli.com/xxl-job/能力介绍架构图安全性为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;调度中心和执...

python多进程的分布式任务调度应用场景及示例

多进程的分布式任务调度可以应用于以下场景:分布式爬虫:importmultiprocessingimportrequestsdefcrawl(url):response=re...

SpringBoot整合ElasticJob实现分布式任务调度

介绍ElasticJob是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目ElasticJob-Lite和ElasticJob-Cloud组成。它通过弹性调度、资源管控、...

分布式可视化 DAG 任务调度系统 Taier 的整体流程分析

Taier作为袋鼠云的开源项目之一,是一个分布式可视化的DAG任务调度系统。旨在降低ETL开发成本,提高大数据平台稳定性,让大数据开发人员可以在Taier直接进行业务逻辑的开发,而不用关...

SpringBoot任务调度:@Scheduled与TaskExecutor全面解析

一、任务调度基础概念1.1什么是任务调度任务调度是指按照预定的时间计划或特定条件自动执行任务的过程。在现代应用开发中,任务调度扮演着至关重要的角色,它使得开发者能够自动化处理周期性任务、定时任务和异...

取消回复欢迎 发表评论: