分享两套MVC3开源程序:YQBlog个人博客系统以及YQCMS通用建站系统

简介: 开发环境: Visual Studio 2010(MVC3+EF4.0) + SQL2005 运行环境: .net framework 4.0 + SQL2005 预览 源码下载 1.为什么有两套程序? YQBlog之前已经发布了两个版本,现在是1.2版本,YQCMS则是首次发布的1.0版本。

开发环境: Visual Studio 2010(MVC3+EF4.0) + SQL2005
运行环境: .net framework 4.0 + SQL2005

预览 源码下载

1.为什么有两套程序?
YQBlog之前已经发布了两个版本,现在是1.2版本,YQCMS则是首次发布的1.0版本。
目前很多流行的博客程序,除了用作博客网站外,很多人还会把它进行改造来做企业站。虽然实质上都是内容管理,但基于业务的偏差还是会有不少程序上的需求差异。企业站的需求千差万别,如果我们想要去适用这些需求,则会导致程序的不断增长而变得庞大。如果仅仅作为一个博客程序来说话,这显然是不恰当的,所以就有的这样的分离。

YQBlog更专注于个人博客系统的需求。
YQCMS更注重网站程序的通用性,以期最大化的适应更多类型网站的需求。

2.程序架构简述

网站-->types-->categories-->articles
                                           articledetail(seo信息)
                                           extend(扩展信息)

这两套程序在数据库建模部分比较大的特点就是没有根据业务功能的差异去建表,比如,这里没有专门的留言表,评论表,论坛帖子表,相册表,文章表等。只有ariticle表以及articledetail表(seo信息)。YQCMS多一个extend表(扩展信息)。好比我们硬盘上不管你是放的苍井空还是东方时空都是表现为0和1.这里数据库里的数据表存的也就只是看起来差不多的数据。这些数据通过categories得以区分,表示它属于哪个分类,categories在前台界面的表现相当于网站导航,categories信息以json格式保存在js文件里,categories再通过types予以区分,表示它是属于论坛,相册,文章还是留言板,进而对数据进行差异的处理以及呈现,从而构成了我们整个网站。
types部分是硬编码在程序里的。可以理解为程序提供了哪些功能模块,比如YQBlog提供了文章,单页,相册,留言板,首页自定义区域,全网自定义区域这几个功能模块。YQCMS在其基础上还增加了论坛模块。基本上这些就是你利用目前的程序能做的事。

扩展新的功能模块:假如我们还需要扩展商城,微博,问答等模块。则只需要再增加一个对应的type,同时编写对应的业务逻辑代码。如果需求没有大的差异的话,基本上在article,categories部分的程序是通用的,我们只需要重点处理界面层即可。

总的来说,目前的程序架构很好的保证了功能模块可扩展性以及程序代码的通用性。
对于使用者来说,你可以把网站做的很简单,比如我只做一个日记本,那么仅仅创建一个文章类型的分类就好了,也可以很复杂,这完全取决于你在后台创建的分类模块的多少以及你的前台表现层视图。

3.多语言与模板切换

MVC在这两方面提供了很好的解决方案。
拿到源码后,打开会发现除了注释就再不到一个中文字,是的,我们把所有的文字描述都集中在了Resource资源项目中。如图。


3个文件分别表示英文,中文,繁体,上图是根据程序模块以不同文件夹归类,如果需要扩展其它语言,对应新增其语言文件就好了。基本上就是简单的复制粘贴工作。

模板切换
MVC中的模板切换实质是即时的改变视图引擎路径。实现很简单:

复制代码
 ViewEngines.Engines.Clear();
    ViewEngines.Engines.Add(new BlogViewEngine(theme)); ///  /// 自定义视图路径 ///  public class BlogViewEngine  : RazorViewEngine
    { public BlogViewEngine(string key)
        { string path = string.IsNullOrWhiteSpace(key)||key=="default" ? "~/Views" : "~/Themes/" + key;

            ViewLocationFormats = new[] {
                path+"/{1}/{0}.cshtml",
                path+"/{1}/{0}.vbhtml",
                path+"/Shared/{0}.cshtml",
                path+"/Shared/{0}.vbhtml" };

            PartialViewLocationFormats = ViewLocationFormats;
        }
    }
复制代码


MVC的Razor视图引擎个人觉得相比其它流行程序的模板制作来得更加直观,容易且得心应手。Razor语法也很简单,稍微会一些就可以轻松驾驭模板定制了,不懂后台编程的人,它就相当于一个html页,你可以完全把它当做html页来操作。懂后台编程的,你也可以在其中写c#程序,非常灵活。

打开http://www.yqhome.net/,右上角分别是语言以及模板的切换链接,实现即时交替切换,你可以发现这是很灵活的。模板切换也并不只是换了一个css显示样式,而是更换了整个表现层视图路径,就是说,你可以在多个完全不同的视图之间实现切换,使得看起来他们是完全不同的网站。

目前提供了3种语言2个模板,相当于2*3=6个不同样式网站。假如后期我又扩展到了6个不同语言以及10个模板风格。那我就有了60个不同的网站了:)


YQBLOG默认模板以及多语言设置


YQCMS默认模板以及多语言设置

YQCMS不同的语言可以设定不同的模板,这样可以让你的网站在不同语言切换时候呈现出完全不同的表现风格。

多语言网站内容独立:除了不同语言界面的差异外,这个设置可以使得你的不同语言的网站内容也完全独立。你可以根据你的需求来予以设置或者变更。

