本程序是主要是用于企业网站开发的,也能够作博客程序,程序是从以前上一篇的.net 博客程序改进过来的,主要技术由webform转成.net mvc了,因为是很早以前的项目,12年仍是mvc3版本,固然仍是跑在linux下的。php
此次的开发工具比较新了吧,上次用vs2010发的,跨度比较大,这个项目以前也是在10下开发出来的,虽然用2017,其实没什么影响的。java
razor引擎比nvelocity的易用性高不少,并且跟后端集合的比较好。mysql
并且此次的项目彻底使用dapper orm,整个数据库访问层操做看起来也清爽不少了。linux
左侧主要分为三个文件夹,Jqpress.web是存放web路由入口、模板皮肤、静态文件,上传文件夹,后台管理程序经过Areas域管理来实现的,整个项目结构仍是比较清晰的。nginx
路由入口为HomeController这个文件,包括首页、产品列表,文章列表,文章内容等待,都是经过这个Controller来路由的,虽然功能比较多,可是代码量不到300行,业务逻辑处理基本都在service层。git
以下为一个列表界面的Action逻辑才20几行github
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); }
模板引擎采用razor,不一样的cms风格模板以文件夹的形式存放在Themes文件夹下,经过后端设置能够随意切换模板(此功能还在完善当中)。web
做为轻量级的cms,固然不会用mysql或者sqlserver,依然坚决的使用sqlite,以上是经过dapper进行数据库操做,虽然没有微软增长的orm强大,可是可读性和操控性都是很是好的。sql
由于要支持linux,因此sqlite的操做类须要using Mono.Data.Sqlite;
,固然能够在windows下切换过来,上面我写的切换方式太粗暴了,学过设计模式的同窗应该分分钟可以重构出来,切换windows和linux简直不要太方便。数据库
jq_category
分类及标签表jq_comments
评论表jq_links
友链及导航设置jq_posts
文章表jq_sites
站点访问统计数字及文章、分类、数量统计表jq_users
帐户表数据库结构跟以前的 博客程序没差异,只是部分表结构字段有所差异
cms首页
后台登陆,默认用户名admin,密码123456
后台首页
文章列表
文章编辑
上图为我服务器上的mono安装信息。
linux下须要安装mono和jexus就能够运行起来,mono做为.net framework的linux运行环境,jexus做为web服务器。
jexus配置,由于个人服务器上还有其余语言的站点,因此没有直接采用jexus对外服务。
nginx代理了jexus的81端口,此地方不是必选,可是Nginx做为常规的代理软件,能够在服务器上跑.net、php、java等,各司其职,百花齐放。
.net mvc3在 linux下的部署须要注意的是须要将项目下引用的dll都须要上传到bin目录下。而且还须要上传Microsoft.web.Infrastructure.dll,这个是发布mvc项目须要用的。能够对比下我webform下的Linux博客程序站点bin下只要引入Mono和Nvelocity这2个第三方dll,其余都是本身的业务程序,这个.net cms要的东西还挺多,下图是个人博客站点下的bin文件夹内容。
https://github.com/robotbird/jqpress.cms
为了防止部分同窗没法访问Github,因此放oschina的gitee上了
https://gitee.com/robotbird/jqpress.cms
在开发这个cms的时候那时候.net core还没诞生,做为linux下的.net mvc项目还仍是比较新颖的,只惋惜没能好好的写代码,跑去作项目作产品去了,在这里开源出来缅怀写代码的岁月,若是对你们有用那最好不过了。 若是对源码感兴趣能够联系qq:330296409