欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Coding4Fun: 一個(gè)簡(jiǎn)單的 RSS 源
發(fā)布日期: 10/27/2005 | 更新日期: 10/27/2005
Peter Bernhardt
3Leaf Development
很多年以前,我得到一個(gè)經(jīng)驗:我不需要了解所有事情就能了解整個(gè)世界。當然,得出這個(gè)結論本身就是一種自大的行為。但是這種自大源于年輕無(wú)知,現在我更清楚地認識到了這一點(diǎn)。實(shí)際上,這個(gè)事實(shí)只有在 Internet 時(shí)代才被放大了,因為我發(fā)現我不可能跟上 Web 上永不停止的信息、思想和觀(guān)念流。甚至在我感興趣的領(lǐng)域,我也很難跟上 Visual Basic、Visual C# 和 .NET Framework 的最新發(fā)展。
因此,在接下來(lái)的幾個(gè)課程中,我將探索通過(guò)不同的方法來(lái)使用您很可能已經(jīng)熟悉的工具:RSS(即真正簡(jiǎn)單的聯(lián)合發(fā)布系統)- 一種能夠大大減輕信息超載現象的技術(shù)。
作為快速入門(mén),Wikpedia 將 RSS 描述為:“對 Web 內容的間斷介紹以及指向完整內容的鏈接。此信息以 XML 文件的形式提供,稱(chēng)為 RSS 源、webfeed、RSS 流或 RSS 通道。除了使聯(lián)合更方便以外,RSS 還使經(jīng)常訪(fǎng)問(wèn)網(wǎng)站的讀者能夠使用新信息聯(lián)合器跟蹤該網(wǎng)站的更新。” [有關(guān)完整的信息,請參閱RSS on Wikpedia(英文)。]
在開(kāi)始以前,讓我們先來(lái)看一個(gè)可以使用 Visual Web Developer 2005 Express Edition 創(chuàng )建的簡(jiǎn)單 RSS 源閱讀器。我將創(chuàng )建一個(gè)控件,從所需的站點(diǎn)中提取 RSS 源,并對該內容進(jìn)行組織以顯示在網(wǎng)頁(yè)上。當然,如果您是為了自己使用而聯(lián)合內容,也可以創(chuàng )建 Windows 應用程序形式的 RSS 源閱讀器,或者利用任何一個(gè)已有的免費 RSS 客戶(hù)端應用程序 [例如,RSS Reader(英文)或SharpReader(英文)]。但是,在 Web 應用程序中聯(lián)合內容有其他目的 - 它使您能夠擴展自己創(chuàng )建的內容,并豐富了訪(fǎng)問(wèn)您站點(diǎn)的用戶(hù)的體驗。
在涉及代碼之前,讓我們先看一小段典型的 RSS 2.0 文件內容。在此示例中,聯(lián)合的提供程序為 Microsoft 的 MSDN 網(wǎng)站,并且我使用了 Visual Basic 內容專(zhuān)用的 RSS 源。
<rssxmlns:msdn="http://msdn.microsoft.com/aboutmsdn/rss/"xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:msdndomain="http://msdn.microsoft.com/aboutmsdn/rss/domains"version="2.0"><channel><title>MSDN: Visual Basic</title><link>http://msdn.microsoft.com/vbasic/</link><description>Recently Published Visual Basic Content</description><language>en-us</language><pubDate>Thu, 30 Jun 2005 13:01:02 GMT</pubDate><lastBuildDate>Thu, 30 Jun 2005 13:01:02 GMT</lastBuildDate><generator>MSDN RSS Service 1.1.0.0</generator><ttl>1440</ttl><item><title>June CTP of Visual Studio 2005 Available to MSDN Subscribers</title><description>The latest Community Technical Preview of Visual Studio 2005is now available for download to MSDN subscribers.</description><link>http://msdn.microsoft.com/subscriptions/</link><category domain="msdndomain:ContentType">Announcement</category><category domain="msdndomain:Subject">.NET development</category><msdn:headlineImage>http://msdn.microsoft.comicons/article.gif</msdn:headlineImage><msdn:contentType>Announcement</msdn:contentType><msdn:simpleDate>Jun 27</msdn:simpleDate><guid isPermaLink="false">Titan_1106</guid><pubDate>Tue, 28 Jun 2005 02:00:13 GMT</pubDate></item><!-- more items follow --></channel></rss>
典型的源文件在下載時(shí)附帶有相關(guān)信息,但其中部分信息并非所有聯(lián)合提供程序都會(huì )包含(例如,MSDN 的標題圖像就不是標準信息)。在 XML 結構的頂部是一個(gè) <channel> 節點(diǎn),該節點(diǎn)包含標題和說(shuō)明,用來(lái)簡(jiǎn)單描述內容項的列表。該 <channel> 節點(diǎn)包含很多子 <item> 節點(diǎn),用來(lái)表示每篇文章(包括文章的標題、說(shuō)明、發(fā)布日期以及指向全文的鏈接)。
在 Visual Web Developer 2005 Express Edition 中創(chuàng )建新網(wǎng)站之后,我添加了一個(gè)“Web 用戶(hù)控件”,用來(lái)顯示此信息。
ASP.NET 2.0 的功能之一是它既支持 Visual Studio 2003 開(kāi)發(fā)人員所熟悉的代碼分離模型,也支持(相對比較新的)嵌入代碼模型,后者允許在 .aspx 或 .ascx 文件的 <script> 標記內編寫(xiě)所有代碼。盡管使用嵌入代碼的執行方式與 ASP.NET 頁(yè)的執行方式完全相同,我更喜歡代碼分離模型,并且本示例通篇使用代碼分離模型。另外,請您注意,我使用 Visual Basic 來(lái)編寫(xiě)此應用程序的代碼。
在設計器中工作時(shí),我向控件添加了一個(gè) Repeater 控件。該 Repeater 是數據綁定控件,用于按照自定義布局顯示數據。這是顯示來(lái)自 RSS 源的內容項列表的最佳方式。如下所示,在設計時(shí),可以使用與該控件相關(guān)聯(lián)的智能標記菜單為該控件設置數據源。但是,對于此應用程序,我將在運行時(shí)使用 RSS 源來(lái)設置數據源。
切換到 .ascx 文件的代碼分離文件 (RSSList.ascx.vb),然后添加 Imports 語(yǔ)句,以便導入包含必要類(lèi) [在獲取 RSS 源并將它存儲到本地資源(將綁定到 Repeater)中時(shí)必須使用這些類(lèi)] 的命名空間。
Imports System.NetImports System.Data
除了使用該控件的 Page Load 事件的事件處理程序之外,我還添加了名為 RefreshFeed 的專(zhuān)用幫助器函數。此函數獲取 RSS 數據,并將該數據作為 DataSet 返回給 Page Load 事件處理程序。在 RefreshFeed 函數中,第一行代碼使用 WebRequest 類(lèi)的共享 Create 函數創(chuàng )建一個(gè) HttpWebRequest 實(shí)例。
Dim rssFeed As HttpWebRequest =DirectCast(WebRequest.Create("http://msdn.microsoft.com/vbasic/rss.xml"), HttpWebRequest)
作為 Create 函數的輸入參數,該代碼將傳遞 RSS 源的目標 URL。該函數返回一個(gè) HttpWebRequest 對象,而該對象是一種特殊的 WebRequest 對象,它支持一些額外的屬性和方法,可以通過(guò) HTTP 與服務(wù)器交互。在這種情況下,我的需要對于 HttpWebRequest 來(lái)說(shuō)非常簡(jiǎn)單;代碼首先從服務(wù)器獲取響應 (GetResponse),然后由于響應的格式為 XML 格式,因此可以使用接受 Stream 作為輸入參數的 ReadXml 重載方法將響應流 (GetResponseStream) 直接加載到 DataSet 中。
Dim rssData As DataSet = New DataSet()rssData.ReadXml(rssFeed.GetResponse().GetResponseStream())
ReadXml 方法會(huì )自動(dòng)推斷 XML 數據的架構。這意味著(zhù)源 XML 數據的 <channel> 和 <items> 節點(diǎn)在 DataSet 中被表示為單獨的 DataTable。在 Page Load 事件處理程序中,調用 RefereshFeed 方法以返回包含 RSS 源數據的 DataSet 之后,代碼將以不同的方式訪(fǎng)問(wèn)通道和項數據。DataSet 中的第二個(gè) DataTable 包含通道信息。為了顯示源標題和說(shuō)明,代碼使用 Row 的 ItemArray 屬性從 DataTable 向 Object 數組中復制第一行(同時(shí)也是僅有的一行)。然后,由于我要確保我找到了正確的數據列,代碼分別向 Integer 類(lèi)型的本地變量指定了標題和說(shuō)明列的順序位置。使用這些值,代碼調用 Object 數組的 GetValue 方法,以便將與每一列相關(guān)的值存儲到為該類(lèi)定義的 Friend 字段中(我將在 Repeater 控件中使用這些值)。
Dim channelItems As Object() = rssData.Tables(1).Rows(0).ItemArrayDim titleColumn As Integer = rssData.Tables(1).Columns("title").OrdinalDim descriptionColumn As Integer = rssData.Tables(1).Columns("description").OrdinalTitle = channelItems.GetValue(titleColumn).ToString()Description = channelItems.GetValue(descriptionColumn).ToString()
接下來(lái),代碼將 Repeater 控件的 DataSource 屬性設置為 DataSet 中的 DataTable(保留了來(lái)自 RSS 源的項內容)。最后,代碼調用 Repeater 的 DatBind 方法將該數據源綁定到控件。
Repeater1.DataSource = rssData.Tables(2)Repeater1.DataBind()
在 RssFeed.ascx 控件的源代碼視圖中,我為 Repeater 控件添加了模板,用于顯示該數據。在 <HeaderTemplate> 中,代碼以顯示通道標題和說(shuō)明的標頭元素作為表的開(kāi)始。
<HeaderTemplate><table border=0 style="width: 240px; font-size: x-small; color: black; font-family: Verdana;"><thead><tr style="font-weight: bold;"><td><%#Me.Title%></td></tr><tr style="font-style: italic;"><td><%#Me.Description%></td></tr></thead></HeaderTemplate>
同樣,在 <ItemTemplate> 中,代碼顯示了帶有其相關(guān)鏈接的內容項的標題以及該項的說(shuō)明。
<ItemTemplate><tr bgcolor="LightBlue" ><td><a target="article" style="text-decoration: none;color: black;" href=<%# DataBinder.Eval(Container.DataItem, "link") %>><%# DataBinder.Eval(Container.DataItem, "title") %> </a></td></tr><tr bgcolor="Ivory"><td style="color: CornFlowerBlue;"><%# DataBinder.Eval(Container.DataItem, "description") %></td></tr></ItemTemplate>
作為最后并且非常必要的一步,我在 .ascx 頁(yè)的頂部添加了一條 OutputCache 指令,以便將該控件的輸入緩存一個(gè)小時(shí)。
<%@ OutputCache Duration="3600" VaryByParam="None" %>
這可以避免在每次用戶(hù)訪(fǎng)問(wèn)包含該控件的頁(yè)面時(shí)都執行一次 RefreshFeed 函數。如果我不這么做,則當有大量用戶(hù)訪(fǎng)問(wèn)我的網(wǎng)站時(shí),會(huì )給我的 Web 服務(wù)器和聯(lián)合提供程序之間帶來(lái)大量通訊。如果運行該應用程序,聯(lián)合的內容將如下所示。
在以后的文章中,我將深入探討在 Web 應用程序中使用聯(lián)合 RSS 源的可能性。然后,我會(huì )鼓勵您下載代碼,并自己試一下。
Peter Bernhardt 是一位獨立軟件開(kāi)發(fā)人員和架構師,居住在舊金山的海灣地區。他有多年使用 Microsoft 技術(shù)的經(jīng)驗,現在又開(kāi)始重新關(guān)注 Word Basic??赏ㄟ^(guò)將電子郵件發(fā)送至peter@SharpSense.net 來(lái)與 Peter 取得聯(lián)系。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
8.4.1 填充DataSet
利用 ASP.NET、JavaScript 和 OLE DB 從頭設計您自己的網(wǎng)絡(luò )日記應用程序
動(dòng)態(tài)合并Repeater控件數據列 Ver2
C#將xml轉化為datatable的代碼
Builder.com.cn-編程-Visual Studio 2005 中的新的 DataSet 功能
利用Repeater解決DataGrid的嵌套顯示問(wèn)題
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久