2009年4月4日 星期六

介紹 ASP.NET Application Services 1-1

RunPC165期:領先體驗微軟ASP.NET的「未來之路」(2)哇~原來搜尋引擎可以這麼親近我的站台


繼領先體驗微軟ASP.NET的「未來之路」第一篇介紹動態資料控制項(Dynamic Data Control;DDC)後,本期將為各位介紹透過ASP.NET Application Services拉近各搜尋引擎與我們網站間的距離,不僅表面拉近更要深入探索,使各搜尋引擎對我們網站瞭若指掌。或許各位正納悶著,這對我們的網站有什麼好處呢?現今全球企業、商家上網規模已有數百萬個網站,而且成長的速度是以每星期3000多個網站在增加,若你的網站未被搜尋引擎收錄,那你的網站就像是開在荒島的LV旗艦店,即使你有在好的產品,也難以銷售。讓搜尋引擎為你建立一條康莊大道(索引)指引你潛在的客戶來到你的網站認識你的公司、產品進而完成採購的動作,是現今網路行銷的一門顯學課程。

不教生不教死
台灣俗語有句話如此說:「教生教死,沒人教你做生意。」,這是筆者二年多前,在與某位資訊相關協會理事長聊天時,他對筆者說的一句話。當時許多網路公司業務僅著重在接網頁設計或架設網站的案子,卻忽略網路行銷這塊大餅,或將網路行銷與垃圾郵件行銷畫上等號。雖該理事長所成立的公司有開設相關課程,但卻對這關鍵點輕言帶過,因為「教生教死,沒人教你做生意。」;筆者不具教生教死的功夫,也沒教你做生意的本事,但卻可借由介紹微軟ASP.NET Application Services提供的技術,使各位對網站行銷的作法其一有基本的體驗與了解,更進一步了解到微軟對於此處的著墨。

微軟ASP.NET Application Services的簡介
它是微軟提供的一組全新的應用程式服務,包含下列三種應用程式服務:

 Search Sitemaps:它是ASP.NET Futures為幫助搜尋引擎更容易收錄站台的一個方式,可借由設定配置檔的方式來使用此服務,動態產生出站台的導航資訊檔,通知搜尋引擎,關於您網站中有哪些可供檢索的網頁,它是一份專為站台導航的特殊標準XML檔案。
 Search:能夠透過一組商業級的搜尋引擎API(Google、Live Search)或自訂的搜尋提供者,讓開發人員可以為自己的ASP.NET應用程式加入搜尋服務。
 Diagnostics:它可以補捉瀏灠器中JavaScript錯誤以及將它們回報給伺服器端ASP.NET網路服務程式碼,使其將客戶端的例外完整記錄於錯誤事件記錄或資料庫中,以利事後分析與偵錯,唯本篇將重心放於與搜尋引擎相關的部分,故此服務詳細介紹請參考相關資料。


在開始討論ASP.NET Application Services的Search Sitemaps前,我們先說明何為Sitemaps?

什麼是 Sitemaps?
二年多前由Google提出的Sitemaps格式在2006年11月15日被Yahoo!與Microsoft正式宣告支援採用,成為三大搜尋引擎的統一搜尋指引標準,在今年紐約的搜尋引擎大會中Ask.com也宣布加入這個標準協定,其這些目的是為了讓各搜尋引擎可以更容易且更精確的找到所要的網站,它是利用web crawl(網路搜尋)、Web Spider(網路蜘蛛),篩選出更符合使用者所需的搜尋結果,故網站管理者將可利用更簡單、整合性的方式提供內容及詮釋資料給搜尋引擎,對搜尋引擎而言,對比起從首頁進入尋找,Sitemaps可以讓搜尋引擎更有效簡易的紀錄、更新、收錄網站的頁面。雖然如此,但目前還沒有一個搜尋引擎準備放棄從首頁進行搜尋紀錄網頁的行為,Sitemaps的角色是可以輔助讓搜尋更有效率。
Sitemaps其實有點類似RSS或者Atom,只不過它不像RSS或Atom描述的是最近的更新內容,而是整個網站的地圖,主要用來描述網站URL及與各URL相關的其他中繼資料(上次更新日期、變更頻率,以及相對於網站中其他URL的重要性),可讓網站管理員易於通知搜尋引擎關於網站中有哪些可供檢索的網頁,使搜尋引擎能夠更有效地檢索該網站。但使用Sitemaps 通訊協定並不保證網頁會出現在搜尋引擎中,但它能夠協助網頁檢索器更完整地檢索您的網站。搜索引擎如Google是支援Sitemaps的,通過Google Webmaster Tools(以前叫做Google Sitemaps)你可以提交你的網站的Sitemaps,以便Google更好地索引你的網站。

