一、系列简述


本篇起,将通过一系列文章,去描述如何构建一个应用开发框架,并以作者开发的框架为例,逐个点展开分析,如何从零开始,构建自己的开发框架。

本系列文章的目的,是带领有一编程经验的人,通过动手,初步完成自己的框架,更重要的是,获得构建框架的系统性思维模式。毕竟框架会过时,思维不会过时。

希望自己在技术有所深度,那么,主动、坚持、思考、行动,是四个最基本的要素。

二、作者简述


个人有十多年的软件工程工作经历,工作涉及软件工程的所有领域(需求策划、需求挖掘、需求分析、系统架构、功能设计,编码实现、系统测试、上线运维),对每个领域均有一定实践,不是每个领域最好的,但是应该是涉及领域最广泛的。

做过项目管理工作,实践过包括策划,沟通,计划,风险管理、过程监控等各专业管理域。

做过团队管理工作,实践过招聘,培训,考核,领导工作等企业组织域。

带领团队完成两次CMMI认证,对CMMI有一定认识,过程中积累学习了很多系统性思维,对软件企业整体运作有了更深刻理解。

优势是懂得各领域如何平衡,劣势当然是啥都不精通。

经过沉淀,最终对软件工程保持高度兴趣,热衷于知识输出和思想输出。

能够接受来自各方批评,但绝不改正。

三、什么是框架


言归正传,传递知识才是我们真正要做的事。

什么是框架,我们先来看一下百度百科的定义:框架(framework)是一个框子——指其约束性,也是一个架子——指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。

这个定义很清晰,框架包含两个含义,一个约束,二是支撑。更详细内容可以看百度百科,个人觉得解释很到位。去看看先

通过阅读,结合我们工作领域,我们知道我们定义的框架,叫软件开发框架。

比如:net core是一个框架,ef是一个框架,大家都叫框架,又好像有关联,有交叉,到底我们听谁的?

我们发现,软件开发框架,仍然是一个抽象的概念,当我们需要去落实一个具体的框架时,需要聚焦一个更细的问题。

net core是一个框架没错,它是定位在哪方面的框架,ef是一个框架没错,它是定位在哪方面的框架?

作者一直从事管理软件工作,所以,我定义的框架,就是指如何完成管理应用方面的框架。事实上,这种框架,几乎每个软件公司都有一个,每个程序员也梦想自己都能有一个自己的。

四、如何设计一个框架


我们已经知道框架的定义,那么,接下来就是行动起来。

管理系统开发过程,对程序员来说,属称增删改查。

站在设计的角度,我们对不同的需求进行抽象之后,发现管理系统需求包括表单、流程、报表。还有外部接口。

站在需求的角度,我们发现管理需求就是基础配置,业务流程,业务报表。当然,还有系统对接。

抽象到此,我们的框架要解决的问题已经足够清晰了,快速完成表单增删查改,快速完成流程驱动,快速完成报表。

接下来要做的是把框架的概念套进去:约束、支撑。

约束:我们需要用什么约定,去完成我们的开发,只有在这样的约定之下,我们才能达到快速开发的目的。

支撑:我们需要支撑哪些内容,完成这些支撑,我们对应用的快速开发便能呈现出有效性。

通过套用框架的概念,我们又可以产生新的问题:

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

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

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

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

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

正确回答以上问题,那么,我们的框架长什么样子,实际上就已经有了整体架构了。

在实际操作过程中,不同人,不同经验,会提出不同的解决方法,每个人的方法,看起来都会很有道理,我们不讨论对错,我们认为只要能解决问题的方法就是对的。

个人比较擅长用系统性思维进行分析,也仅仅是代表解决问题的一种方式。

系统思维最基本就是分层,先定位好每个层次要解决的问题,再细分,哪些问题哪些方法,属于哪个层次,是否纳入,如何纳入。

事实上,对每一个细节的评判,都来源于我们日常的积累和认知,个人认为扩张自己的知识域,是能够客观评估问题的唯一方法。

本篇作为引入篇,也就写到这里,任何问题都可以无限展开,以问题作为切入,引起思考,个人认为已经足够了。

