1. 程式人生 > >構建NetCore應用框架之實戰篇(一):什麽是框架,如何設計一個框架

構建NetCore應用框架之實戰篇(一):什麽是框架,如何設計一個框架

net 希望 dmi 清晰 構建 組織 評估 系統開發 概念

一、系列簡述


本篇起,將通過一系列文章,去描述如何構建一個應用開發框架,並以作者開發的框架為例,逐個點展開分析,如何從零開始,構建自己的開發框架。

本系列文章的目的,是帶領有一編程經驗的人,通過動手,初步完成自己的框架,更重要的是,獲得構建框架的系統性思維模式。畢竟框架會過時,思維不會過時。

希望自己在技術有所深度,那麽,主動、堅持、思考、行動,是四個最基本的要素。

二、作者簡述


個人有十多年的軟件工程工作經歷,工作涉及軟件工程的所有領域(需求策劃、需求挖掘、需求分析、系統架構、功能設計,編碼實現、系統測試、上線運維),對每個領域均有一定實踐,不是每個領域最好的,但是應該是涉及領域最廣泛的。

做過項目管理工作,實踐過包括策劃,溝通,計劃,風險管理、過程監控等各專業管理域。

做過團隊管理工作,實踐過招聘,培訓,考核,領導工作等企業組織域。

帶領團隊完成兩次CMMI認證,對CMMI有一定認識,過程中積累學習了很多系統性思維,對軟件企業整體運作有了更深刻理解。

優勢是懂得各領域如何平衡,劣勢當然是啥都不精通。

經過沈澱,最終對軟件工程保持高度興趣,熱衷於知識輸出和思想輸出。

能夠接受來自各方批評,但絕不改正。

三、什麽是框架


言歸正傳,傳遞知識才是我們真正要做的事。

什麽是框架,我們先來看一下百度百科的定義:框架(framework)是一個框子——指其約束性,也是一個架子——指其支撐性。是一個基本概念上的結構,用於去解決或者處理復雜的問題。

這個定義很清晰,框架包含兩個含義,一個約束,二是支撐。更詳細內容可以看百度百科,個人覺得解釋很到位。去看看先

通過閱讀,結合我們工作領域,我們知道我們定義的框架,叫軟件開發框架。

比如:net core是一個框架,ef是一個框架,大家都叫框架,又好像有關聯,有交叉,到底我們聽誰的?

我們發現,軟件開發框架,仍然是一個抽象的概念,當我們需要去落實一個具體的框架時,需要聚焦一個更細的問題。

net core是一個框架沒錯,它是定位在哪方面的框架,ef是一個框架沒錯,它是定位在哪方面的框架?

作者一直從事管理軟件工作,所以,我定義的框架,就是指如何完成管理應用方面的框架。事實上,這種框架,幾乎每個軟件公司都有一個,每個程序員也夢想自己都能有一個自己的。

四、如何設計一個框架


我們已經知道框架的定義,那麽,接下來就是行動起來。

管理系統開發過程,對程序員來說,屬稱增刪改查。

站在設計的角度,我們對不同的需求進行抽象之後,發現管理系統需求包括表單、流程、報表。還有外部接口。

站在需求的角度,我們發現管理需求就是基礎配置,業務流程,業務報表。當然,還有系統對接。

抽象到此,我們的框架要解決的問題已經足夠清晰了,快速完成表單增刪查改,快速完成流程驅動,快速完成報表。

接下來要做的是把框架的概念套進去:約束、支撐。

約束:我們需要用什麽約定,去完成我們的開發,只有在這樣的約定之下,我們才能達到快速開發的目的。

支撐:我們需要支撐哪些內容,完成這些支撐,我們對應用的快速開發便能呈現出有效性。

通過套用框架的概念,我們又可以產生新的問題:

我們的框架面向對象是誰?

他們平時都會遇到什麽共通的問題?

我們的框架需要解決他們哪些問題?是否所有問題都需要解決?

我們的框架需要包含哪些模塊?為什麽需要包含這些模塊?

我們提供什麽樣的開發模式,可以讓開發人員更快速解決問題?

正確回答以上問題,那麽,我們的框架長什麽樣子,實際上就已經有了整體架構了。

在實際操作過程中,不同人,不同經驗,會提出不同的解決方法,每個人的方法,看起來都會很有道理,我們不討論對錯,我們認為只要能解決問題的方法就是對的。

個人比較擅長用系統性思維進行分析,也僅僅是代表解決問題的一種方式。

系統思維最基本就是分層,先定位好每個層次要解決的問題,再細分,哪些問題哪些方法,屬於哪個層次,是否納入,如何納入。

事實上,對每一個細節的評判,都來源於我們日常的積累和認知,個人認為擴張自己的知識域,是能夠客觀評估問題的唯一方法。

本篇作為引入篇,也就寫到這裏,任何問題都可以無限展開,以問題作為切入,引起思考,個人認為已經足夠了。

下篇將介紹BitAdminCore框架定位及架構,通過介紹進一步讓大家了解我們如何思考的選擇。

構建NetCore應用框架之實戰篇(一):什麽是框架,如何設計一個框架