快速业务通道

BlogEngine.Net架构与源代码分析系列part14:实现分析(下)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22

网站页面上值得参考的部分

BlogEngine.Net的成功不仅在于它的架构设计,它的代码实现细节也都是很经典的,每个结构分割的很清晰很自然,希望大家多多品位一下。在这篇文章里我将给大家介绍一下BlogEngine.Net的Web实现上的几个亮点,包括Web.config,Ajax的运用等。

Web.config中的几个结点说明

让我们看一下appSettings结点中的各个选项的含义,以便您对整个BlogEngine.Net的认识更加清晰。

BlogEngine.FileExtension:在这里我们可以自定义Url请求的后缀名称,默认是.aspx。您可以定义自己喜欢的扩展名,例如.extguo,那么对于文章等生成的Url就成了类似http://HostName/CategoryName/PostTitle.extguo的形式。这个结点的使用在很多地方都可以见到,例如:

Post类中的RelativeLink

1public string RelativeLink
2{
3 get
4 {
5 string slug = Utils.RemoveIllegalCharacters(Slug) + BlogSettings.Instance.FileExtension;
6
7 if (BlogSettings.Instance.TimeStampPostLinks)
8 return Utils.RelativeWebRoot + "post/" + DateCreated.ToString("yyyy/MM/dd/", CultureInfo.InvariantCulture) + slug;
9
10 return Utils.RelativeWebRoot + "post/" + slug;
11 }
12}

BlogSettings.Instance.FileExtension就是读取这个结点获得的扩展名。

BlogEngine.VirtualPath:主要是为一些文章等的链接而服务的。我们可以使用虚拟目录安装我们的BlogEngine.Net,那么我们只要设置一下这里就可以得到和直接在根目录下一样的效果。我们需要注意一下Utils关于Url处理的部分,其中:

Utils中的RelativeWebRoot

1public static string RelativeWebRoot
2{
3 get
4 {
5 if (_RelativeWebRoot == null)
6 _RelativeWebRoot = VirtualPathUtility.ToAbsolute(ConfigurationManager.AppSettings["BlogEngine.VirtualPath"]);
7
8 return _RelativeWebRoot;
9 }
10}

就是获得相对Web目录。

BlogEngine.MobileDevices:它的值是一个正则表达式,主要是对移动设备做出判断,并给移动设备使用设置的主题。它在这里被使用:

Utils中的IsMobile判断

1private static readonly Regex MOBILE_REGEX = new Regex(ConfigurationManager.AppSettings.Get("BlogEngine.MobileDevices"), RegexOptions.IgnoreCase | RegexOptions.Compiled);
2
3/**//// <summary>
4/// Gets a value indicating whether the client is a mobile device.
5/// </summary>
6/// <value><c>true</c> if this instance is mobile; otherwise, <c>false</c>.</value>
7public static bool IsMobile
8{
9 get
10 {
11 HttpContext context = HttpContext.Current;
12 if (context != null)
13 {
14 HttpRequest request = context.Request;
15 if (request.Browser.IsMobileDevice)
16 return true;
17
18 if (!string.IsNullOrEmpty(request.UserAgent) && MOBILE_REGEX.IsMatch(request.UserAgent))
19 return true;
20 }
21
22 return false;
23 }
24}

之后在BlogSetting的Theme中返回。

BlogEngine.AdminRole:管理员角色名,可以动态配置管理员角色,也就是说系统对是否是管理员的判断中的管理员名称实际上是从这儿获得的。比如有一天我们想把某个角色改为管理员,那么就直接修改这儿就行了,不过这儿需要的数据肯定也是角色管理中的一个角色名称。

StorageLocation:数据的存储位置

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号