快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
,主要是给数据存储是XML格式时使用。在DataStore.cs文件中StorageLocation方法会涉及到。

BlogEngine.HardMinify:对于Javascript脚本指定强行压缩(去除一些不必要的字符)的文件名称。我们知道BlogEngine.Net中对于Javascript请求都是通过JavaScriptHandler进行的,JavaScriptHandler有一个HardMinify来判断是否已经指定强行压缩。JavaScriptHandler中会涉及到这部分的引用。注意对WebResource.axd的请求在BlogBasePage中替换成对于js.axd的请求,之后JavaScriptHandler的处理是使用RetrieveRemoteScript来输出脚本的。

Ajax的运用

BlogEngine.Net的很多部分使用原生的Ajax完成。例如评论的打分,widget的管理等部分。我们在讲述BlogBasePage时提到的AddLocalizationKeys实际上就是初始化页面脚本的一些变量,之后使用AddJavaScriptInclude(Utils.RelativeWebRoot + "blog.js")引入blog.js,如果是管理员(Widget可被管理)又使用AddJavaScriptInclude(Utils.RelativeWebRoot + "admin/widget.js")引入widget.js,使用AddStylesheetInclude(Utils.RelativeWebRoot + "admin/widget.css")引入widget样式,注意先后顺序,因为widget.js需要使用核心的blog.js。blog.js中这段代码就是Ajax调用的核心:

Ajax核心

1/// <summary>
2/// Creates a client callback back to the requesting page
3/// and calls the callback method with the response as parameter.
4/// </summary>
5function CreateCallback(url, callback)
6{
7 var http = GetHttpObject();
8 http.open("GET", url, true);
9
10 http.onreadystatechange = function()
11 {
12 if (http.readyState == 4)
13 {
14 if (http.responseText.length > 0 && callback != null)
15 callback(http.responseText);
16 }
17 };
18
19 http.send(null);
20}
21
22/// <summary>
23/// Creates a XmlHttpRequest object.
24/// </summary>
25function GetHttpObject()
26{
27 if (typeof XMLHttpRequest != ''undefined'')
28 return new XMLHttpRequest();
29
30 try
31 {
32 return new ActiveXObject("Msxml2.XMLHTTP");
33 }
34 catch (e)
35 {
36 try
37 {
38 return new ActiveXObject("Microsoft.XMLHTTP");
39 }
40 catch (e) {}
41 }
42
43 return false;
44}1/// <summary>
2/// Creates a client callback back to the requesting page
3/// and calls the callback method with the response as parameter.
4/// </summary>
5function CreateCallback(url, callback)
6{
7 var http = GetHttpObject();
8 http.open("GET", url, true);
9
10 http.onreadystatechange = function()
11 {
12 if (http.readyState == 4)
13 {
14 if (http.responseText.length > 0 && callback != null)
15 callback(http.responseText);
16 }
17 };
18
19 http.send(null);
20}
21
22/// <summary>
23/// Creates a XmlHttpRequest object.
24/// </summary>
25function GetHttpObject()
26{
27 if (typeof XMLHttpRequest != ''undefined'')
28 return new XMLHttpRequest();
29
30 try
31 {
32 return new ActiveXObject("Msxml2.XMLHTTP");
33 }
34 catch (e)
35 {
36 try
37 {
38 return new ActiveXObject("Microsoft.XMLHTTP");
39 }
40

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