BlogEngine.Net架构与源代码分析系列part7:Web2.0特性

Pingback&Trackback

今天这篇文章主要向大家讲述一下Blog系统中应用最多的,具有Web2.0特性的,也是一种标准化的——Pingback&Trackback。分析一下BlogEngine.Net提供的比较全面的Pingback&Trackback支持。本文内容相对来说比较独立,如果您对整个系列感兴趣请参照这里。

Pingback&Trackback参考

简单地说,Pingback&Trackback是博客在链接、引用其他博客内容时通知对方博客的一种自动机制,告知对方链接位置及可能包含一定的摘要文本(视情况而定)。这样带来的好处是显而易见的,对Pingback&Trackback发送者来说,避免了手动通知对方的麻烦;对Pingback&Trackback接收者而言,则可以随时掌握自己的某篇文章被什么人链接及具体链接信息,等等。例如:

博客A发布了一篇文章;博客B看到后,发布评论、引用、介绍博客A上该篇文章的贴子;但此时博客A是无从知道博客B上对自己文章的引用情况的,要让博客A知道,博客B须:在博客A上留言,介绍自己对该篇文章的看法,比如说“在我的博客发布了一篇文章,也讨论这个问题——”,并附上相应页面的链接;向博客A发送E-mail,说明自己对该篇文章的进一步讨论,同时,也许希望博客A能在页面上放上自己的链接,以帮助对这一话题有兴趣的用户能找到自己的博客;Pingback&Trackback实现的功能便是将第三个步骤自动化了,再也不需这么一个繁琐的过程,即:博客A发布了一篇文章;博客B看到后,发布评论、引用、介绍博客A上该篇文章的贴子;在文章发布时,博客B即自动向博客A发送Pingback&Trackback;博客A收到相应的Pingback&Trackback,如果未设置人工审核,相应的内容即会出现在博客A该文的留言中,如果设置了人工审核,则出现在博客A的审核列表中,博客A认为不是spam后将其发布在留言中。

BlogEngine.Net中的Pingback&Trackback实现

BlogEngine.Net中的Pingback&Trackback的实现主要涉及到以下几组文件:

1.Web站点App_Code/Extensions中:SendPings.cs

2.BlogEngine.Core的Ping中:PingService.cs、Manager.cs、Pingback.cs、Trackback.cs

3.BlogEngine.Core的Web/HttpHandlers中:PingbackHandler.cs、TrackbackHandler.cs

从BlogEngine.Net中的Pingback&Trackback的具体实现来看,Pingback和Trackback的区别只在于数据的交换格式上,Pingback和PingService主要是使用标准的XMLRPC来完成数据的交换(上一篇文章中有部分涉及),而Trackback主要的request是使用类似的下面的格式完成:title={0}&url={1}&excerpt={2}&blog_name={3},response同样是使用XML传输

<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><response><error>0</error></response>

但是它们要实现的功能是类似的。

实际上SendPings类是BlogEngine.Net的一个Extension(类具有Extension特性,这个后面会有专门的一篇文章来讲解),它监听了Page.Saved和Post.Saved:

1 /// <summary>
2 /// Hooks up an event handler to the Post.Saved event.
3 /// </summary>
4 static SendPings()
5 {
6   Post.Saved += new EventHandler<SavedEventArgs>(Post_Saved);
7   Page.Saved += new EventHandler<SavedEventArgs>(Post_Saved);
8 }

时间: 2024-10-30 07:16:26

BlogEngine.Net架构与源代码分析系列part7:Web2.0特性的相关文章

BlogEngine.Net架构与源代码分析系列part1:开篇介绍

最近我要开始这个系列了,这是我的第一个系列.关于BlogEngine.Net我想说的是,它设计的真的很棒,代码简洁但是功能很多,真是麻雀虽小,五脏俱全啊,而且具有了很多Web2.0的特征,甚至它的每一行代码都值得我们去研究一下,它的开发团队很棒.实际上很多国外的个人Blog都是采用BlogEngine.Net加上自定义皮肤实现的,如果您是一个Blog的开发者,这更是您的必备参考! 很多兄弟都推荐BlogEngine.Net看一看,甚至www.asp.net也把它放在了很重要的位置.前一阶段我仔细

BlogEngine.Net架构与源代码分析系列part9:开发扩展(上)

Extension与管理上的实现 从这篇文章开始的连续三篇文章我将向大家展示BlogEngine.Net中的三大开发扩展特性,它们分别是Extension,Widget和Theme.程序员可以在符合一定标准条件下开发自己的扩展,然后将扩展像插件一样(Plug'n play)与BlogEngine.Net进行集成,来达到个性化的应用.本文将详细介绍第一种扩展Extension的开发标准,管理部分介绍等. 声明一下 上一篇文章的回复中有人提到希望我写一下自己的看法和BlogEngine.Net的优缺

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

DataStore分析 本系列的第四篇文章我给大家做了关于BlogEngine.Net全局配置的分析.在这篇文章里我将会对BlogEngine.Net中比较经典的部分DataStore做一个简单的分析,这个DataStore主要完成了BlogEngine.Net三大扩展特性(Extension,Widget,Theme)的数据存储部分,它提供了一个扩展特性统一的存储模型.DataStore是建立在Provider存储(本系列第三篇文章中介绍过)的上层,本文研究的内容会和后面讲到的扩展部分的文章有

BlogEngine.Net架构与源代码分析系列part2:业务对象

共同的父类BusinessBase 上篇文章朋友的评论给了我很大的动力写这个系列的文章,看来大家都比较关注这个系列.为了后续文章做一个铺垫,我在这篇文章的前半部分讲解一下BlogEngine.Net的整体架构,后半部分主要是对于BusinessBase类的分析. 下载源代码以后打开解决方案,我们发现从项目的组织结构上BlogEngine.Net分成两个项目:一个是BlogEngine.Core,顾名思意,它就是BlogEngine.Net的核心逻辑层.所有的业务逻辑和一些功能都在这个项目中体现,

BlogEngine.Net架构与源代码分析系列part15:总结篇

本文是这个系列的总结篇,在这篇文章里,仅从我个人的角度发表一下对BlogEngine.Net的一些看法.内容包括BlogEngine.Net的优缺点,性能问题,如何阅读源代码等. 重申一下写这个系列的目的 1.使自己更加深入的理解BlogEngine.Net的架构,对BlogEngine.Net的代码能够更深刻的掌握. 2.给那些想学习BlogEngine.Net的源代码,但是不知道从何开始或者比较迷茫的朋友们一个学习指南. 3.在博客园上永远的保存下来,方便你我查看.因为这方面的资料实在太少了

BlogEngine.Net架构与源代码分析系列part11:开发扩展(下)

自定义Theme 个性化的主题是一个完善的Blog系统中所必备的,同时也是一个亮点.在这篇文章里我将给大家展示一下BlogEngine.Net的第三个开发特性,那就是自定义的Theme.本文的重点放在BlogEngine.Net的开发规范和实现原理上.如果您对BlogEngine.Net的架构很了解的话,那么开发一个自己的Theme是一件很简单的事情,如果您不是很了解,那么你也可以按照本文讲述的规范开发出一个自定义的Theme来. BlogEngine.Net中的Theme 在BlogEngin

BlogEngine.Net架构与源代码分析系列part4:Blog全局设置

BlogSettings 这已经是本系列的第四篇了,以前我多数时间是看文章,自己写起来才感觉到当博主不容易啊,所以我们无论评论也好,阅读也好,都要尊重博主的劳动成果.闲话少说,在这篇文章中我们将对BlogEngine.Net的全局配置进行一下分析与探讨.关于配置这一部分单独拿出来做一篇文章实在有些牵强,但是我总觉得这个配置部分比较独立,而且BlogEngine.Net的设计和实现都有很多可以参考的地方. 在一个企业级应用系统中,对一些系统全局参数进行配置是必不可少的,那么我们是怎么处理这些配置的

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

HttpHandlers与HttpModules 这已经是系列的第13篇了,实际上到现在为止您应该对BlogEngine.Net的整体设计有了一定的把握,对部分实现细节有了比较深刻的认识,在阅读BlogEngine.Net时希望坚持到最后,并把握住宏观,深入到微观.本文将详细介绍BlogEngine.Net中的HttpHandlers与HttpModules,主要说明它们要实现的功能以及如何使用,并对几个必要的HttpHandler或HttpModule进行比较细致的分析. HttpHandle

BlogEngine.Net架构与源代码分析系列part5:对象搜索

IPublishable与Search 从这篇文章开始我会引入一些领域上的知识或者给出一些参考文章来供大家阅读,我们对这些领域上的知识没有必要深挖,只要大概了解一下就可以了,这对于我们分析BlogEngine.Net会有很大的帮助.在这篇文章中我主要向大家介绍一下BlogEngine.Net的搜索部分的实现以及支持的相应标准等. 先用自己的话解释一下什么是开放搜索 开放搜索应该也是一种标准了,现在它越来越流行起来,记得我第一次见到这个东东是在codeproject中.大家一定注意到了IE7右上角