Sitemaps XML格式
Sitemaps 通訊協定格式是一份專為站台導航的特殊XML標記所組成的檔案。檔案本身亦必須使用UTF-8編碼,且所有資料值都必須是實體逸出(註1),它必須,如程式碼1:

 以< urlset>標記做為起始開頭,並以< /urlset>標記做為結束結尾。
 指定< urlset>內的名稱領域(通訊協定標準),即http://www.sitemaps.org/schemas/sitemap/0.9。
 讓每個 URL 中包含一個< url> 項目做為母層 XML 標記。
 在每個 < url> 母層標記包含一個 < loc> 子層項目,為網頁的URL。

註1:如同所有的 XML 檔案一樣,下表所列字元的任何資料值 (包括 URL),都必須使用實體逸出碼。

實體逸出碼


程式1:XML Sitemaps格式範例


而< lastmod>、< changefreq>、< priority>標記為選擇性標記,其中< lastmod>為檔案的最後修改日期,採用W3C日期時間格式,可省略時間的部份;< changefreq>為網頁可能變更的頻率,分為always、hourly、daily、weekly、monthly、yearly、never七種頻率模式;< priority>為此URL的優先順序,只是相對於您網站上的其他 URL,其有效值的範圍為0.0~1.0,預設為0.5。
至此我們已了解何為Sitemaps與Sitemaps的格式,接下來讓我們來看一下ASP.NET Futures的作法。

ASP.NET Futures產生Sitemaps的作法
在ASP.NET Futures之前,如果要為所屬的ASP.NET網站增加Sitemaps,除第三方提供的工具外,一般有二種較常見的實作方法,一種是讀取Web.sitemap來產生Sitemaps檔案,另一種是借由讀取網站整個目錄檔案來產生Sitemaps檔案,筆者早期採用後者的方式,建立站台的Sitemaps。
而ASP.NET Futures也提供二種方式,其一是借由AspNetSiteMapSearchSiteMapProvider類別直接在配置檔內指定即可依Web.sitemap來產生Sitemaps,另一是借由繼承DynamicDataSearchSiteMapProvider類別覆寫DataQuery方法來動態產生我們要的Sitemaps,此二者類別皆是繼承自Microsoft.Web.Preview.Search.SearchSiteMapProviderBase基底型別。接下來讓我們看一下如何實作,首先,你還是需要有ASP.NET Futures開發環境(建置方式請參考RunPC 165期P205)後,新增一個網站,新網站範本如圖一請選擇建立ASP.NET Futures AJAX Web Site範本,該範本會自動加入Microsoft.Web.Preview.dll參考,如圖二所示,因為第一種實作方式是要借由AspNetSiteMapSearchSiteMapProvider類別來讀取Web.sitemap檔案來產生Sitemaps,所以接著在專案中加入網站的Web.sitemap檔案,緊接著於Web.config配置檔內加入程式2指定使用到的Provider與Provider名稱(FromWebsitemap)和它的Handler,即可透過http://xx.xx.xx/xx/SearchSiteMaps.axd?sitemap=FromWebsitemap,讀取我們網站的Web.sitemap來產生該網站Sitemaps,結果如圖三所示;眼尖的讀者可能發現到Sitemaps協議中標記為選擇性標記的< changefreq>、< priority>這二者都未出現,而< lastmod>僅出現在第一個節點是因為< lastmod>與< url>皆可自動產生,唯需有對應至該專案網頁才可自動取出最後修改日,此範例僅有Default.aspx網頁,故僅有此節點有最後修改時間,而此三者可於Web.sitemap檔中的siteMapNode中加入lastModified、changeFrequency、priority屬性(Attribute)即可產生對應的標記節點,如圖四所示。


