詳解linux下的.net/mvc/cms程序結(jié)構(gòu)
cms程序架構(gòu)
本程序是主要是用于企業(yè)網(wǎng)站開發(fā)的,也可以做博客程序,程序是從之前上一篇的.net 博客程序改進(jìn)過來的,主要技術(shù)由webform轉(zhuǎn)成.net mvc了,由于是很早之前的項(xiàng)目,12年還是mvc3版本,當(dāng)然還是跑在linux下的。
技術(shù)棧 .net framework 4.0 sqlite 數(shù)據(jù)庫 mono linux 運(yùn)行環(huán)境以及mono下的sqlite庫 razor 模板引擎 dapper 輕量級orm框架 vs2017 社區(qū)版本
這次的開發(fā)工具比較新了吧,上次用vs2010發(fā)的,跨度比較大,這個項(xiàng)目之前也是在10下開發(fā)出來的,雖然用2017,其實(shí)沒什么影響的。
razor引擎比nvelocity的易用性高很多,而且跟后端集合的比較好。
而且這次的項(xiàng)目完全使用dapper orm,整個數(shù)據(jù)庫訪問層操作看起來也清爽很多了。
代碼結(jié)構(gòu)
左側(cè)主要分為三個文件夾,Jqpress.web是存放web路由入口、模板皮膚、靜態(tài)文件,上傳文件夾,后臺管理程序通過Areas域管理來實(shí)現(xiàn)的,整個項(xiàng)目結(jié)構(gòu)還是比較清晰的。
路由設(shè)計(jì)
路由入口為HomeController這個文件,包括首頁、產(chǎn)品列表,文章列表,文章內(nèi)容等待,都是通過這個Controller來路由的,雖然功能比較多,但是代碼量不到300行,業(yè)務(wù)邏輯處理基本都在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); }
模板引擎設(shè)計(jì)
模板引擎采用razor,不同的cms風(fēng)格模板以文件夾的形式存放在Themes文件夾下,通過后端設(shè)置可以隨意切換模板(此功能還在完善當(dāng)中)。
數(shù)據(jù)存儲設(shè)計(jì)
作為輕量級的cms,當(dāng)然不會用mysql或者sqlserver,依然堅(jiān)定的使用sqlite,以上是通過dapper進(jìn)行數(shù)據(jù)庫操作,雖然沒有微軟增加的orm強(qiáng)大,但是可讀性和操控性都是非常好的。
因?yàn)橐С謑inux,所以sqlite的操作類需要using Mono.Data.Sqlite;
,當(dāng)然可以在windows下切換過來,上面我寫的切換方式太粗暴了,學(xué)過設(shè)計(jì)模式的同學(xué)應(yīng)該分分鐘能夠重構(gòu)出來,切換windows和linux簡直不要太方便。
數(shù)據(jù)庫結(jié)構(gòu)
jq_category
分類及標(biāo)簽表 jq_comments
評論表 jq_links
友鏈及導(dǎo)航設(shè)置 jq_posts
文章表 jq_sites
站點(diǎn)訪問統(tǒng)計(jì)數(shù)字及文章、分類、數(shù)量統(tǒng)計(jì)表 jq_users
賬戶表
數(shù)據(jù)庫結(jié)構(gòu)跟之前的 博客程序沒差別,只是部分表結(jié)構(gòu)字段有所差別
運(yùn)行 vs2017調(diào)試模式預(yù)覽
cms首頁
后臺登錄,默認(rèn)用戶名admin,密碼123456
后臺首頁
文章列表
文章編輯
linux下的部署方式 mono
上圖為我服務(wù)器上的mono安裝信息。
jexus
linux下需要安裝mono和jexus就可以運(yùn)行起來,mono作為.net framework的linux運(yùn)行環(huán)境,jexus作為web服務(wù)器。
jexus配置,因?yàn)槲业姆?wù)器上還有其他語言的站點(diǎn),所以沒有直接采用jexus對外服務(wù)。
nginx
nginx代理了jexus的81端口,此地方不是必選,但是Nginx作為常規(guī)的代理軟件,可以在服務(wù)器上跑.net、php、java等,各司其職,百花齊放。
bin文件夾說明
.net mvc3在 linux下的部署需要注意的是需要將項(xiàng)目下引用的dll都需要上傳到bin目錄下。并且還需要上傳Microsoft.web.Infrastructure.dll,這個是發(fā)布mvc項(xiàng)目需要用的??梢詫Ρ认挛襴ebform下的Linux博客程序站點(diǎn)bin下只要引入Mono和Nvelocity這2個第三方dll,其他都是自己的業(yè)務(wù)程序,這個.net cms要的東西還挺多,下圖是我的博客站點(diǎn)下的bin文件夾內(nèi)容。
linux服務(wù)器上的的.net 程序問題 jexus不支持中文,所以文件上傳的路徑必須重寫成字母加數(shù)字符號形式, jexus web服務(wù)器是默認(rèn)對大小寫敏感的,所以部署的時(shí)候一定要
只需要把 jws這個腳本文件中的 “export MONO_IOMAP=...”這一句前邊的“#”去掉,就可以不區(qū)分大小寫了 源碼獲取
https://github.com/robotbird/jqpress.cms
為了防止部分同學(xué)無法訪問Github,所以放oschina的gitee上了
https://gitee.com/robotbird/jqpress.cms
以上就是本次我們?yōu)榇蠹艺淼娜績?nèi)容,希望對你有所幫助,如果大家還有任何不明白的地方可以在下方的留言區(qū)討論,感謝你對腳本之家的支持。
相關(guān)文章
在Linux中查看所有正在運(yùn)行的進(jìn)程的方法
這篇文章主要介紹了在Linux中查看所有正在運(yùn)行的進(jìn)程的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07linux下通過xinetd服務(wù)管理 rsync 實(shí)現(xiàn)開機(jī)自啟動
這篇文章主要介紹了linux下通過xinetd服務(wù)管理 rsync 實(shí)現(xiàn)開機(jī)自啟動的相關(guān)資料,需要的朋友可以參考下2017-10-10apache開啟.htaccess及.htaccess的使用方法
今天本地調(diào)試PHP程序,用到了.htaccess,而默認(rèn)配置里面開啟.htaccess,在網(wǎng)上找到了開啟.htaccess的可行方法,供朋友們借鑒。2010-12-12Linux系統(tǒng)中如何將普通用戶權(quán)限提升至root權(quán)限
首先,使用普通用戶登錄并通過命令su-切換到臨時(shí)Root狀態(tài),接著,設(shè)置root用戶密碼并使用命令su切換到root用戶,編輯/etc/sudoers文件,修改必要的權(quán)限設(shè)置,并保存退出,然后,修改/etc/passwd文件中的用戶ID從1000改為0,最后,重啟Linux系統(tǒng)2024-10-10