如何操作不同语言下的数据? 切换到不同的语言,即可对当前语言的下的数据进行操作。非常方便。

4.静态化
静态化在后台的相关设置:


是否启用静态url:前台文章页面可以在动态与静态url之间实时切换。不启用的时候则表现为其动态url.
比如:
http://www.yqhome.net/archive/671
http://www.yqhome.net/static/2012/09/671.html
他们是同一个页面,前者是动态路径,后者是已经生成为html页面的静态路径。

这里也许你会有一个问题,静态化与多语言多模板之间的关系。前面说到假如你6个不同语言以及10个模板风格。那就相当于是60个不同的网站,静态化的时候也是一个页面生成60个版本的html页吗?

这里的处理是页面会依据你设置的默认模板,默认语言,以及勾选的多语言项来进行生成。6个不同语言以及10个模板风格,则会生成6个不同语言的静态页。

也就是,一个文章页会基于你的“默认模板”,生成你“勾选的多语言项”个数的不同语言静态页面,其中除默认语言外的其它语言静态页都会加入其语言关键字路径。如:
http://www.yqhome.net/static/en-us/2012/09/671.html
http://www.yqhome.net/static/zh-tw/2012/09/671.html

当切换到非默认模板的其它模板时候,页面会以动态url来呈现。

如果你中途更换默认模板或者默认语言,同时又需要启用静态url。那么你需要把之前的静态页再重新整体生成。

是否生成文章html页 :如果 是否启用静态url 是 yes,这里也必须是yes.

静态化目录(可用{year}{month}{day}表示当前年,月,日):
这个格式是约定好了的,然后你可以自定义路径名称以及层级。


页面批量生成:

5.扩展字段


YQCMS中加入了扩展字段功能,综合了很多方案,最后还是采用了最简单直接的预留字段的方法。原理很简单,新增一个extend表10个字段,用来应对可能的差异化需求。这个部分处理的重点主要在于后台相关功能的界面处理,让它对于用户来说会“很好用”。

在“网站-->types-->categories-->articles”结构层级下
扩展是表现于articles部分的扩展,但扩展的设置可以分别定义在types或者categories上,这里会遵循一个覆盖以及继承的关系。就是说你可以整体定义文章类型所需的扩展字段,同时也可以在下面某个具体分类下定义扩展。规则就是:下级没有时会继承,有的话则采用自身的定义。

6.提交到YQHome.net
如果你的网站上线了,可以通过后台首页的这个功能把你的网站信息提交到YQHome.net。分享的同时也提高网站的点击率。
这个过程原理上就是生成一个site.htm静态页,提交过程就是访问一下www.yqhome.net的指定页面,该页会负责采集你的site.htm数据予以入库。这里是生成一条"案例"文章记录以及在论坛"案例展示"的帖子下追加一条回帖。

eg:http://www.yqhome.net/forum/thread/664#f_1

 

目录
相关文章
|
6月前
|
前端开发 Java 开发者
Spring MVC:构建高效、可维护、可扩展的Web应用程序
Spring MVC:构建高效、可维护、可扩展的Web应用程序
51 0
|
6月前
|
前端开发 安全 Java
SpringMVC基础篇:第一个MVC程序和细节分析
SpringMVC基础篇:第一个MVC程序和细节分析
|
4月前
|
设计模式 前端开发 数据库
深入理解MVC设计模式:构建高效Web应用程序的基石
【7月更文挑战第4天】在软件工程领域,设计模式是解决常见问题的一系列经过验证的方法。其中,Model-View-Controller(MVC)设计模式自诞生以来,便成为了构建用户界面,特别是Web应用程序的黄金标准。MVC通过将应用程序逻辑分离为三个核心组件,提高了代码的可维护性、可扩展性和重用性。本文将深入探讨MVC设计模式的原理,并通过一个简单的代码示例展示其应用。
143 0
|
6月前
|
存储 JSON 前端开发
利用Spring MVC开发程序2
利用Spring MVC开发程序
47 1
|
6月前
|
设计模式 JSON 前端开发
利用Spring MVC开发程序1
利用Spring MVC开发程序
55 0
|
12月前
|
设计模式 存储 前端开发
介绍Spring MVC框架,以及如何使用它构建Web应用程序。
Spring MVC 是一个用于构建 Java Web 应用程序的强大框架。它基于经典的 MVC(Model-View-Controller)设计模式,提供了一种结构化的方法来开发可维护和可扩展的 Web 应用程序。在这篇文章中,我们将深入介绍 Spring MVC 框架,包括其核心概念、工作原理以及如何使用它构建 Web 应用程序。
152 0
|
6月前
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
48 0
|
12月前
|
存储 前端开发 Java
Java Web框架,如Spring MVC,是一种用于构建Web应用程序的软件框架:学生考试Web应用程序
Java Web框架,如Spring MVC,是一种用于构建Web应用程序的软件框架。它们提供了一种结构化的方法,用于处理Web请求、生成动态内容和管理Web应用程序的组件。以下是关于Java Web框架和Spring MVC的详细解释,以及如何使用Spring MVC创建一个简单的Web应用程序的示例代码。
122 0
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
83 0
|
前端开发 Java 应用服务中间件
《Spring MVC》 第二章 让程序run起来(下)
《Spring MVC》 第二章 让程序run起来(下)
82 0