本程序是主要是用於企業網站開發的,也能夠作博客程序,程序是從以前上一篇的.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