zoukankan      html  css  js  c++  java
  • 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构

    本篇承接上篇内容,如果你不小心点击进来,建议重新从第一篇开始完整阅读。

    构建NetCore应用框架之实战篇索引

    一、BitAdminCore框架简介


    从前篇论述我们知道,我们接下来将要去做一个管理系统的框架。

    BitAdminCore框架是一个定位于后台管理系统的快速开发框架。项目源码地址:https://github.com/chenyinxin/cookiecutter-bitadmin-core

    后续篇章将逐步分解整个框架的完成过程。

    二、框架解决什么问题


    上篇已经提出了框架需要解决的几大问题,在这里一一作答:

    我们的框架面向对象是谁?

    答:管理应用系统的初级或中级开发人员。

    他们平时都会遇到什么共通的问题?

    答:快速上线。各种技术问题。

    我们的框架需要解决他们哪些问题?是否所有问题都需要解决?

    答:不能解决所有问题。事实上,框架并不能解决开发人员的问题,解决的是项目的问题,不管开发框架怎么先进,开发人员每天工作时间都不会变,工作过程遇到的问题数量也不会变,变的是相同时间内能完成的功能数。框架解决的是不同项目中,开发人员遇到的相同问题,把它们形成一套解决方案,固化代码,在下个项目时,它便不再是问题。

    例如:A项目需要登录功能,于是程序员用2天开发了一个登录功能,还有一堆bug。当A项目开发完成后,我们发现B项目也会用到登录功能,整一个叫框架的东西,里面只有登录功能。当B项目来的时候,我们只需要将框架代码应用进去,登录功能便已经完成。此过程可能只需要5分钟。请问,这有没有解决程序员的问题?答案是没有,项目经理也知道程序员只需要5分钟,不会给他分配2天时间。

    我们的框架需要包含哪些模块?为什么需要包含这些模块?

    答:上述示例已经明确说明,一个框架需要包含的模块。框架需要哪些模块,是由未来的项目决定的,也即公司的业务战略决定,而非架构师。架构师只是把它落实而已。

    我们提供什么样的开发模式,可以让开发人员更快速解决问题?

    答:代码可读性。重复代码不需要开发。

    在实际生产中遇到的问题,架构师在理想状态下设计的要多得多,面对众多的初级开发人员,代码可读性应该作为架构的第一选项,A人员开发的代码如何在B那里快速看得懂。

    所以,作者个人反对各种使用接口、调用来调用去的方式,以展示个人的技术有多高超。

    我们提倡直接、暴力。让代码架构看起来像初级工程师写的直接简单。

    三、BitAdminCore定位


    BitAdminCore定位原理上述已经阐述。BitAdminCore起码于作者工作经历,十几年不变的管理软件开发,以前也接触使用过不同框架,各有优劣。以前net、后来使用java、再后来netcore出来之后,果断转移到netcore。

    选择netcore是对比选择的结果,C#的语言优势这个不用细说,前些年,由于android以及开源趋势没有跟上,net处于下风,但时间推到2018年,随着微软战略的云化以及开源化,还有安卓进入中晚年,单从技术层面netcore对比java已经占上风,这个人使用两种语言对比后认为,但是生态仍需时日。

    作为应用开发人员,省时省力才是关键,管它什么语言。所以,坚定不移选择走netcore路线,包括公司及个人影响下的团队。

    BitAdminCore定位于”为个人周边团队提供管理类项目快速开发能力支撑“,同时,适应时代发展,进行开源分享。

    四、BitAdminCore架构原则


    个人观点,软件行业是全世界最先实现共产主义的行业。

    事实上,我们每天都在免费使用别人花了很大力气和成本开发出来的软件,这在传统生产行业是不可能的事。而且免费趋势越来越火。

    在这样的社会条件下,BitAdminCore框架跟随大队,一是开源,二是利用开源。目标是项目开发最优的解决方案。

    五、BitAdminCore架构


    基于以上提出的一些原则:可读性优先、开源、快速开发的特点。我们进一步设计我们的框架。

    首先是技术选择和评判:

    1、基于通用技术框架包括:html5,css3,js,Jquery3,boostrap3

    解释:a、只要是个写程序的,以上技术不可能不会。b、boostrap4变动太大,个人同事都熟悉boostrap3,短期内学习成本高。

    2、抛弃netcore默认的PageModel实现模式,选择静态页面+webapi模式。理由:一是太复杂需要学习成本,二是是可移植性差,三是保持所有开发模式一致。

    解释:a、前端技术均需要掌握并能达到开发目的,再花成本学习一个更小众的应用没必要。b、框架如果想移植到java,包含太多net特性。c、开发web、app、weixin等客户端保持相同的开发模式,减少学习成本。

    3、NetCore.All这个就不解释了,自己去看引用包结构。

    4、sqlserver,理由:之前部分代码是sqlserver实现,直接迁移过去,最近也在考虑mysql版本。

    解释:除非客户有特殊要求,不管语言或数据库,都是开发的人说了算,既然熟哪个就用哪个。

    5、ef与sql混合。理由:长期实践结果,判断依据可读性优先。

    解释:在长期的开发工作中,发现ef对于复杂的查询实现,可读性非常差,调试极度麻烦。我们把单表操作用ef,而多表操作全部使用sql实现。

    6、AdminLTE后端管理界面模板。理由:随便选一个。

    以上就是整个框架的底层技术选择。

    本篇介绍到此,框架功能规划原则上面已经提及,下一篇继续介绍框架的功能规划选择。

  • 相关阅读:
    MySQL事件(定时任务)
    MySQL存储过程
    WebSocket小记
    Python计算给定日期位于当年第几周
    报错解决——Failed building wheel for kenlm
    计算机基础系列之压缩算法
    计算机基础系列之内存、磁盘、二进制
    计算机基础系列之CPU
    常用正则表达大全
    报错解决——TypeError: LoadLibrary() argument 1 must be str, not None
  • 原文地址:https://www.cnblogs.com/chenyinxin/p/9003432.html
Copyright © 2011-2022 走看看