開源:Taurus.MVC 框架

来源:http://www.cnblogs.com/cyq1162/archive/2016/08/05/5739048.html
-Advertisement-
Play Games

為什麼要創造Taurus.MVC:記得被上一家公司忽悠去負責公司電商平臺的時候,情況是這樣的:項目原版是外包給第三方的,使用:WebForm+NHibernate,代碼不堪入目,Bug無限,經常點著點著就掛了。一開始招了幾個實習的大學生在那玩,搞不定了,終於忽悠的我了,哈哈。。。當時進去的第一感覺是... ...


為什麼要創造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.Controllers

1:尋找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的人民群眾多了一種選擇。

有情懷的你,看完,下完源碼,接下來該有錢給錢,沒錢給贊了,哈哈。。。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 程式的本質是數據加演算法。通俗一點來說呢,其實就是用戶給一個輸入,經過演算法的處理之後,電腦反饋一個輸出給用戶。可以很清楚的看出,在這個過程中,處於主導地位的是數據。但是,當我們在進行圖形用戶界面(Graphic User Interface,GUI)編程的時,數據總是處於被動地位。也就是說,程式總是 ...
  • 背景 前段時間公司有個需求(每天給業務導出一批數據,以excel的形式通過郵件發送給他)。A說:直接寫個服務,判斷等於某個時間點,執行一下sql語句,生成excel,寫個EmaiHelper發送給他不就得了,這有什麼麻煩的?B說:我了個親娘來,還寫服務呢?你還需要搞個timer去判斷時間點?多費勁啊 ...
  • 博客園有很多人發表了他們自己認為的框架,好奇,就點進去看了下。 我只想說那真的稱不上是框架。 我建議他們可以多多看.net的是如何設計的、一些第三方框架的代碼是如何寫的。拿熟悉的.net web框架的來說,從:using System; 到:using System.Web;再到:using Sys ...
  • VS2013自帶IIS Express,無法發佈JSON文件,需添加MIME映射。 沒有圖形界面,只能命令行。 進入C:\Program Files(x86)\IIS Express文件夾,輸入:appcmd set config /section:staticContent /+[fileExte... ...
  • 可能對於初入此行業人來說有些困惑,實現起來有一絲複雜。 比如說時間是:2016-08-05 14:46:30,中間過了56秒鐘。要求得出56秒之後的時間格式是:年月日時分秒 下麵介紹最簡單的辦法, 也就是直接用 2016-08-05 14:46:30.AddSeconds(56)即可。 其中的Add ...
  • 這次主要實現管理後臺界面用戶資料的修改和刪除,修改用戶資料和角色是經常用到的功能,但刪除用戶的情況比較少,為了功能的完整性還是坐上了。主要用到兩個action “Modify”和“Delete”。 目錄 MVC5網站開發之一 總體概述 MVC5 網站開發之二 創建項目 MVC5 網站開發之三 數據存 ...
  • 對Web API新手來說,不要忽略了ApiController 在web API中,方法的返回值如果是實體的話實際上是自動返回JSON數據的例如: 他的返回值就是這樣的: 這是定義的Response類 在web API還有一個問題,可能是我自己太大意了,新建的控制器如果沒有仔細看就會預設選擇了MVC ...
  • 一、什麼是VSTO? VSTO = Visual Studo Tools for Office,是.net平臺下的Office開發技術。相對於傳統的VBA(Visual Basic Application)開發,VSTO為中高級開發人員提供了更加強大的開發平臺和語言,並部分解決了傳統Office開發 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...