程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> BlogEngine.Net架構與源代碼分析系列part7:Web2.0特性

BlogEngine.Net架構與源代碼分析系列part7:Web2.0特性

編輯:關於ASP.NET

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 }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved