11 Star 14 Fork 3

FastDev / OF.SmartMVC

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

#OF.SmartMVC

序言 之前网上找了一个不错的开源项目,基于MVC实现,结果运行后发现比想象中的慢很多。跟踪了一下代码发现瓶颈居然不是读取数据库环节,多少有点出乎意料。几经折腾后发现耗时最多的过程竟然是在 MVC 框架里面,项目中使用了太多的 Html.partial、Html.Action、以及 RenderPartial 等方法,而这些方法在 MVC 框架中的实现都有些复杂,所以性能上就感觉很慢。

由于MVC也是基于Razor语法实现的,所以第一时间想到的是找一个性能更好的RazorEngine试试。后面在网上找了一个 RazorEngine的实现,发现实现相同的功能其性能明显比 MVC 框架高不少。

实现 另外这个框架本身也很强大,提供了直接编译字符串、编译模板等多种方法,只是这种方式编译后的dll保存在临时文件下的,每次都会生成一个。考虑到实际项目的需要,我在此框架基础上做了一些封装和改进: 1、相关 cshtml 模板写在单独的一个类库项目中,文件属性设置为“嵌入的资源”。另外我重写了其关键的类,编译的过程会将文件生成到指定的目录(文件名自定义)。

2、需要调用模板的时候,只需要先加载上一步生成的dll库,然后调用公共方法传入 cshtml 资源名和参数即可。使用此方法对比测试了一下这种方式和原来MVC的性能,发现在Render的速度有了非常大的提升。另外,使用这种方式也可以减少第一次网站启动过程中编译View的耗时。

另外,由于时间原因mvc 中的一些指令如 Section. Layout 目前并没有实现,提供了另外的指令 CallFunc 来实现,只需要调用模板的时候传入调用请求中指定子 Func 的信息即可。

项目说明 此项目分为3个子项目: 1、OF.SmartMVC.Core 类库 2、OF.SmartMVC.TestView 用于测试的模板文件库 3、OF.SmartMVC.Test 用于测试的程序(需要注意的是,本项目中使用Console应用进行的说明,所以资源文件的命名为 “...目录.资源名”(以 . 做分隔符).方式,如果是 MVC项目资源命名上会以/作为分隔符

空文件

简介

使用 Razor Engine 来提供程序模板的功能,性能较 MVC 提供的 Razor Engine 有较多提升。 展开 收起
C#
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/fastdev/OF.SmartMVC.git
git@gitee.com:fastdev/OF.SmartMVC.git
fastdev
OF.SmartMVC
OF.SmartMVC
master

搜索帮助

14c37bed 8189591 565d56ea 8189591