下篇将介绍BitAdminCore框架定位及架构,通过介绍进一步让大家了解我们如何思考的选择。

构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架的更多相关文章

  1. 构建NetCore应用框架之实战篇(七):BitAdminCore框架登录功能源码解读

    本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.简介 1.登录功能完成后,框架的雏形已经形成,有必要进行复习. 2 ...

  2. 构建NetCore应用框架之实战篇(六):BitAdminCore框架架构小结

    本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.小结 1.前面已经完成框架的第一个功能,本篇做个小结. 2.直接上 ...

  3. 构建NetCore应用框架之实战篇(五):BitAdminCore框架1.0登录功能设计实现及源码

    本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.设计原则 1.继承前面框架架构思维,设计以可读性作为首要目标. 2 ...

  4. 构建NetCore应用框架之实战篇(四):BitAdminCore框架1.0登录功能细化及技术选型

    本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.BitAdminCore框架1.0版本 1.1.0版本是指最小版本 ...

  5. 构建NetCore应用框架之实战篇(三):BitAdminCore框架功能规划选择

    本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.BitAdminCore功能规划 如何选择框架的落地功能,前篇文章 ...

  6. 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构

    本篇承接上篇内容,如果你不小心点击进来,建议重新从第一篇开始完整阅读. 构建NetCore应用框架之实战篇索引 一.BitAdminCore框架简介 从前篇论述我们知道,我们接下来将要去做一个管理系统 ...

  7. 构建NetCore应用框架之实战篇系列

    构建NetCore应用框架之实战篇 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建Net ...

  8. 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序

    如何在Visual Studio 2017中使用C# 7+语法   前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...

  9. Android网络框架Volley(实战篇)

      之前讲了ym—— Android网络框架Volley(体验篇),大家应该了解了volley的使用,接下来我们要看看如何把volley使用到实战项目里面,我们先考虑下一些问题: 从上一篇来看 mQu ...

随机推荐

  1. MyBatis多对多查询

    -------------------siwuxie095                                 MyBatis 多对多查询         以订单和商品为例,即 一个订单可 ...

  2. 修改UITextView光标高度

    自定义UITextView文字字体时,经常出现光标与字体的高度不匹配,可以通过下面代码修改默认的光标高度, //创建子类重写UITextView方法 - (CGRect)caretRectForPos ...

  3. 给乱序的链表排序 · Sort List, 链表重排reorder list LoLn...

    链表排序 · Sort List [抄题]: [思维问题]: [一句话思路]: [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入): [画图]: quick ...

  4. iOS 多页面跳转同一页面时数据处理

    如果 同一个界面, 会有10个数据源传进来, 此时 创建 一个总模型fullmodel 存储 10个model 数据, 创建 10个一样的cell, 在 不同数据, 用不同cell处理最好, 千万别于 ...

  5. oracle pl/sql程序

    简单的pl/sql程序 declare begin dbms_output.put_line('hello world'); end; 什么是PL/SQL? pl/sql(Procedure lang ...

  6. IIS6.0创建新网站后,浏览显示需输入用户名和密码

    1.首先我们需要创建一个用于匿名访问的账号. 我的电脑右键,电脑管理->本地用户和组->用户->新用户 注意勾选(用户不能更改密码和密码永不过期这两项)   2.右键新创建的用户-& ...

  7. 【转】MEF程序设计指南一:在应用程序中宿主MEF

    在应用程序中宿主MEF其实非常简单,只需要创建一个组合容器对象(CompositionContainer)的实例,然后将需要组合的部件(Parts)和当前宿主程序添加到容器中即可.首先需要添加MEF框 ...

  8. Vue.js 2.0 跨域请求数据

    Vuejs由1.0更新到了2.0版本.HTTP请求官方也从推荐使用Vue-Resoure变为了 axios .接下来我们来简单地用axios进行一下异步请求.(阅读本文作者默认读者具有使用npm命令的 ...

  9. [SoapUI] 在Jenkins上传递project级别的参数给case

  10. 【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法(一)

    Java原生的API可用于发送HTTP请求 即java.net.URL.java.net.URLConnection,JDK自带的类: 1.通过统一资源定位器(java.net.URL)获取连接器(j ...