2006-01-04
什么是 Blog,?
“Blog”是 Web Log 的簡稱(譯者注:也就 是網(wǎng)志(中國大陸也叫博客)。
它是一種作者與讀者以日志風格進行交互的中介,。在軟件社區(qū),,人們以網(wǎng)志形式來共享觀念與思想變得越來越流行。如:http://blogs.就是CCW上的一個 blogging,?! ?
建立網(wǎng)志最輕松的方法是什么?
要想建立自己的網(wǎng)志,,最容易的方法是到類似 blogger.com 這樣的站點注冊一個新用戶,,它提供一個創(chuàng)建自定義網(wǎng)志的 Web 界面,并且可以立即使用所創(chuàng)建的網(wǎng)志,。類似 blogger.com 的站點有很多,,它們都提供對網(wǎng)志特性的支持,。 如果你想更多地控制網(wǎng)志的基礎結(jié)構(gòu)或者想要在自己的服務器上建立網(wǎng)志服務系統(tǒng)。你可在以下最流行的幾種網(wǎng)志應用商業(yè)產(chǎn)品中選擇其一:Radio Userland,、Manila 和 Movable Type,。還有些易用的免費 .NET 網(wǎng)志應用可以使用,最流行的有:.TEXT 和 dasBlog,。只要把它們下載下來,,然后按照安裝說明進行安裝與設置,分分鐘便可建立起一個可運行的網(wǎng)志服務系統(tǒng),。
從功能上講,,這兩個基于 .NET 的網(wǎng)志應用系統(tǒng)不相上下。其主要區(qū)別在于 .TEXT 需要數(shù)據(jù)庫,,SQL Server 或者 MSDE,,而dasBlog 將所有信息都存儲在 XML 文件中(它基于原來一些微軟公司開發(fā)人員創(chuàng)建的 BlogX 框架),另一個差別是 .TEXT 在單個安裝配置中可支持多個網(wǎng)志(比如現(xiàn)在的 http://blogs. 就是如此),,而 dasBlog 要支持多個網(wǎng)志,,必須進行多次安裝。但 dasBlog 有一個很突出的特性,,那就是“Mail to Weblog”,,它允許你通過郵件來發(fā)布新信息。
新的 MSDN 網(wǎng)志服務站點和 PDC Bloggers 都是開始查找關(guān)于軟件開發(fā)主題的很好去處,。只要瀏覽這些站點之一便可閱讀其經(jīng)過聚合的預定內(nèi)容,。其預定的摘要會向你公開許多個人網(wǎng)志,,漸漸的你會自然而然地發(fā)現(xiàn)一些你比較喜歡閱讀的內(nèi)容。這樣,你便可以直接預定你最喜歡的個人網(wǎng)志摘要,。
對于專門討論 XML 和 Web 服務的網(wǎng)志,,請查看 MSDN Web Services Developer Center 上的清單,,我個人要花很多時間上這些網(wǎng)志站點,。
什么是 Feed(以下稱為提要),,如何預定它,?
網(wǎng)志以 RSS 文檔
形式為其內(nèi)容提供一個提要,該 RSS 文檔可以通過眾所周知 URL 獲得,。RSS 文檔是一個 XML 文件,,它包含大量離散的新聞項,如某個網(wǎng)志中的入口項(RSS 提要的例子參見 Figure 1),。由于 RSS 是 XML 格式文件,,所以它很容易被其它程序所使用。
RSS 聚合器是一個讀取 RSS 文檔并顯示新聞項的程序,。大多數(shù)聚合器只要輸入 RSS 的 URL,,使得預定提要成為可能,。
RSS 使閱讀網(wǎng)志便得容易。大多數(shù)經(jīng)常閱讀網(wǎng)志的開發(fā)人員都使用某種類型的聚合器來幫助他們有效地篩選提要內(nèi)容,。聚合器使得閱讀網(wǎng)志的感覺就象是在閱讀電子郵件,,因為它們突出新聞項并將新聞項進行緩沖處理以便離線閱讀(參見 Figure 2)。
還有一些在線 RSS 聚合器將 RSS 提要捆綁到某個單獨的網(wǎng)站,。其優(yōu)點是易于設置并且可以從任何計算機存取你的提要內(nèi)容,。當然,其缺點也是顯而易見的,,那就是在閱讀時必須始終保持連接,。
RSS 是網(wǎng)志成為一種強大的新型信息交流形式之根本所在。在網(wǎng)志出現(xiàn)之前,,大多數(shù)開發(fā)人員為了要查找到需要的內(nèi)容,,通常要花大量時間來篩選掉那些令人討厭的無關(guān)的信息。
網(wǎng)志通過讓讀者選擇所要閱讀的提要,,將控制權(quán)交給讀者,,從而有效地構(gòu)建自己的個性化內(nèi)容流。
其它類型的站點也能利用 RSS 的優(yōu)點來聚合內(nèi)容,。例如,,多數(shù)主流的新聞站點包括 Wired、CNet,、Yahoo 和 NPR News 都提供 RSS 提要,。訪問 Blogdigger 和 Syndic8,你可以找到一些支持 RSS 的站點,。
微軟的 MSDN 提供 RSS 提要(RSS feeds)來聚合新添加到站點的技術(shù)內(nèi)容。MSDN 的 Just Published提要是一種保持 MSDN 新文章和下載的主要方式,。甚至 MSDN Magazine(MSDN 雜志)都有其自己的 RSS 提要,!可以預定:http://msdn.microsoft.com/msdnmag/rss/recent.xml 獲得每月的更新以便查看本期有何內(nèi)容?目前有許多種 RSS 聚合器可供選擇,,在 http://blogs.law./tech/directory/5/aggregators 上可以找到一個相當完整的列表,。其中一些是在線聚合器,而另外一些是桌面應用程序,。有些是免費的,,另外一些需要付費才能使用。
哪個 RSS 版本是最通用的,?
這個問題的答案要看你問的是誰,,RSS
的版本有好多個,0.90,、0.91,、0.92,、0.93、0.94,、1.0 和 2.0,。要弄清楚這些版本之間的差別是巨大的挑戰(zhàn)之一。理解它們需要了解一些有關(guān)它們的歷史背景,。Netscape 創(chuàng)建了 RSS 的最初版本 0.90,,起初的名字是“RDF Site Summary”或者“Rich Site Summary”(規(guī)范中說前者是正式名稱)。Netscape 創(chuàng)建 RSS 0.90 用于其 Web 門戶,,這個時候,,其他人看到了 RSS 的使用潛力。Userland Software 是第一個開始將 RSS 用于其網(wǎng)志商業(yè)產(chǎn)品者之一,。
版本 0.90 在很大程度上基于 W3C 的 Resource Description Framework (RDF),。許多人都認為 RDF 過于復雜,因此都建議出一個免費的簡化版本 0.91,。這個任務恰好就給了 Userland Software,。Userland Software 便繼續(xù)發(fā)展 RSS 的簡化版本,隨后出臺的版本包括:0.92,、0.93 和 0.94,。為了強調(diào)其所做的簡化工作,他們將 RSS 的全稱定為“Really Simple Syndication”,。
正當 Userland Software 繼續(xù)專注于其簡化工作時,,另外一組開發(fā)人員在復興最初的 RDF 版本(0.90),因為 RSS 號稱自己更靈活,。他們最終發(fā)布了一個 RSS 1.0 的版本,,其正式名稱還是“RDF Site Summary”。由于使用 RDF,,這個版本完全不同于 Userland Software 所控制的版本,。Userland Software 當然不太愿意看到 RSS 1.0 似乎要取代其 0.94 版本的事實,于是出了一個新版本,,并將版本號一下子跳到了 2.0,。
這就是今天的這種局面,形成了兩個主要的競爭版本:一個基于 RDF 1.0,,而另一個則不是(2.0),,但它們兩個都共用相同的名字。這是一種可怕的混亂,,因為版本號導致人們誤認為 2.0 是 1.0 的改進版本,,而實際上它們是兩個目標完全不同的規(guī)范。另一組開發(fā)人員已經(jīng)下狠心著手解決這種混亂問題,通過定義新的摘要(syndication)規(guī)范來與 RSS 名字的隨意性決裂,。這個解決方案稱為 Atom(原子)項目,。本文稍后將會詳細討論。
使用哪個版本其實是無關(guān)痛癢的,,大多數(shù) RSS 聚合機制支持所有的 RSS 版本(有些甚至支持 Atom),。最終的決定取決于你是否想使用 RDF,可謂蘿卜白菜,,各有所愛,,它完全要看某人所信奉的 Semantic Web 概念而定。
RSS 1.0 和 RSS 2.0 各是什么樣子,?
RSS 1.0
和 2.0 格式所包含的核心信息相同,,但其結(jié)構(gòu)不一樣。我提供了一個 RSS 1.0 文檔(參見 Figure 1)以及一個同等的 RSS 2.0(參見 Figure 2)用于對照,。
你會注意到頂行右邊開始的根元素的差異,,RSS 1.0 的根元素是 rdf:RDF,而 RSS 2.0 的根元素是 rss,。rss 還包含一個強制版本屬性用以表示所用的RSS的準確格式(可能的值包括:0.91, 0.94 等),。另一個主要差別是 RSS 1.0 文檔有名字空間限定,RSS 2.0 的文檔就沒有,。不管怎樣,,包含在兩個文檔中的信息本質(zhì)上是一樣的。
兩個版本都包含 channel 元素,,而 channel 元素又包含三個必須的元素:title,、description 和 link,其代碼如下:
?。糲hannel>
<title><!– channel 的標題 –></title>
<description><!– 簡要描述 –></description>
<link><!– channel 的 URL –></link>
<!– 可選/可擴展元素 –>
?。?channel>
除了這些必須的元素外,RSS 1.0 還定義了三個附加元素:image,、items 和 textinput,,其中,image 和 textinput 是可選的,。另一方面,RSS 2.0 提供了 16 個附加元素,,其中也包括 image,、items 和 textinput,此外還有 language,、copyright,、managingEditor、pubDate 和 category。RSS 1.0 允許通過定義在單獨的 XML 名字空間中的可擴展元素來創(chuàng)建這種類型的元數(shù)據(jù),。
這兩種格式在結(jié)構(gòu)上的主要區(qū)別必須要看其 item,、image 和 textinput 節(jié)點的表示形式。RSS 1.0 中,,channel 元素包含對 item,、image 和 textinput 節(jié)點的引用,這些節(jié)點存在于 channel 節(jié)點本身之外,。這樣在 channel 和 所引用的節(jié)點之間建立了一種 RDF 關(guān)聯(lián),。如 Figure 1 所示,channel 元素與一個 image 元素以及兩個 item 元素關(guān)聯(lián),。RSS 2.0 中,,item 元素只是在 channel 元素中連續(xù)排放(如 Figure 2 所示)。item 元素包含實際的新聞項信息,。item 的結(jié)構(gòu)在兩個版本中是相同的,。item 元素通常包含 title、link 和 description 元素,,如下代碼所示:
?。糹tem>
<title><!– 項標題 –></title>
<link><!– 項 URL –></link>
<description><!– 簡要描述 –></description>
<!– 可選的/可擴展的元素 –>
</item>
在 RSS 1.0 中,,title 和 link 是必須的,,description 是可選的。而在 RSS 2.0 中,,title 或 description 必須提供其中的一個,;其它均可選。這些只是定義在 RSS 1.0 中的 item 元素,。RSS 2.0 提供幾個其它可選元素,,其中有 author、category,、comments,、enclosure、guid,、pubDate 和 source,。RSS 1.0 獲取這樣的元數(shù)據(jù)是通過定義在單獨的 XML 名字空間中稱為 RSS 模塊的可擴展元素來實現(xiàn)的。例如,,在 Figure 1 中,,item 的日期是用 Dublic Core 模塊的 <dc:date> 元素表示的。 有關(guān)不同格式的完整信息請參考 RSS 1.0 和 2.0 規(guī)范,。
那么,,何為 Atom,?
前面我提到過,Atom 乃一項目的名字,,主要是開發(fā)一個新的網(wǎng)志摘要格式以解決目前 RSS 存在的問題(混亂的版本號,,不是一個真正的開放標準,表示方法的不一致,,定義貧乏等等),。Atom 希望提供一個清晰的版本以解決每個人的需要,其設計完全不依賴于供貨商,,任何人都可以對之進行自由擴展,,完整詳細說明。
當今許多 Blog 引擎已經(jīng)支持當前的摘要格式,。Figure 3 是一個Atom 0.3 提要例子,,它與前述 Figure 1 及 Figure 2 RSS 提要等同。注意 Atom 提要用名字空間限定的,,但它不使用 RDF,。這使得 Atom 和 RSS 1.0 及 RSS 2.0 在某些地方有相似之處。Atom 在未來是否能被接受,,人們拭目以待,。
除了定義新的摘要格式之外,Atom 還希望定義一個標準的檔案文件格式和一個標準的網(wǎng)志編輯 API(Atom API),。有關(guān) Atom 詳細規(guī)范以及其它 Atom 資源請訪問 The Atom Project,。
什么是 blogroll?
blogroll 是網(wǎng)志提要的集合,,
大多數(shù) blogger(博客)在其個人網(wǎng)志上都提供 blogroll,。這就允許讀者連接到其他趣味和寫作風格相投的人的網(wǎng)志上。Blogroll 方便了網(wǎng)絡上的溝通,。通過使用Outline Processor Markup Language (OPML),,人們可以用 XML 格式文件交換 blogroll。Figure 4 是 blogroll 的一個例子,。
大多數(shù)網(wǎng)志引擎都自己管理 blogroll,,每當讀者請求 blogroll 時都自己產(chǎn)生相應的 XML 格式。同樣,,大多數(shù)聚合器都能導入 blogroll 并自動預定所包含的摘要,。有關(guān) OPML 更多的信息參見 http://opml.。
能解釋 referrers,、trackbacks 和 pingbacks 是什么嗎,?
大多數(shù)網(wǎng)志軟件都能讓讀者添加網(wǎng)志評論。但更常見的做法是讓讀者在其自己的網(wǎng)志添加一個入口回鏈到原來的帖子,。博客們(Bloggers)都樂于跟蹤連接發(fā)生的時間以便新讀者能理解整個會話內(nèi)容。
所謂 referrer 是一個外部站點,用戶單擊該站點上一個超鏈接便可以到達你的網(wǎng)站,。許多網(wǎng)志引擎當讀者導航到你的網(wǎng)志的某個入口時都能自動保持跟蹤,。大多數(shù)引擎都會在網(wǎng)志入口底部顯示一個 referrers 清單,以便讀者能往回導航到 referrer 的站點,,并清楚他們關(guān)于該入口要說些什么,,這基于一個假設,那就是如果他們鏈接到它,,可能就此會寫些什么,。referrer 存在的問題是必須要有這個假設才成立??沒有足夠的信息說明是否引用的頁面事實上包含有關(guān)信息。實際上,,垃圾信息的發(fā)布者為了營銷企圖已經(jīng)利用了這個漏洞來重定向讀者,。 Trackback 和 pingback 同一個規(guī)范,被用來彌補上述問題的方案,。使用 trackback 和 pingback,,其他博客們能自動發(fā)送一個 ping 到你的網(wǎng)志以明確表示他們已經(jīng)寫了一個引用特定帖子的入口。
這種類型的反鏈允許你的網(wǎng)志以更明顯的方式顯示所有評論的清單,。當今大多數(shù)網(wǎng)志軟件支持所有這些技術(shù),。參見 TrackBack Technical Specification 和 Pingback 1.0。
如何為我的站點產(chǎn)生 RSS 提要,?
Figure 5 舉例說明了
如何用 asp:Repeater 控件在 .aspx 頁面中生成 RSS 2.0 提要,。該頁面假設你已經(jīng)在后端代碼文件中將控件的 DataSource 屬性設置成對應的數(shù)據(jù)庫結(jié)果集?! ?
我想聚合幾個 RSS 提要并將信息顯示在個人網(wǎng)站上,,能解釋一下如何實現(xiàn)嗎?
因為 RSS 提要是 XML 文件,,作為練習,,你可以用自己最擅長的 XML API,比如,,Microsoft .NET Framework 中的 System.Xml,,F(xiàn)igure 6 中包含 ASP.NET Web 用戶控件代碼,它是我編寫用來聚合 blogroll 文件中(.opml)所列出的 RSS 提要的一段代碼,。這段代碼假設 opml 元素包含 numberToDisplay 屬性,,以表示你打算顯示的每個提要有多少項。
Figure 7 ASP.NET Web 用戶控件 你可以將控件拖到任何 .aspx 頁面中,,它將顯示 blogroll 文件中列出的不同提要的項,,F(xiàn)igure 7 顯示了 Utah .NET User Group 網(wǎng)站使用這個控件的效果畫面。
有沒有與網(wǎng)志交互的 Web Services APIs,?
許多網(wǎng)志引擎都提供屬于自己的 Web service 接口,,通過編程與網(wǎng)志交互,,但目前還沒有出現(xiàn)一種標準化的東西。
.Text 和 dasBlog 兩者都提供某些 .asmx 端點,,可以通過 SOAP 來實現(xiàn)編輯功能,,但其接口是不同的。Blogger.com 提供基于 XML-RPC 的交互式 API (Blogger API),。Userland Software 對Blogger API 的功能進行了增強,,并把它叫做 MetaWeblog API。這些可能是當今公認的網(wǎng)志 APIs,,但仍然不是所有網(wǎng)志引擎都支持的,。還有一個用于添加評論的獨力的 API 叫做 Comment API,同樣,,它也不是被普遍支持,。
Atom 組正在努力解決這些問題,Atom API 定義了一個標準的網(wǎng)志 API 用于發(fā)布和編輯網(wǎng)志內(nèi)容,。有關(guān)信息請參考 The Atom Project 網(wǎng)站,。
|