快速业务通道

BlogEngine.Net架构与源代码分析系列part8:扩展

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

XMLDocumentBehavior主要是为了配置WidgetZone而设计的,它实际上是一个Widget的集合的配置,在页面加载时会读取这些配置来决定怎样显示相应的Widget。

除此之外还需要我们注意的一个地方就是配置对象在XML和数据库的存储表示,实际上它们内部的信息都是一段XML,相应的对于这两种的数据访问的结果处理也是不一致的(我觉得这个地方设计的不是很好,因为这一层似乎对于Provider有些依赖关系代码,参见XMLDocumentBehavior.cs,不过还好毕竟是实现依赖于实现嘛,可能也没想出更好的办法)。

客户端的使用

Extension(App_Code\ExtensionManager\Manager.cs):

1/**//// <summary>
2/// Method to change extension status
3/// </summary>
4/// <param name="extension">Extensio Name</param>
5/// <param name="enabled">If true, enables extension</param>
6public static void ChangeStatus(string extension, bool enabled)
7{
8 foreach (ManagedExtension x in _extensions)
9 {
10 if (x.Name == extension)
11 {
12 x.Enabled = enabled;
13 BlogEngine.Core.DataStore.ExtensionSettings xs = new BlogEngine.Core.DataStore.ExtensionSettings(x.Name);
14 xs.SaveSettings(x);
15 SaveToCache();
16
17 string ConfigPath = HttpContext.Current.Request.PhysicalApplicationPath + "web.config";
18 System.IO.File.SetLastWriteTimeUtc(ConfigPath, DateTime.UtcNow);
19 break;
20 }
21 }
22}

StringDictionary(widgets\TextBox\edit.ascx.cs):

1/**//// <summary>
2/// Saves this the basic widget settings such as the Title.
3/// </summary>
4public override void Save()
5{
6 StringDictionary settings = GetSettings();
7 settings["content"] = txtText.Text;
8 SaveSettings(settings);
9}

XMLDocument(App_Code\Controls\WidgetZone.cs):

1private static XmlDocument RetrieveXml()
2{
3 WidgetSettings ws = new WidgetSettings("be_WIDGET_ZONE");
4 ws.SettingsBehavior = new XMLDocumentBehavior();
5 XmlDocument doc = (XmlDocument)ws.GetSettings();
6 return doc;
7}

对于客户端的使用部分涉及到了Extension,Widget部分等,这些内容会在后续的文章中进行详细说明。

总结

1.桥模式的使用

2.统一的配置模型

3.对于XML存储和数据库存储的处理方式不同

面向对象的设计原则真是太经典了

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号