二 07
Ben产品设计, 技术相关 ASP.NET MVC, DsJian2.0, Wordpress, 开源博客
经过了很长一段时间,DsJian2.1终于接近尾声了(特别说明,中途重构了一次,因此版本 +0.1 )。
这个版本是全新开发的版本,除了基本架构保留1.0的之外,其他几乎所有东西都重构了。期间认真学习并参考了WordPress的设计理念,受其影响,以至于后台管理布局也有很多雷同之处。并吸取到一条教训:以后若要做产品,记住,先自己想,不要一开始就去看一些优秀的产品,否则你的设计思路会不知不觉的跟着这些优秀的产品走,且一发不可收拾,
更多信息,可以点这里看看
简单列一下features:
- 基本博客功能(文章、页面、链接、评论等)
- trackback 发送
- 内置邮件发送
- 自定义文章伪静态地址
- 附带数据缓存,提高访问速度
- SEO相关(sitemap、rebots等)
- 文章、评论 Rss 等
- 支持完全自定义主题
- 多作者撰写支持
- 数据导入与导出
- 便捷安装
- IIS6与IIS7经典模式支持
- Gravatar 身份认证
- 多种数据库支持(Sqllite, MySql, MSSql, Access等)
- …
show 一些截图:

管理后台

分类管理

前台仍然保留 iNove 这套主题,后面可以自己做一套默认主题
VN:F [1.8.3_1051]
Rating: 1.5/5 (2 votes cast)
十二 12
Ben产品设计, 技术相关 ASP.NET MVC, DsJian2.0, 博客引擎, 开源博客, 自定义主题
前面谈到完成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)
十一 11
Ben技术相关 ASP.NET MVC, IOC, MySoft.Data, 开源博客
不小心把“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)
十 26
Ben技术相关 ASP.NET MVC, IOC, 低耦合, 开源博客
前段时间学习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)
最近评论