.NET做品集:linux下的博客程序

博客程序架构

本博客程序是博主11年的时候参考loachs小泥鳅博客内核开发的.net跨平台博客cms,距今已有6年多了,我的博客网站一直在用,虽然没有wordpress那么强大,可是当时在深究.net的同时,本身能写一个博客程序,而且基于独立Linux服务器搭建一个本身的.net网站仍是挺有意思,毕竟当年运行在linux下的.net网站仍是极少数的,以前的部署方式一直沿用至今,网站服务器仅仅内存512M扩充到1G,毕竟如今的操做系统512M实在是有点少,若是是跑静态站点还能够,动态的再多放点东西就会内存报警了,废话很少说,看代码。java

技术栈

  • .net framework 4.0
  • sqlite 数据库
  • mono linux 运行环境以及mono下的sqlite库
  • nvelocity 模板引擎
  • dapper 轻量级orm框架
  • vs2010

代码结构

代码结构

左侧主要分为三个文件夹,Jqpress.web是存放web路由入口、模板皮肤、上传文件以及后台管理程序,上图default.aspx.cs代码里有处理301跳转的,主要用来处理jqpress.com自动跳转到www.jqpress上,确保对搜索引擎处理友好,须要你们手动移除此代码。python

路由设计

路由设计
整个前台入口是从default.aspx做为路由入口跳转到核心路由控制器BlogController,Controller根据url请求的type参数作路由处理。mysql

模板引擎设计

模板引擎

模板引擎采用nvelocity,是java的velocity的.net翻译版本,如今依然活跃在java界,采用这个模板引擎的缘由是由于简单,高效,通用,成熟。linux

能够看到一个模板皮肤包含图片、模板、样式、预览图、配置文件,wordpress好像也跟这差很少。nginx

数据存储设计

数据访问层

做为轻量级的博客程序,数据库就不必用sqlserver或者mysql这样的大块头了,sqlite绝对够用了,若是是windows下的能够用access,可是sqlite真心好用,语法就是mysql的精简版,速度很是之快,上图是原生sqlite没经过orm的直接写法。git

dapper

orm更是采用stackoverflow出品的dapper,速度快,原生sql,简单,由于要支持linux,因此sqlite的操做类须要using Mono.Data.Sqlite; ,上图是经过dapper的写法,没有密密麻麻的参数了,不过当前项目尚未彻底转dapper,但愿有感兴趣的同窗将此份源码改形成更好的.net 博客cms系统。程序员

因为windows下和linux操做sqlite的原生方法差异比较大,若是经过dapper来操做的话仍是能够实现自由切换github

数据库结构

数据库

  • jq_category 分类及标签表
  • jq_comments 评论表
  • jq_links 友链及导航设置
  • jq_posts 文章表
  • jq_sites 站点访问统计数字及文章、分类、数量统计表
  • jq_users 帐户表

运行

vs2010调试模式预览

博客首页
首页web

后台登陆,默认用户名admin,密码admin
登陆sql

后台首页
管理后台首页

文章编辑
文章编辑

linux部署方式

linux下须要安装mono和jexus就能够运行起来,mono做为.net framework的linux运行环境,jexus做为web服务器。

jexus
如上图是个人博客站点jexus配置,由于个人服务器上还有其余语言的站点,因此没有直接采用jexus对外服务,前面还套了层nginx做为代理。

mono
上图为我服务器上的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。

相关文章
相关标签/搜索