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

BlogEngine.Net架構與源代碼分析系列part5:對象搜索

編輯:關於ASP.NET

IPublishable與Search

從這篇文章開始我會引入一些領域上的知識或者給出一些參考文章來供大家閱讀,我們對這些領域上的知識沒有必要深挖,只要大概了解一下就可以了,這對於我們分析BlogEngine.Net會有很大的幫助。在這篇文章中我主要向大家介紹一下BlogEngine.Net的搜索部分的實現以及支持的相應標准等。

先用自己的話解釋一下什麼是開放搜索

開放搜索應該也是一種標准了,現在它越來越流行起來,記得我第一次見到這個東東是在codeproject中。大家一定注意到了IE7右上角的那個小工具欄了,

我們可以在那裡選擇一個搜索提供程序例如:Google,當我們輸入信息回車以後就會發現頁面跳轉到了Google的結果頁面。那麼這些提供程序信息是怎麼獲得的呢?IE又是怎麼知道要去Google的頁面呢?原來是通過一個標准的XML文件,這個文件的具體格式可以參照一下codeproject的開放搜索文件http://www.codeproject.com/info/OpenSearch.xml,當把

<link rel="search" type="application/opensearchdescription+xml" title="CodeProject" href="http://www.codeproject.com/info/OpenSearch.xml"></link>

這種代碼加入到一個Html的Head中,在浏覽器打開這個Html文當時就會發覺裡面的開放搜索文件,然後在那個小工具欄中增加一個提供程序,當我們在工具欄中輸入信息並回車以後就可以直接跳轉到相應的結果頁面,可以看出這個XML文件充當著一種中間橋梁的作用。這種功能不僅需要浏覽器的支持,同時也需要網站本身提供相應的支持,這就是開放搜索。這個和IE7中的Rss源發現機制很類似。

那麼BlogEngine.Net中對於開放搜索支持是如何實現的呢

進入BlogEngine.Net的首頁查看生成的Html源代碼我們會看到

<link type="application/opensearchdescription+xml" rel="search" title="Name of the blog" href="http://hostname/opensearch.axd" />,

這裡請求了opensearch.axd,查看Web.config我們注意到opensearch.axd交給了BlogEngine.Core.Web.HttpHandlers.OpenSearchHandler處理,這個XML是通過一個HttpHandler來生成的。在Html源代碼的Head中我們會發現很多*.axd的引用,實際上它們都是使用自定義的HttpHandler來處理的,對於這些HttpHandler我會在後續有關文章中進行說明。從OpenSearchHandler生成的XML我們可以看出,執行搜索的Url為(類似Google的處理方式)http://hostname/search.aspx?q={searchTerms},searchTerms就是輸入的部分,具體的搜索由頁面search.aspx調用核心層內部邏輯來完成。

內部邏輯的主要部分IPublishable與Search的實現分析

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