.NET文章集:linux下的.wwwlehu6.vip乐虎官网net mvc cms

cms程序架构

本程序是重中之重是用以公司网站开垦的,也能够做博客程序,程序是从此前上壹篇的.net
博客程序革新过来的,主要才干由webform转成.net
mvc了,由于是很早此前的花色,12年如故mvc三本子,当然依旧跑在linux下的。

技术栈

  • .net framework 4.0
  • sqlite 数据库
  • mono linux 运营条件以及mono下的sqlite库
  • razor 模板引擎
  • dapper 轻量级orm框架
  • vs20一7 社区版本

这一次的开垦工具相比新了吗,上次用vs20十发的,跨度非常的大,那些项目事先也是在10下支付出来的,即便用20壹柒,其实没什么影响的。

razor引擎比nvelocity的易用性高许多,而且跟后端集结的相比好。

并且本次的花色完全采取dapper
orm,整个数据库访问层操作看起来也不亦乐乎大多了。

代码结构

wwwlehu6.vip乐虎官网 1
左手首要分为四个文件夹,Jqpress.web是存放web路由入口、模板皮肤、静态文件,上传文件夹,后台管理程序通过Areas域管理来贯彻的,整个项目协会依然比较清楚的。

路由设计

wwwlehu6.vip乐虎官网 2

路由入口为HomeController这些文件,包罗首页、产品列表,小说列表,小说内容等待,都以经过这一个Controller来路由的,纵然效果比较多,但是代码量不到300行,业务逻辑管理为主都在service层。

如下为贰个列表分界面包车型大巴Action逻辑才20几行

        public ActionResult Category(string pagename) 
        {
            var model = new PostListModel();
            CategoryInfo cate = _categoryService.GetCategory(pagename);
            model.Category = cate;
            if (cate != null)
            {
                int categoryId = cate.CategoryId;
                model.MetaKeywords = cate.CateName;
                model.MetaDescription = cate.Description;
                ViewBag.Title = cate.CateName;
                model.Url = ConfigHelper.SiteUrl + "category/" + Jqpress.Framework.Utils.StringHelper.SqlEncode(pagename) + "/page/{0}";

                const int pageSize = 10;
                int count = 0;
                int pageIndex = PressRequest.GetInt("page", 1);
                int cateid = PressRequest.GetQueryInt("cateid", -1);
                int tagid = PressRequest.GetQueryInt("tagid", -1);
                if (cateid > 0)
                    pageIndex = pageIndex + 1;
                var cateids =categoryId+","+ _categoryService.GetCategoryList().FindAll(c => c.ParentId == categoryId).Aggregate(string.Empty, (current, t) => current + (t.CategoryId + ",")).TrimEnd(',');
                var postlist = _postService.GetPostPageList(pageSize, pageIndex, out count, cateids.TrimEnd(','), tagid, -1, -1, -1, -1, -1,-1, "", "", "");
                model.PageList.LoadPagedList(postlist);
                model.PostList = (List<PostInfo>)postlist;
            }
            model.IsDefault = 0;


            return View(model.Category.ViewName,model);
        }

模板引擎设计

wwwlehu6.vip乐虎官网 3

wwwlehu6.vip乐虎官网 4

模板引擎选拔razor,分歧的cms风格模板以文件夹的款型存放在Themes文件夹下,通过后端设置可以轻巧切换模板(此成效还在宏观个中)。

数量存款和储蓄设计

wwwlehu6.vip乐虎官网 5

作为轻量级的cms,当然不会用mysql恐怕sqlserver,照旧坚决的应用sqlite,以上是经过dapper举办数据库操作,尽管未有微软追加的orm庞大,可是可读性和操控性都以极度好的。

wwwlehu6.vip乐虎官网 6

因为要协助linux,所以sqlite的操作类必要using Mono.Data.Sqlite;
,当然可以在windows下切换过来,上边笔者写的切换格局太野蛮了,学过设计情势的同桌应该分分钟能够重构出来,切换windows和linux几乎不要太有利。

数据库结构

wwwlehu6.vip乐虎官网 7

  • jq_category 分类及标签表
  • jq_comments 评论表
  • jq_links 友链及导航设置
  • jq_posts 文章表
  • jq_sites 站点访问总结数字及文章、分类、数量总计表
  • jq_users 账户表

数据库结构跟此前的 博客程序没差异,只是局地表结构字段有所差异

运行

vs20壹七调节和测试情势预览

cms首页
wwwlehu6.vip乐虎官网 8

wwwlehu6.vip乐虎官网,后台登入,默许用户名admin,密码12345陆
wwwlehu6.vip乐虎官网 9

后台首页
wwwlehu6.vip乐虎官网 10

文章列表
wwwlehu6.vip乐虎官网 11

小说编辑
wwwlehu6.vip乐虎官网 12

linux下的布局格局

mono

wwwlehu6.vip乐虎官网 13
上海教室为自己服务器上的mono安装音信。

jexus

linux下需要设置mono和jexus就足以运作起来,mono作为.net
framework的linux运营蒙受,jexus作为web服务器。

wwwlehu6.vip乐虎官网 14

jexus配置,因为本人的服务器上还有别的语言的站点,所以并未有一贯选择jexus对外服务。

nginx

wwwlehu6.vip乐虎官网 15

nginx代理了jexus的81端口,此地点不是必选,不过Nginx作为健康的代理软件,能够在服务器上跑.net、php、java等,各司其职,百花齐放。

bin文件夹表明

wwwlehu6.vip乐虎官网 16
.net mvc三在
linux下的配备需求留意的是急需将品种下引用的dll都急需上传到bin目录下。并且还供给上传Microsoft.web.Infrastructure.dll,这一个是公布mvc项目要求用的。能够相比较下小编webform下的Linux博客程序站点bin下一旦引进Mono和Nvelocity那3个第一方dll,其余都以和谐的事体程序,那个.net
cms要的事物还挺多,下图是自家的博客站点下的bin文件夹内容。

wwwlehu6.vip乐虎官网 17

linux服务器上的的.net 程序难点

  • jexus不帮助汉语,所以文件上传的门径必须重写成字母加数字符号形式,
  • jexus web服务器是私下认可对大小写敏感的,所以安顿的时候一定要
    只供给把 jws这几个本子文件中的 “export
    MONO_IOMAP=…”这一句后面包车型大巴“#”去掉,就足以不区分轻重缓急写了

源码获取

https://github.com/robotbird/jqpress.cms

为了以免部分同校不可能访问Github,所以放oschina的gitee上了

https://gitee.com/robotbird/jqpress.cms

后记

在支付那些cms的时候那时候.net core还没出生,作为linux下的.net
mvc项目还照旧相比流行的,只可惜没能好好的写代码,跑去做项目做产品去了,在那里开源出来怀念写代码的时光,如若对大家有用那最佳可是了。
万一对源码感兴趣可以联系qq:33029640九

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图