3月份DsJian 2.1beta会正式和大家见面

5 Comments

经过了很长一段时间,DsJian2.1终于接近尾声了(特别说明,中途重构了一次,因此版本 +0.1 )。

这个版本是全新开发的版本,除了基本架构保留1.0的之外,其他几乎所有东西都重构了。期间认真学习并参考了WordPress的设计理念,受其影响,以至于后台管理布局也有很多雷同之处。并吸取到一条教训:以后若要做产品,记住,先自己想,不要一开始就去看一些优秀的产品,否则你的设计思路会不知不觉的跟着这些优秀的产品走,且一发不可收拾, :(

更多信息,可以点这里看看

简单列一下features:

  • 基本博客功能(文章、页面、链接、评论等)
  • trackback 发送
  • 内置邮件发送
  • 自定义文章伪静态地址
  • 附带数据缓存,提高访问速度
  • SEO相关(sitemap、rebots等)
  • 文章、评论 Rss 等
  • 支持完全自定义主题
  • 多作者撰写支持
  • 数据导入与导出
  • 便捷安装
  • IIS6与IIS7经典模式支持
  • Gravatar 身份认证
  • 多种数据库支持(Sqllite, MySql, MSSql, Access等)

show 一些截图:

管理后台

分类管理

分类管理

前台 inove

前台仍然保留 iNove 这套主题,后面可以自己做一套默认主题

VN:F [1.8.3_1051]
Rating: 1.5/5 (2 votes cast)

利用MVC UserControl实现博客自定义主题

No Comments

前面谈到完成DsJian2.0的前端开发,其中有一点,使用ASP.NET MVC View UserControl来做博客模板,对于这一点,我自己也感觉有些别扭,今天在这里单独谈一下,这到底是怎么个情况。

背景

根据我对ASP.NET MVC的了解,项目中所有的ViewPage都必须放在Views文件夹内,Views文件夹内的每一个子文件夹对应一个Controller。不得不说这样的设计有一定的局限性,因此ASP.NET MVC 2.0才有Area这样的概念融入其中。

谈到局限性,具体表现在当我需要创建主题文件夹的时候,应该怎么弄呢?我想要的效果是这样的:Views > themes > default > All View Pages,在themes这个目录下,允许有若干个子文件夹,每个子文件夹就是一个主题包。主题包里面包含系统所需的所有View Pages,当然,共用的页面及用户控件除外。

也许由于对ASP.NET MVC的了解不够深入,存在有别的解决办法,只是我没找到而已。

解决思路

于是我就在想应该如何实现“自定义主题”,了解到View User Control(下称UC)可以放在任何目录里,只要在Render时指定好路径即可。因此我开始尝试用UC来做主题文件。

由于采用UC做模板文件,因此我的View文件就只有这样一句话:

<% Html.RenderPartial(this.CreateEngine().GetThemeVirtualPathWithPartial(“ListByCategory.ascx”)); %>

CreateEngine 是我在 ViewPage 上增加的扩展方法,即返回所谓的博客引擎(Engine),通过这个博客引擎可以完成所有博客业务数据的提取,甚至包括生成部分简单的HTML代码。

通过这样一段代码“this.CreateEngine().GetThemeVirtualPathWithPartial(“ListByCategory.ascx”)”,我可以得到当前系统指定的主题文件夹下的ListByCategory.ascx这个主题文件。

这样的话,我所有的View文件不包含任何实质性的HTML标记,所有的HTML标记应该由主题制作人员完成。我只需要在引擎上提供足够用的数据接口供制作主题时调用。

于是,我的目录结构变成如下这种形式:

Views > View Folder > View Pages

Themes > Theme Folder > All Theme Files(CSS、脚本、图片、图标、主题文件:UCs)

如果,某某人有兴趣自己开发一套模板,他只需要遵循我的规范,做一个主题包,然后放在网站的 Themes 文件夹下,就可以在后台配置使用这个新主题。类似于wordpress,我想用过wp的朋友都理解。

存在的问题

本文开始我就说了,这样的设计还是感觉有些别扭。ASP.NET一些比较好的特性好像就不能使用了,比如Master Page。我自己在尝试开发主题包时就想使用Master Page,因为这样会方便许多,但是用不了(UC 无法使用 Master Page)。

大量使用UC会不会有其他问题,比如执行效率上,目前还不得而知。所以,如果有其他更好的形式,我想我会考虑考虑,只是到目前为止还没有想到更好的办法。

VN:F [1.8.3_1051]
Rating: 2.5/5 (2 votes cast)

完成DsJian2.0前端开发

3 Comments

完成博客程序前端的开发工作,今天在这里留个笔。到目前为止,已完成如下功能:

  • 博客安装(包括数据库、系统初始化等)
  • Smtp邮件发送与配置
  • 基本博客功能(文章、页面、评论、链接、分类、存档、Tag等)
  • 自定义主题功能
  • 数据引擎API搭建(前端模板数据获取与交互)
  • 自定义文章URL
  • 多数据库架构支持
  • Rebots、Sitemap生成
  • Rss、Atom(文章、评论等)
  • Trackback接受与发送
  • Scheduled Tasks(类似于Background Services,为以后的插件功能做准备)
  • Gravatar 头像应用

其他不想多说,感觉最近自己忙麻木了,因此写不出什么东西出来。对于以上Features中的一点:自定义主题,我现在还对我的设计持怀疑态度,感觉使用Mvc UserControl来做模板页面有些别扭,但到现在为止还没想好替代方案。希望能得到网络上的朋友们的帮助。

贴一下博客项目结构:

dsjian.com:2.0架构

VN:F [1.8.3_1051]
Rating: 5.0/5 (1 vote cast)

最近比较忙

No Comments

最近比较忙,无论是工作,还是学习。

公司嘛,比较难说,打一个不太合适的比喻,就像盘古开天辟地之前的混沌,如果一刀劈开了,就从此海阔天空,前景光明了;如果一刀没劈开,就有点尴尬了。所以基本上是甩开膀子干,自然就忙了一点。

学习上,还在继续DsJian 2.0的开发,就工作之外抽时间做一点是一点。一方面自己在摸索,一方面自己也在借鉴目前比较完善的博客程序,比如正在使用的wordpress .2.8.5。

说实话,我有时候觉得自己挺没信心的,也反复问过自己,为什么就这样卯足了劲开发这套程序呢?你的目的是什么?有这么方面的需求吗?需求有多大?

我也回答不上,只是偶尔骨子里有股很强烈的欲望,好像自己又回到了学生时代,为了开发某个小东西,脑子里整天想着应该如何做?怎么做更好?某个问题怎么解决?纯粹的兴趣。

最近甚至开始觉得头皮有点发疼,老婆好心告诉我是没休息好,其实她不说我也明白,的确连续好几天睡不好觉了。于是今天早晨开始起来跑步,我想跑累了,晚上就能睡着了。实践证明,体罚是一种比较有效的治疗失眠的方法。

最后,适当休整一下,给自己放个假,回家啥也不做,找部连续剧看,听说《蜗居》挺有争议的,就这个吧。

VN:F [1.8.3_1051]
Rating: 0.0/5 (0 votes cast)

有必要说明一下DsJian博客引擎

No Comments

好久没上来添加新内容,一方面工作上的事情比较忙,另一方面工作之余也开始了2.0版本博客程序的开发,今天抽时间上来对2.0版本博客程序写一些说明。

上一篇文章这样写出来实在不好意思,就那么几句话,第一次看到这篇文章的朋友肯定会云里雾里,看不懂。所以今天在这里首先谈谈我所说的“博客引擎”是什么意思:

相信了解ASP.NET MVC的朋友都知道,她给了我们一个很好的模式,将View与Model分开,这样有一个好处,在你的团队中,可以根据员工的技术特长再次细分出不同的职能团队,比如细分为“数据库小组”、“业务逻辑小组”、“前端开发小组”等。

上一个版本(我说的DsJian1.0)中,我采用面向接口的开发模式,可以在约束好接口后,各个职能团队根据接口规范自己做自己的事情,最后再将整个系统整合起来,这样可以进一步的提高开发效率,易于测试……打住,这个话题说下去可没完没了。

回到正题,我之所以继续做这套博客程序,其实是为了解决一个问题:想给自己建博客网站的人不一定都是懂技术的人。如果你的程序太过技术化,可能会影响一般用户的使用。

于是自己就在琢磨,既然Mvc能很好的将展现与业务分开,那么是不是应该发挥一下这个特点,我来充当业务模型开发人员这个角色,让博客使用者来充当前端开发人员的角色?也就是说,我发布的博客程序可以没有任何View,所有的View都由博客使用者来创建,当然前提是我要提供非常易于使用的数据接口(这才是重中之重)。

我提供所有数据存储、业务接口、安装、后台等,因此实际上我所说的“博客引擎”就是一个套博客平台。使用者不用关心平台内部是如何实现的,只需根据自己的需要创建主题就行了。

当然,要完成这样的平台是需要花很多心思的,会遇到很多问题,也不简单,但我想我还可以坚持。简单理了一下DsJian2.0 Features,关于博客的开发状态,可以在这里查看

VN:F [1.8.3_1051]
Rating: 0.0/5 (0 votes cast)

关于我的开源博客的配置说明

1 Comment

不小心把“ASP.NET MVC开源博客”放到了博客园,当初放出来也是不想让自己前段时间的心血白费,想提供给需要的朋友参考、学习,就匆忙的放到了codeplex上,也没详细写上配置说明等,所以抱歉。今天在这里写一些博客的安装、配置说明。

1、数据库

codeplex 上,需要下载两个包,一个是程序源码,一个是我所使用的ORM组件,大家可以在我的 codeplex上找找。

把程序源代码包下载下来后,解压后的根目录有一个文件:DsJian.sql,在SqlServer 2005中建立好数据库后执行一下文件中的SQL语句。

另外,里面有一个User表,有一点我没考虑全,我的后台用户密码是加密的,加密方式在程序里面有,如果需要快速使用后台,在User表里插入这条记录:UserName : dsjian     passowrd : okV4p2MWePg=  (解密后: 123456)

数据库链接地址在Web.Config中配置,仔细找,你会发现在哪里配置的。

2、源代码

源代码有好几个项目,我在这里简单介绍一下,后面有时间可以详细写点文章。

  • DsJian:这个项目是基础框架,里面放了一写我使用到的方法
  • DsJian.Interface:这是接口组件,里面包含数据库实体、数据库方位、服务层访问的所有接口
  • DsJian.Mvc:项目的Mvc层,依赖ASP.NET MVC 1.0,这需要你本地装一下ASP.NET MVC 1.0
  • DsJian.MySoft.DataProvider:这是我的数据库访问层,依赖MySoft.Data,在我的Codeplex上可以找到
  • DsJian.Services:服务层组件,所有的数据访问接口以及业务逻辑都在这里
  • DsJian.Web:前端展现层,同样依赖于ASP.NET MVC 1.0

大体思路是这样的,我写了一个通用的接口层。里面包含数据库访问以及部分业务逻辑服务接口,Mvc层和Web层通过Services层完成数据访问以及业务逻辑。

从耦合的角度来看,Web 只和 Mvc 层有直接的依赖关系,所有的业务都通过 Interface 来实现。而如何获得接口的实例,我实现了一个简单的IOC容器,放在基础框架中。

接口 与 实例的绑定在Web.Config中完成,可以看看配置文件中的:ObjectContainer 配置节。

3、基本使用

需要安装ASP.NET MVC 1.0,后台路径是:/ds_admin,输入用户名密码即可

VN:F [1.8.3_1051]
Rating: 3.7/5 (3 votes cast)

ASP.NET MVC 开源博客

2 Comments

前段时间学习ASP.NET MVC的一个小小成果。能支持搭建个人博客,具体细节如下:

1、多层架构
以面向接口的开发模式,将前端页面、服务层、数据库层完全解耦。为什么要这样做,我想既然用MVC模式来搭建系统,目的就是构建低耦合的应用程序,就因充分发挥其系统结构清晰、高可测试性、高效率开发的特点。

2、ORM使用MySoft.Data
选择一个好的ORM工具,可以大大的提高开发效率。在这个项目中,我选择了MySoft.Data,为什么选择这个ORM框架,有兴趣的可以看看之前我写的文章。对于数据库层,使用了经典的Repository模式,这样可以使你可以方便的替换ORM框架,你可以很方便的重新构建一个数据访问层。只要你遵守我的IRepository接口规范,就可以通过WebConfig配置的方式替换数据访问层。

3、DsJian.OC — 简易的IOC容器
根据我对IOC的理解,实现了一个自认为简易的IOC容器(但不知道真正意义上的IOC具体是什么样子,也没有深入的研究)。实现IOC容器的目的也就是为了将数据访问层、服务层、Web层中的对象管理起来,实现依赖注入,最终目的也是构建低耦合的应用程序。

4、脚本框架用JQeury
这也是ASP.NET MVC推荐的脚本框架,个人认为JQuery也是不错的,轻量级但功能强大的脚本框架。

有兴趣的朋友,可以在这里下载源码:
http://dsjian.codeplex.com

特别提醒,UI我套用了wordpress的 iNove 主题。
演示:http://demo.dsjian.com/

代码配置说明,看这里

VN:F [1.8.3_1051]
Rating: 4.7/5 (3 votes cast)