关于对.net core中框架选型的思考

(声明:以下仅为个人拙见,场景也只涉及到普通应用,类似工控、AI等领域暂不包含在其中。在下胆大,喷的我当没看见。)

从传统三层到微服务,从.net到.net core,本以为.net core出现,微软放手让社区发挥,会如同拨开云雾见青天,没想到如今几年过去了,依旧一地鸡毛。不是变着法子阉割收费,就是东拼西凑的缝合怪。然后不少新手或者新项目,总希望有一个大而全的存在,让人不假思索上手就干。.net core社区的杂乱无章,也让新手摸不着头脑。

(在此表达对javaer的羡慕ing……若依真的不错……)


 

在比较框架之前,咱们先简单梳理一下.net core的应用场景,也方便一些.net开发者明确自身软件的定位。

一、企业级应用Or互联网应用?

首先,大家可以先理解一下狭义的企业级应用与互联网应用。

在此,贴一位园友对二则的理解:https://www.cnblogs.com/zjclz/p/8650177.html

而在如今,广义上的企业级应用与互联网应用界限逐渐模糊,二者的区别逐渐变小。就拿企业级应用最重要的事务性来说,大型互联网网站,如今同样很少出现因为事务引发问题。而云的出现,企业级应用同样在SaaS与PaaS模式下风生水起。

在以往,大家一提到.net的应用场景,第一反应便是企业内部应用,如OA,ERP,MES等企业管理软件。

诚然,直到现在,一大批.net从业者依旧在此类企业管理软件中挣扎,由于这类软件对于业务精通要求较高,因此较难有太多人员变动(这也是推动.net转向.net core难点之一,许多.net开发人员转为管理层,业务复杂的情况下确实存在难以重构的情况)。

二、重业务OR重迭代?

在传统企业中,软件的存在,更多的是帮助管理人员进行管理,帮助解决工作中的各种问题。而由于互联网的兴起,电子商务全球化以及各类app的出现,更是让软件风生水起。雷军有句话说得很好,“站在风口上,猪都能飞上天”。

与传统软件不同的是,这类软件,在普通业务内核之上,更注重的是紧跟当下热点,抢占互联网风口,抓住使用者消费心思和使用习惯,进行快速迭代。


 

说了这么多无关紧要的话,我再来讲讲当下部分.net core开源框架、库以及项目对我的感官(仅罗列部分,且是与java 若依等框架相比。那些想免费广告的我就懒得提了。另外,如blazor此类前端库也暂且不提)

一.ABP vNext

开源地址:https://github.com/abpframework/abp

要提到.net core开源项目,不得不提一下大名鼎鼎的abp vNext了。

是否有前端UI:有angular以及mvc提供的ui。

优点:使用方便,设计之道优雅精美。

缺点:定位不明,有些不伦不类。abp使用EF Core作为orm,若说abp适合互联网应用,可众说周知EF Core由于诸多原因(如导航属性,令人诟病的查询速度等)掣肘,并非那么适合互联网应用。可若是着重企业级应用,就不得不吐槽一下对oracle项目的不友善了——所有表名与字段需要控制在30个字符内,所有关键字都要手动映射为大写。而abp vnext默认引用框架实体都是以nuget的形式,且源代码繁杂,必须要下载源码才能修改。

二.FreeSql

开源地址:https://github.com/dotnetcore/FreeSql

刚吐槽完EF Core,现在讲讲FreeSql(这里之所以将FreeSql拿进来是因为FreeSql社区同样提供一些快速开发框架),FreeSql作为一款orm,因支持的数据库多,应用场景广泛,广受好评。社区友好(叶老板虽然怼过人,但技术讨论方面从不拉稀摆带,非常热情)

是否有前端UI:有,vue。

优点:支持面广,应用场景广泛,更新速度快,性能高,社区友好。

缺点:框架都是基于FreeSql,而其目前仅一个人在维护,虽然我相信叶老板的实力,但个人毕竟精力有限。

三.OpenAuth

开源地址:https://github.com/yubaolee/OpenAuth.Core

一个核心开源,部分扩展功能收费的框架,专注于权限设计。

是否有前端UI:有。mvc+layui版本(免费)vue版本(收费)。

优点:在权限设计上几乎适应所有应用,同样传统企业级网站所必需的表单设计、流程设计等,同样移植到了.net core版本。

缺点:只专注权限设计,虽然有仓储中心(入库订单)等功能存在,但尚且不知扩展与开发是否方便,不全面可能会造成一些未知问题。

四.YiShaAdmin

开源地址:https://github.com/liukuo362573/YiShaAdmin/

是否有前端UI:有。jQuery bootstrap。

优点:权限以及一些基础功能齐全,作为一个管理后台可以无缝连接。实用jQuery与bootstrap,更方便传统mvc程序员过渡。

架构明了简洁,对于大多数人来说更好入手。

缺点:前后端分离是趋势,比较老旧的ui可能是一些公司选型的绊脚石。

弱架构同样可能会对大型系统快速迭代维护带来问题。

五.NetModular

开源地址:https://github.com/iamoldli/NetModular

相比较前几位,NetModular名声不显,但实则出道也有一年了,最新库已经更新到2.0版本。

是否有前端UI:有。vue版本。

优点:模块化设计,专注于业务开发。搭配配套的vue前端,是快速开发应用的利器。最最重要的是,全套服务,便于扩展。

模块化的设计,根据业务功能划分,以模块的形式引入,更方便管理(更方便向社区伸手,并且作者已经开源了部分实用功能模块。)。

个人觉得,其设计更符合传统.net开发人员的思维与使用习惯。

缺点:由于许多都是作者自己完成(如orm),对框架扩展,由于文档不够齐全,需要认真看源码和示例。

 


总结:在.net core的社区里面,没有一个真正大而全,能满足百分之八九十的框架存在。就算本人比较喜欢NetModular一般的开源项目,也因为贡献者太少而开展缓慢(伸手党~)。并且由于EF让开发人员快速过渡的能力,以及codefirst带来的对架构和设计思想的辅助能力,在许多开源项目中依旧大行其道。然而EF同样是把双刃剑,也许,更多开发者应该有更多的选择。

声明:以上仅为个人看法,与任何一个开源项目没有利益关系,每一位开源作者都值得尊敬,只希望.net社区能越来越好。

posted @ 2020-10-13 10:00  windn  阅读(960)  评论(1)    收藏  举报