11 Star 15 Fork 4

FastDev / OF.SmartMVC

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
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项目资源命名上会以/作为分隔符

Empty file

About

使用 Razor Engine 来提供程序模板的功能,性能较 MVC 提供的 Razor Engine 有较多提升。 expand collapse
C#
Cancel

Releases

No release

Contributors

All

Activities

Load More
can not load any more
C#
1
https://gitee.com/fastdev/OF.SmartMVC.git
git@gitee.com:fastdev/OF.SmartMVC.git
fastdev
OF.SmartMVC
OF.SmartMVC
master

Search