91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux下.net/mvc/cms程序結構的示例分析

發布時間:2021-07-16 14:35:40 來源:億速云 閱讀:141 作者:小新 欄目:服務器

這篇文章主要介紹linux下.net/mvc/cms程序結構的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

cms程序架構

本程序是主要是用于企業網站開發的,也可以做博客程序,程序是從之前上一篇的.net 博客程序改進過來的,主要技術由webform轉成.net mvc了,由于是很早之前的項目,12年還是mvc3版本,當然還是跑在linux下的。

技術棧 .net framework 4.0 sqlite 數據庫 mono linux 運行環境以及mono下的sqlite庫 razor 模板引擎 dapper 輕量級orm框架 vs2017 社區版本

這次的開發工具比較新了吧,上次用vs2010發的,跨度比較大,這個項目之前也是在10下開發出來的,雖然用2017,其實沒什么影響的。

razor引擎比nvelocity的易用性高很多,而且跟后端集合的比較好。

而且這次的項目完全使用dapper orm,整個數據庫訪問層操作看起來也清爽很多了。

代碼結構

linux下.net/mvc/cms程序結構的示例分析

左側主要分為三個文件夾,Jqpress.web是存放web路由入口、模板皮膚、靜態文件,上傳文件夾,后臺管理程序通過Areas域管理來實現的,整個項目結構還是比較清晰的。

路由設計

linux下.net/mvc/cms程序結構的示例分析

路由入口為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);
  }

模板引擎設計

linux下.net/mvc/cms程序結構的示例分析

linux下.net/mvc/cms程序結構的示例分析

模板引擎采用razor,不同的cms風格模板以文件夾的形式存放在Themes文件夾下,通過后端設置可以隨意切換模板(此功能還在完善當中)。

數據存儲設計

linux下.net/mvc/cms程序結構的示例分析

作為輕量級的cms,當然不會用mysql或者sqlserver,依然堅定的使用sqlite,以上是通過dapper進行數據庫操作,雖然沒有微軟增加的orm強大,但是可讀性和操控性都是非常好的。

linux下.net/mvc/cms程序結構的示例分析

因為要支持linux,所以sqlite的操作類需要using Mono.Data.Sqlite;
,當然可以在windows下切換過來,上面我寫的切換方式太粗暴了,學過設計模式的同學應該分分鐘能夠重構出來,切換windows和linux簡直不要太方便。

數據庫結構

linux下.net/mvc/cms程序結構的示例分析

jq_category 分類及標簽表 jq_comments 評論表 jq_links 友鏈及導航設置 jq_posts 文章表 jq_sites 站點訪問統計數字及文章、分類、數量統計表 jq_users 賬戶表

數據庫結構跟之前的 博客程序沒差別,只是部分表結構字段有所差別

運行 vs2017調試模式預覽

cms首頁

linux下.net/mvc/cms程序結構的示例分析

后臺登錄,默認用戶名admin,密碼123456

linux下.net/mvc/cms程序結構的示例分析

后臺首頁

linux下.net/mvc/cms程序結構的示例分析

文章列表

linux下.net/mvc/cms程序結構的示例分析

文章編輯

linux下.net/mvc/cms程序結構的示例分析

linux下的部署方式 mono

linux下.net/mvc/cms程序結構的示例分析

上圖為我服務器上的mono安裝信息。

jexus

linux下需要安裝mono和jexus就可以運行起來,mono作為.net framework的linux運行環境,jexus作為web服務器。

linux下.net/mvc/cms程序結構的示例分析

jexus配置,因為我的服務器上還有其他語言的站點,所以沒有直接采用jexus對外服務。

nginx

linux下.net/mvc/cms程序結構的示例分析

nginx代理了jexus的81端口,此地方不是必選,但是Nginx作為常規的代理軟件,可以在服務器上跑.net、php、java等,各司其職,百花齊放。

bin文件夾說明

linux下.net/mvc/cms程序結構的示例分析

.net mvc3在 linux下的部署需要注意的是需要將項目下引用的dll都需要上傳到bin目錄下。并且還需要上傳Microsoft.web.Infrastructure.dll,這個是發布mvc項目需要用的。可以對比下我webform下的Linux博客程序站點bin下只要引入Mono和Nvelocity這2個第三方dll,其他都是自己的業務程序,這個.net cms要的東西還挺多,下圖是我的博客站點下的bin文件夾內容。

linux下.net/mvc/cms程序結構的示例分析

linux服務器上的的.net 程序問題 jexus不支持中文,所以文件上傳的路徑必須重寫成字母加數字符號形式, jexus web服務器是默認對大小寫敏感的,所以部署的時候一定要把 jws這個腳本文件中的 “export MONO_IOMAP=...”這一句前邊的“#”去掉,就可以不區分大小寫了 。

以上是“linux下.net/mvc/cms程序結構的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巨野县| 班玛县| 九龙县| 陈巴尔虎旗| 新安县| 全南县| 依兰县| 临洮县| 商水县| 徐水县| 莱芜市| 博客| 竹山县| 栾城县| 淮阳县| 永川市| 洱源县| 花莲市| 屯门区| 朔州市| 闻喜县| 晋州市| 延川县| 尚义县| 页游| 岐山县| 冕宁县| 茶陵县| 宁德市| 海林市| 遵化市| 彭山县| 崇义县| 林芝县| 郎溪县| 玛沁县| 梅河口市| 油尖旺区| 石首市| 双柏县| 河北区|