圖一 建立ASP.NET Futures AJAX Web Site專案。


圖二 自動加入Microsoft.Web.Preview.dll參考。


程式2:專案配置檔


圖三 AspNetSiteMapSearchSiteMapProvider類別產生Sitemaps結果。


圖四 指定屬性(Attribute)產生對應的標記節點Sitemaps。


了解借由AspNetSiteMapSearchSiteMapProvider類別來讀取Web.sitemap檔案來產生Sitemaps方式後,接著讓我們來看如何借由繼承DynamicDataSearchSiteMapProvider類別與覆寫DataQuery方法來動態產生我們要的Sitemaps,首先於專案總管上選擇專案加入[App_Code]的ASP.NET資料夾,於該資料夾內加入一類別檔SupplierSiteMapData,程式碼內容如程式3所示,SupplierSiteMapData類別是繼承DynamicDataSearchSiteMapProvider,再覆寫DataQuery方法,該方法以迴圈方式動態產生十筆供應商資料,實際可能連結至資料庫取回要傳回的資料,當然也可以透過LINQ來篩選資料,該方法傳回型態為IEnumerable;接著進行配置檔的設定,於< providers>內加入
< add name="Supplier" type="SupplierSiteMapData, App_Code" targetUrl="Supplier.aspx" />
修改圖三的FromWebsitemap為Supplier,瀏灠結果為圖五,出現十筆供應商資料的Sitemaps,而下表一為各對應的屬性(Attribute)與說明;於< providers>內加入
< add name="Supplier2" type="SupplierSiteMapData, App_Code" targetUrl="Supplier.aspx" queryStringDataFormatString="SName={0}&SID={1}"
queryStringDataFields="SupplierName,SupplierID" />
修改圖三的FromWebsitemap為Supplier2,瀏灠結果為圖六所示,網頁參數的格式改變。

程式3:SupplierSiteMapData類別程式


圖五 十筆供應商資料的Sitemaps結果圖。


表一 自訂產生Sitemaps屬性表


圖六 網頁參數的格式改變結果。

學會利用ASP.NET Futures產生Sitemaps的作法後,接著讀者可將產生的Sitemaps透過Google Webmaster Tools(https://www.google.com/webmasters/sitemaps)提交至Google、亦可以透過Yahoo的Site Explorer(https://siteexplorer.search.yahoo.com/)提交至Yahoo,而MSN只能透過MSN Submit URL (http://search.msn.com/docs/submit.aspx)提交URL至MSN。

3 則留言:

匿名 提到...

大大說到的網路行銷,sitemap是其中一種作法,是嗎?網路行銷最近好像蠻熱門的,關於asp.net在網路行銷上還有什麼作法呢?請不嗇指教,^^

匿名 提到...

不好意思,大大什麼是SEO?

MLChen 提到...

Jack好像對網路行銷蠻有興趣的,它的範圍比較廣,舉凡:搜尋引擎行銷、顯示廣告行銷、電子郵件行銷、會員行銷、互動式行銷、部落格行銷、與病毒式行銷都是喔!它的定義可參考:http://zh.wikipedia.org/wiki/網路行銷。
而在ASP.NET的作法,最主要就是搜尋引擎友善性,這麼說好了,現在我們一直在強調使用者體驗、使用者友善性,這些是針對人的,而搜尋引擎友善性它就是針對搜尋引擎,而產生sitemap是方便它可以知道我們ASP.NET的站台有哪些網頁。
SEO定義http://zh.wikipedia.org/wiki/SEO,它是Search Engine Optimization的簡稱,一般我們針對SEO在ASP.NET上就有很多種作法了,如:URL Rewriting、友善分頁…等。下面是相關的參考網站與資料:
http://seodotnet.com/
http://www.codeproject.com/KB/aspnet/10_SEO_Tips.aspx
http://www.wwwcoder.com/tabid/68/type/art/parentid/457/site/6173/default.aspx
http://www.dotblogs.com.tw/dotjum/archive/2008/02/20/1088.aspx

加入書籤: MyShare HemiDemi Baidu Google Bookmarks Yahoo! My Web PChome Del.icio.us Digg technorati furludn bookmark 其他更多書籤

BOOKS:New and Upcoming