最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解linux下的.net/mvc/cms程序結(jié)構(gòu)

 更新時(shí)間:2017年12月25日 08:39:32   投稿:laozhang  
本片文章給大家詳細(xì)分析了在linux下.net/mvc/cms程序詳細(xì)結(jié)構(gòu)說明,了解這個(gè)對(duì)在linux下程序開發(fā)非常有用,有興趣的參考學(xué)習(xí)下吧。

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ù)庫(kù) mono linux 運(yùn)行環(huán)境以及mono下的sqlite庫(kù) razor 模板引擎 dapper 輕量級(jí)orm框架 vs2017 社區(qū)版本

這次的開發(fā)工具比較新了吧,上次用vs2010發(fā)的,跨度比較大,這個(gè)項(xiàng)目之前也是在10下開發(fā)出來的,雖然用2017,其實(shí)沒什么影響的。

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

而且這次的項(xiàng)目完全使用dapper orm,整個(gè)數(shù)據(jù)庫(kù)訪問層操作看起來也清爽很多了。

代碼結(jié)構(gòu)

左側(cè)主要分為三個(gè)文件夾,Jqpress.web是存放web路由入口、模板皮膚、靜態(tài)文件,上傳文件夾,后臺(tái)管理程序通過Areas域管理來實(shí)現(xiàn)的,整個(gè)項(xiàng)目結(jié)構(gòu)還是比較清晰的。

路由設(shè)計(jì)

路由入口為HomeController這個(gè)文件,包括首頁(yè)、產(chǎn)品列表,文章列表,文章內(nèi)容等待,都是通過這個(gè)Controller來路由的,雖然功能比較多,但是代碼量不到300行,業(yè)務(wù)邏輯處理基本都在service層。

如下為一個(gè)列表界面的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ù)存儲(chǔ)設(shè)計(jì)

作為輕量級(jí)的cms,當(dāng)然不會(huì)用mysql或者sqlserver,依然堅(jiān)定的使用sqlite,以上是通過dapper進(jìn)行數(shù)據(jù)庫(kù)操作,雖然沒有微軟增加的orm強(qiáng)大,但是可讀性和操控性都是非常好的。

因?yàn)橐С謑inux,所以sqlite的操作類需要using Mono.Data.Sqlite;
,當(dāng)然可以在windows下切換過來,上面我寫的切換方式太粗暴了,學(xué)過設(shè)計(jì)模式的同學(xué)應(yīng)該分分鐘能夠重構(gòu)出來,切換windows和linux簡(jiǎn)直不要太方便。

數(shù)據(jù)庫(kù)結(jié)構(gòu)

jq_category 分類及標(biāo)簽表 jq_comments 評(píng)論表 jq_links 友鏈及導(dǎo)航設(shè)置 jq_posts 文章表 jq_sites 站點(diǎn)訪問統(tǒng)計(jì)數(shù)字及文章、分類、數(shù)量統(tǒng)計(jì)表 jq_users 賬戶表

數(shù)據(jù)庫(kù)結(jié)構(gòu)跟之前的 博客程序沒差別,只是部分表結(jié)構(gòu)字段有所差別

運(yùn)行 vs2017調(diào)試模式預(yù)覽

cms首頁(yè)

后臺(tái)登錄,默認(rèn)用戶名admin,密碼123456

后臺(tái)首頁(yè)

文章列表

文章編輯

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ù)器上還有其他語(yǔ)言的站點(diǎn),所以沒有直接采用jexus對(duì)外服務(wù)。

nginx

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

bin文件夾說明

.net mvc3在 linux下的部署需要注意的是需要將項(xiàng)目下引用的dll都需要上傳到bin目錄下。并且還需要上傳Microsoft.web.Infrastructure.dll,這個(gè)是發(fā)布mvc項(xiàng)目需要用的??梢詫?duì)比下我webform下的Linux博客程序站點(diǎn)bin下只要引入Mono和Nvelocity這2個(gè)第三方dll,其他都是自己的業(yè)務(wù)程序,這個(gè).net cms要的東西還挺多,下圖是我的博客站點(diǎn)下的bin文件夾內(nèi)容。

