天天看點

.NET作品集:linux下的部落格程式

部落格程式架構

本部落格程式是部落客11年的時候參考loachs小泥鳅部落格核心開發的.net跨平台部落格cms,距今已有6年多了,個人部落格網站一直在用,雖然沒有wordpress那麼強大,但是當時在深究.net的同時,自己能寫一個部落格程式,并且基于獨立Linux伺服器搭建一個自己的.net網站還是挺有意思,畢竟當年運作在linux下的.net網站還是極少數的,之前的部署方式一直沿用至今,網站伺服器僅僅記憶體512M擴充到1G,畢竟現在的作業系統512M實在是有點少,如果是跑靜态站點還可以,動态的再多放點東西就會記憶體報警了,廢話不多說,看代碼。

技術棧

  • .net framework 4.0
  • sqlite 資料庫
  • mono linux 運作環境以及mono下的sqlite庫
  • nvelocity 模闆引擎
  • dapper 輕量級orm架構
  • vs2010

代碼結構

.NET作品集:linux下的部落格程式

左側主要分為三個檔案夾,Jqpress.web是存放web路由入口、模闆皮膚、上傳檔案以及背景管理程式,上圖default.aspx.cs代碼裡有處理301跳轉的,主要用來處理jqpress.com自動跳轉到www.jqpress上,確定對搜尋引擎處理友好,需要大家手動移除此代碼。

路由設計

.NET作品集:linux下的部落格程式

整個前台入口是從default.aspx作為路由入口跳轉到核心路由控制器BlogController,Controller根據url請求的type參數做路由處理。

模闆引擎設計

.NET作品集:linux下的部落格程式

模闆引擎采用nvelocity,是java的velocity的.net翻譯版本,現在依然活躍在java界,采用這個模闆引擎的原因是因為簡單,高效,通用,成熟。

可以看到一個模闆皮膚包含圖檔、模闆、樣式、預覽圖、配置檔案,wordpress好像也跟這差不多。

資料存儲設計

.NET作品集:linux下的部落格程式

作為輕量級的部落格程式,資料庫就沒必要用sqlserver或者mysql這樣的大塊頭了,sqlite絕對夠用了,如果是windows下的可以用access,但是sqlite真心好用,文法就是mysql的精簡版,速度非常之快,上圖是原生sqlite沒通過orm的直接寫法。

.NET作品集:linux下的部落格程式

orm更是采用stackoverflow出品的dapper,速度快,原生sql,簡單,因為要支援linux,是以sqlite的操作類需要

using Mono.Data.Sqlite;

,上圖是通過dapper的寫法,沒有密密麻麻的參數了,不過目前項目還沒有完全轉dapper,希望有感興趣的同學将此份源碼改造成更好的.net 部落格cms系統。

由于windows下和linux操作sqlite的原生方法差别比較大,如果通過dapper來操作的話還是可以實作自由切換

資料庫結構

.NET作品集:linux下的部落格程式
  • jq_category

    分類及标簽表
  • jq_comments

    評論表
  • jq_links

    友鍊及導航設定
  • jq_posts

    文章表
  • jq_sites

    站點通路統計數字及文章、分類、數量統計表
  • jq_users

    賬戶表

運作

vs2010調試模式預覽

部落格首頁

.NET作品集:linux下的部落格程式

背景登入,預設使用者名admin,密碼admin

.NET作品集:linux下的部落格程式

背景首頁

.NET作品集:linux下的部落格程式

文章編輯

.NET作品集:linux下的部落格程式

linux部署方式

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

.NET作品集:linux下的部落格程式

如上圖是我的部落格站點jexus配置,因為我的伺服器上還有其他語言的站點,是以沒有直接采用jexus對外服務,前面還套了層nginx作為代理。

.NET作品集:linux下的部落格程式

上圖為我伺服器上的mono安裝資訊。

linux伺服器上的的.net 程式問題

  • jexus不支援中文,是以檔案上傳的路徑必須重寫成字母加數字元号形式,
  • jexus web伺服器是預設對大小寫敏感的,是以部署的時候一定要

    隻需要把 jws這個腳本檔案中的 “export MONO_IOMAP=...”這一句前邊的“#”去掉,就可以不區分大小寫了

源碼擷取

https://github.com/robotbird/jqpress-aspx

為了防止部分同學無法通路Github,是以放oschina的gitee上了

https://gitee.com/robotbird/jqpress-aspx

後記

至于架構為什麼不用.net mvc ,那是因為當時隻買得起最便宜的.net 虛拟伺服器,不用單獨買伺服器一年才幾十塊錢,是以說此版本的.net 部落格程式對伺服器的要求是極低的,基本支援所有的.net 空間提供商,如果是自建服務的話,我也重新開發了一套基于mvc3的cms程式,大家可以先預覽下[bjjxysbz.com,下回分解下。

作為一個多年的.net開發人員,後又混迹java,現在成為産品狗,偶爾用用python做些日常的工作,作為一個邁入中年的老程式員,想想還是不忘初心,熱愛技術,後續也會抽出時間将自己的作品逐一搬到網上,緬懷下青春,個人的部落格站點 機器鳥,後續會将繼續在部落格園上發表技術類型的文章,回歸社群,不再獨自前行。

部落格程式還不是很完善,bug可能比較多,如果有代碼、開發、部署問題請聯系qq:330296409,或者郵箱robotbird#qq.com。

繼續閱讀