開源:Taurus.MVC 框架
記得被上一家公司忽悠去負責公司電商平台的時候,情況是這樣的:
項目原版是外包給第三方的,使用:WebForm+NHibernate,代碼不堪入目,Bug無限,經常點著點著就掛了。
一開始招了幾個實習的大學生在那玩,搞不定了,終於忽悠的我了,哈哈。。。
當時進去的第一感覺是重做,不過呵呵,老闆的心思你不猜不行。
然後第一階段就是在舊項目改造維穩了,只要不是需要掛上百台伺服器才能解決的問題,都能弱弱地處理的不要不要的,畢竟沒有三兩三,也不好上樑坑。
到了第二階段,自然就是思考重做了:
電商後台已有ASP.NET Aries 框架,刷刷刷的不用擔心太多;
電商前台選什麼框架呢?1:WebForm 太保守;
2:.NET Core 太激進;
3:QBlog(秋色園) 門檻高;
4:重新寫一套,事務繁忙,沒空靜下心思考,而且時間有限,已向BOSS提交了計劃。
最後只有無奈地選擇:ASP.NET MVC 了。
仔細想想.NET環境,市面上流行的開發框架,都是微軟自家的(說好的百花齊放呢?)
我也知道,有些上點年紀的,也造框架,不過都是造給自己或自己公司用的(和造給用戶用的思考的角度和涉及的廣度是不一樣的)。
也有一些免費造給人民群眾的,不過宣傳三兩下就沒聲音了;
園子里也從來不會主動幫助第三方的開源框架做推廣,光靠博主自己的激情和情懷,能支持多久都是是個未知數,畢竟搞框架是沒收入的。
筆風一轉:
後來,老闆倒下了.....(淚奔~~~)。
然後,就有時間靜下心來好好用情懷造框架了!
終於,Taurus.MVC 就出來了,而且一出來就開源了!!!開源!!開!三遍。
關於框架取名:Taurus十年前造CYQ.Data的時候,名字取的不好(怪我咯),導致推廣阻力大。
於是現在造新的框架,都必須得好好想個名字,畢竟得取個像:齊得龍,齊東強,齊得龍東強 這樣的才夠響亮而徹底。
前一小陣子發布的:ASP.NET Aries 業務開發框架:取名:Aries(白羊座,溫柔中帶點驕情)。
於是思考,是該延續白羊系列叫:Aries.MVC 呢?
還是。。。打造黃金十二宮呢?
然後把十三星座,八大行星的英文單詞查了個遍,發現都沒怎麼滿意,跳躍式取名有阻礙,那就順序取名吧。
Taurus(金牛座),其實最後決定的原因是這個單詞的發音:脫了(很有看大片的感覺,而且充滿想像力,爆力中帶點色咪咪的感覺)。
關於框架的適用場景:
選擇框架,對高手來說,是一門學問;對新手來說,只是一種選擇。
在我年輕的時候,被迫只能選擇微軟造的框架,現在,我成了創造者:
CYQ.Data+Aries+Taurus,幾乎能適應所有的業務場景。
已經可以不用ASP.NET WebForm、ASP.NET MVC了。
但,仍然依舊離不開ASP.NET平台。
如上所說:
1:ASP.NET Aries 適用業務系統和後台快速開發。
2:Taurus.MVC 適用於對性能要求較高的電商等前端系統和WebAPI。
關於框架的優勢:
通常講框架的優勢,就是開始扯蛋吹B的時候,只要市場口號喊的響亮,產品只要不是弱的一B就不是什麼問題。
框架有啥優勢?常人都先問這個,你要吹的我心動,吹的我心開,才回你一聲哦,然後默默把源碼下載存硬碟里。
由於市面基本微軟一家統一天下,所以比較都是找微軟家的MVC了。
其實吧,和.NET MVC 比起來,只能說:一個天上,一個地下。
MVC4安裝完:800M(沒搞明白究竟是要裝什麼東西這麼大);
Taurus.MVC安裝完:400K(Taurus.Core.dll+CYQ.Data)。
很明顯:微軟這些年一直做加法,沒想做減法,一直做創新,沒想做兼容,很多產品都大粗大葉,讓人糾心。
扯遠了,說說優勢,讓我想想,讓我和靜靜一起想想...
先用幾個被用濫的詞:輕量級?高性能?高效率?
不行,得與眾不同,有點別人沒做到的才叫優勢:
噢,對,得用圖表示,這樣才能顯的專業,對,這樣這樣,那樣那樣,好,整完了,上圖:
Taurus.MVC 源碼:
1:源代碼SVN:https://github.com/cyq1162/Taurus.MVC
2:Demo演示站:http://taurus.cyqdata.com
Demo截圖是這樣的:
Taurus.MVC 框架引入方式:
1:在Nuget上搜Taurus.MVC,引用即可(會引入:Taurus.Core和CYQ.Data)
然後出來一個Readme.txt,按提示配置一下URL攔截和指定Controller地方的dll即可。
2:直接用源碼項目(源碼項目里會有Demo)。
Taurus.MVC 框架介紹:1:源碼下載後:解決方案圖:2:解決方案說明:
1:CYQ.Data:主要XHtmlAction當模板引擎,另外當數據層可以提供Model或提供自動綁定語法。
2:Taurus.Core:主要實現了路由重寫、Controller調用、ViewEngine等核心方法。
3:Taurus.Controllers 方法入口,寫代碼的地方。
4:Taurus.View 只存放html和css和js
3:補充說明:1:通常MVC的Controller,Modle,View文件都放在一個項目里,這裡就分拆到兩個項目了。
2:為了項目層級清晰,你可以建Model項目(放實體)和Logic項目(寫業務邏輯代碼)還有Utility(放工具類)。
3:框架提供的Demo,就馬馬虎虎全放Controllers項目里了。
下面按MVC的套路來簡單說說基礎的原理及使用方式:
1:Taurus.MVC的路由:1:隱匿路由:在.NET MVC里,路由是一塊很重要,但麻煩的功能。
要簡化MVC,第一步,就是要思考如何隱式地消滅路由。
最後內部默認定了兩個路由:
1:{Controller}/{Action}/{Para}
2:{Module}/{Controller}/{Action}/{Para}
默認第一種。
2:擴展路由:當部署為子應用程序,或第一個為用戶名時,會多出一個前綴目錄。
這時可以能過AppSetting配置RouteMode值為2,輕鬆過度。
上下文會提供三個參數讓你獲取信息:ControllerType,Action,Para。
好了,路由講完了,想自定義路由?No Way!噢,可以改源碼~~~~
2:Taurus.Controllers1:尋找Controller:規則已經定好了,剩下的事就是按規則找Controller了。
1:收集所有的Controller。
2:指定去哪收集:默認是去Taurus.Controllers找繼承自基類:Taurus.Core.Controller。
3:自定義存放Controllers:AppSetting配置Taurus.Controllers的值,假設為:Taurus.View
4:找不到Controller時,都找DefaultController,如果這個都木有(Demo里是有的),就拋異常了。
2:調用Controller的Action:
1:方法名都是public void,且沒有參數(重載多個參數,默認只收集第一個)。
2:如果是Ajax請求,把處理完的值賦給上下文的AjaxResult即可。
3:找不到Action時,會找Default方法(這個基類里有,所以一定會有,有需要就重寫它)。
3:Taurus.View
1:模板:html(嚴格的說應該是xhtml)
2:模板載入方式:和URL對應的定址路徑:就是Views/{Controller}/{Action}.html
3:母版頁的引用方式:itemref="頁面.節點名稱"。(itemref是div的屬性,沒人用,就借它來引用節點替換。)
4:載入替換語法:
A:對於input標籤,可以使用CYQ.Data.MDataRow.SetToAll批量賦值。
B:對於${name},可以使用View.LoadData(數據,"前綴"),會自動格式化。
C:對於列表循環標籤:可以使用CYQ.Data.MDataTable.Bind方法綁定。
總結:
1:本文並沒詳細講解使用方法,對於使用方式,會在下一篇文章介紹:
嗯,一篇介紹就夠了,因為實在沒啥可講的了,不需要寫一本書。
2:Demo里提供增刪改查列表分頁功能,能力好點或有MVC基礎的,掃下源碼就會使用。
3:今天的重點是開源。。。開源。。。開源。。。重要的事情說123。
最後說一聲:
此框架的開源,給了.NET的人民群眾多了一種選擇。
有情懷的你,看完,下完源碼,接下來該有錢給錢,沒錢給贊了,哈哈。。。
推薦閱讀:
※提前一年部署EOS生態的「歐鏈」,希望利用預言機和開源工具等為開發者服務
※開源成為晶元設計的新趨勢 | 半導體行業觀察
※全面應用 linux並棄用windows的經驗分享
※Karpathy 更新深度學習開源框架排名:TensorFlow 第一,PyTorch 第二
※2017年免費可商用字體大全(附打包下載)