• .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

    代码结构

    代码结构

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

    路由设计

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

    模板引擎设计

    模板引擎

    模板引擎采用nvelocity,是java的velocity的.net翻译版本,现在依然活跃在java界,采用这个模板引擎的原因是因为简单,高效,通用,成熟。

    可以看到一个模板皮肤包含图片、模板、样式、预览图、配置文件,wordpress好像也跟这差不多。

    数据存储设计

    数据访问层

    作为轻量级的博客程序,数据库就没必要用sqlserver或者mysql这样的大块头了,sqlite绝对够用了,如果是windows下的可以用access,但是sqlite真心好用,语法就是mysql的精简版,速度非常之快,上图是原生sqlite没通过orm的直接写法。

    dapper

    orm更是采用stackoverflow出品的dapper,速度快,原生sql,简单,因为要支持linux,所以sqlite的操作类需要using Mono.Data.Sqlite; ,上图是通过dapper的写法,没有密密麻麻的参数了,不过当前项目还没有完全转dapper,希望有感兴趣的同学将此份源码改造成更好的.net 博客cms系统。

    由于windows下和linux操作sqlite的原生方法差别比较大,如果通过dapper来操作的话还是可以实现自由切换

    数据库结构

    数据库

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

    运行

    vs2010调试模式预览

    博客首页
    首页

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

    后台首页
    管理后台首页

    文章编辑
    文章编辑

    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。

  • 相关阅读:
    红帽考试学习第六记
    红帽考试学习第五记
    红帽考试学习第四记
    红帽考试学习第三记
    C++ 学习笔记之---类和动态内存分配
    C++ 学习笔记之---类的自动转换
    C++ 学习笔记之---对象和类
    指针与引用的区别
    年轻人,往哪里走?
    最近感兴趣的东西
  • 原文地址:https://www.cnblogs.com/jqbird/p/7965995.html
Copyright © 2020-2023  润新知