为什么要创造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。

Taurus.MVC的更多相关文章

  1. 开源:Taurus.MVC 框架

    为什么要创造Taurus.MVC: 记得被上一家公司忽悠去负责公司电商平台的时候,情况是这样的: 项目原版是外包给第三方的,使用:WebForm+NHibernate,代码不堪入目,Bug无限,经常点 ...

  2. Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)

    背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...

  3. Taurus.MVC 2.0 开源发布:WebAPI开发教程

    背景: 有用户反映,Tausus.MVC 能写WebAPI么? 能! 教程呢? 嗯,木有! 好吧,刚好2.0出来,就带上WEBAPI教程了! 开源地址: https://github.com/cyq1 ...

  4. 用Taurus.MVC 做个企业站(下)

    前言: 上一篇完成了首页,这一篇就把剩下的几个功能给作了吧. 包括文章列表.文章详情和产品展示. 1:文章列表: 原来的ArticleList.aspx 1:现在的articlelist.html 除 ...

  5. 用Taurus.MVC 做个企业站(上)

    前言: 之前是打算写一篇文章叫:Taurus.MVC 从入门到精通,一篇完事篇! 后来转指一念,还是把教程集在这个企业站项目上吧!!! 企业站风格: 之前发过一个帮师妹写的企业站:最近花了几个夜晚帮师 ...

  6. GJM : Taurus.MVC 2.0 开源发布:WebAPI开发教程 [转载]

    Taurus.MVC 2.0 开源发布:WebAPI开发教程 转载自http://www.cnblogs.com/cyq1162/p/6069020.html 因是新手  粘贴时有一个版权问题 本文原 ...

  7. Taurus.MVC 2.2.3.4 :WebAPI 实现权限控制认证(及功能增强说明)

    前言: 前两天,当我还在老家收拾行旅,准备回广州,为IT连的创业再战365天时, 有网友扣上问:Taurus.MVC中如何实现认证和权限控制,最好能做个小例子. 我一不小心回了句:等回广州我再写篇文章 ...

  8. Taurus.MVC 支持Asp.Net Core 的过程

    前言: 这些天,似乎.NET Core相关的新闻和文章经常在我眼前晃~~~ 昨天,微软又发布了.Core 2.1,又愰了一下,差点没亮瞎我的眼睛. 好吧,大概是上天给我的暗示,毕竟 CYQ.Data  ...

  9. 在已有的Asp.net MVC项目中引入Taurus.MVC

    Taurus.MVC是一个优秀的框架,如果要应用到已有的Asp.net MVC项目中,需要修改一下. 1.前提约定: 走Taurus.MVC必须指定后缀.如.api 2.原项目修改如下: web.co ...

随机推荐

  1. HoG SVM 目标检测分析

    前一段时间开始了解HoG跟SVM行人识别,看了很多包括Dalal得前辈的文章及经验分享,对HoG理论有了些初步的认识. HoG 的全称是 Histogram of Oriented Gradient, ...

  2. SIM卡基础,各管脚意义,封装定义

    1. SIM简介 SIM卡(Subscriber Identity Module).即用户识别模块,是一张符合GSM规范的"智慧卡".SIM卡可以插入任何一部符合GSM规范的移动电 ...

  3. The end of other

    The end of other For language training our Robots want to learn about suffixes. In this task, you ar ...

  4. tyvj1297 小气的小B

    描述 其实你们都不知道,小B是很小气的.一天小B带着他的弟弟小B'一起去摘果子,走着走着,他们忽然发现了一颗长满了果子的树.由于弟弟长得太矮了,弟弟只有让哥哥小B帮他摘一些果子下来.哥哥小B说:&qu ...

  5. wikioi1191 数轴染色

    题目描述 Description 在一条数轴上有N个点,分别是1-N.一开始所有的点都被染成黑色.接着 我们进行M次操作,第i次操作将[Li,Ri]这些点染成白色.请输出每个操作执行后 剩余黑色点的个 ...

  6. 返回本机的mac物理路径

     /// <summary>         ///    返回本机的mac物理路径         /// </summary>         /// <return ...

  7. Hdu4005-The war(双连通缩点)

    In the war, the intelligence about the enemy is very important. Now, our troop has mastered the situ ...

  8. HDU1841——KMP算法

    这个题..需要对KMP的模板理解的比较透彻,以前我也只是会套模板..后来才知道..之会套模板是不行的..如果不能把握模板的每一个细节`,至少能搞清楚模板的每一个模块大体是什么意思.. 题意是给出两个串 ...

  9. hdu2059 龟兔赛跑

    hdu2059 龟兔赛跑 动态规划 题目描述: Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击——赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州 ...

  10. Unity编辑器-创建单独编辑框,折叠框,提示框

    今天我们就来学习如何创建一个编辑框,上面绘制一个折叠框里面有四种消息框. 代码如下: using UnityEngine; using System.Collections; using UnityE ...