linux服務(wù)器上的的.net 程序問題 jexus不支持中文,所以文件上傳的路徑必須重寫成字母加數(shù)字符號(hào)形式, jexus web服務(wù)器是默認(rèn)對(duì)大小寫敏感的,所以部署的時(shí)候一定要

只需要把 jws這個(gè)腳本文件中的 “export MONO_IOMAP=...”這一句前邊的“#”去掉,就可以不區(qū)分大小寫了 源碼獲取

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

為了防止部分同學(xué)無法訪問Github,所以放oschina的gitee上了

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

以上就是本次我們?yōu)榇蠹艺淼娜績(jī)?nèi)容,希望對(duì)你有所幫助,如果大家還有任何不明白的地方可以在下方的留言區(qū)討論,感謝你對(duì)腳本之家的支持。

相關(guān)文章

  • Linux中接收和處理數(shù)據(jù)包方式

    Linux中接收和處理數(shù)據(jù)包方式

    這篇文章主要介紹了Linux中接收和處理數(shù)據(jù)包方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 詳解Linux CPU負(fù)載和CPU使用率

    詳解Linux CPU負(fù)載和CPU使用率

    在本篇文章里小編給各位分享了關(guān)于Linux CPU負(fù)載和CPU使用率的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們參考下。
    2019-07-07
  • linux下查看yum/rpm/dpkg某軟件是否已安裝的方法

    linux下查看yum/rpm/dpkg某軟件是否已安裝的方法

    這篇文章主要介紹了在linux下查看yum/rpm/dpkg某軟件是否已安裝的方法,文中給出了詳細(xì)的示例代碼,對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • linux下scp和sftp命令使用詳解

    linux下scp和sftp命令使用詳解

    大家好,本篇文章主要講的是linux下scp和sftp命令使用詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 基于Centos7 部署Varnish緩存代理服務(wù)器

    基于Centos7 部署Varnish緩存代理服務(wù)器

    這篇文章主要介紹了基于Centos7 部署Varnish緩存代理服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Xshell連接本地Linux虛擬機(jī)方式

    Xshell連接本地Linux虛擬機(jī)方式

    這篇文章主要介紹了Xshell連接本地Linux虛擬機(jī)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • linux安裝jdk并設(shè)置環(huán)境變量的方法教程(看這一篇夠了)

    linux安裝jdk并設(shè)置環(huán)境變量的方法教程(看這一篇夠了)

    這篇文章主要介紹了linux安裝jdk并設(shè)置環(huán)境變量的相關(guān)資料,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 詳解ubuntu 20.04 LTS安裝記錄

    詳解ubuntu 20.04 LTS安裝記錄

    這篇文章主要介紹了ubuntu 20.04 LTS安裝記錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 在Centos上搭建Maven中央倉(cāng)庫(kù)的方法

    在Centos上搭建Maven中央倉(cāng)庫(kù)的方法

    這篇文章主要介紹了在Centos上搭建Maven中央倉(cāng)庫(kù)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • CentOS7如何重置root密碼的方法

    CentOS7如何重置root密碼的方法

    這篇文章主要介紹了CentOS7如何重置root密碼的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09

最新評(píng)論

安图县| 来安县| 彰化县| 永清县| 两当县| 扎鲁特旗| 航空| 吴堡县| 乌兰浩特市| 勃利县| 五台县| 镇江市| 隆子县| 油尖旺区| 锡林浩特市| 靖远县| 新野县| 内丘县| 天镇县| 水城县| 新密市| 宝鸡市| 县级市| 通海县| 定远县| 满城县| 怀安县| 福清市| 治多县| 高碑店市| 昆山市| 五莲县| 安义县| 三台县| 高陵县| 望谟县| 南溪县| 基隆市| 金沙县| 宁波市| 桦川县|