ASP.NET網頁製作徹底研究

Download Report

Transcript ASP.NET網頁製作徹底研究

第18章 個人入口網站的建立
•
•
•
•
•
•
18-1入口網站的基礎
18-2 System.IO版全文檢索搜尋
18-3 網址搜尋引擎
18-4 Web Services的基礎
18-5 Google的Web Service
18-6 Amazon的Web Service
18-1入口網站的基礎
• 18-1-1 什麼是入口網站
• 18-1-2 搜尋引擎的種類
18-1入口網站的基礎
• 在網站內容的設計上,如果是建構「入
口網站」(Portal Site),例如:國外的
Yahoo!、微軟的MSN、國內的奇摩Kimo
(台灣Yahoo)、SinaNet新浪網、PC
HOME等網站,此時網站內容需要提供
眾多資訊,入口網站的各種搜尋功能就
是本章討論的主題。
18-1-1 什麼是入口網站
• 入口網站指的是連上Internet啟動瀏覽程
式後,瀏覽程式首頁第一個進入的網站,
這類網站提供多樣化資訊,例如:搜尋
引擎、新聞、股市行情、免費電子郵件
和聊天室等,也可能是一份結合報紙、
媒體和各類資訊的電子報,可以給網友
一個一次看完的網路資訊需求。
18-1-2 搜尋引擎的種類
• 網站搜尋引擎的目的是快速找尋所需的
資訊,可以分成兩種,如下所示:
– 網址搜尋
• 網址搜尋是找尋指定關鍵字的相關網站,其目的
是透過搜尋引擎找尋有興趣或所需資訊的網址,
這類搜尋引擎是使用者進入網路世界的窗口。
– 全文檢索搜尋
• 因為網站內容愈來愈豐富,使用者如何在網站中
快速找到所需的資料,網站導覽介面的設計和內
容的搜尋功能就成為網站必備的重要功能。
18-2 System.IO版全文檢索搜尋
• 18-2-1 遞迴函數的基礎
• 18-2-2 遞迴全文檢索搜尋的程式
18-2-1 遞迴函數的基礎
• 遞迴是一種程式設計技巧,可以在程序或函數
中呼叫自已本身,以便簡化程式碼的長度。
• 在撰寫遞迴的函數時有一些注意事項,基本上
遞迴函數需要擁有下列的條件,如下所示:
– 一個終止條件:能夠終止遞迴函數的執行,以資料
夾或目錄的範例來說,就是一個沒有子資料夾,只
有檔案的資料夾。
– 遞迴函式會縮小範圍:遞迴函數處理的範圍會愈來
愈小,直到終上條件,如此遞迴函數才能結束執行,
以資料夾來說,就是進入一層層的子資料夾,此時
其下的子樹將愈來愈小。
18-2-1 遞迴函數的基礎System.IO版的遞迴全文檢索搜
尋
• 遞迴程序完成網站全文檢索搜尋的功能,其特
點如下所示:
– 搜尋所有的子目錄:遞迴程序可以搜尋所有子目錄
檔案,程式能夠指定查詢的檔案類型和搜尋數目。
– 提供繼續查詢功能:如果找到的指定數目檔案並沒
有所需的資料,能夠從上一次最後查詢處,再往下
繼續查詢,直到全部查完為止。
– 多條件查詢:查詢的Web表單支援AND和OR邏輯連
結,可以處理一個條件以上的全文檢索查詢。
– 指定查詢範圍:能夠指定全文檢索的目標為網站的
虛擬目錄,不過搜尋時是以實際資料夾進行搜尋。
18-2-2 遞迴全文檢索搜尋的程
式
• 在建立好Web表單輸入查詢的關鍵字後,接下
來就可以撰寫遞迴全文檢索函數的ASP.NET程
式,以完成搜尋的工作,其流程圖如下所示:
取得表單的關鍵字條件陣列和搜尋目錄
使用搜尋目錄取得其下的子目錄和檔案
如果是檔案就搜尋關鍵字,如果是子目
錄遞迴呼叫自己移往下一層目錄
18-3 網址搜尋引擎
• 18-3-1 網址搜尋引擎的資料表
• 18-3-2 網址搜尋引擎的ASP.NET程式
18-3 網址搜尋引擎
• 入口網站的網址搜尋引擎可以搜尋符合
相關條件的網站或網頁,在實作上就是
使用資料庫儲存這些網址資訊,然後使
用SQL查詢指令搜尋資料表的記錄。
18-3-1 網址搜尋引擎的資料表WebSearch資料表
• Access資料庫【WebSearch.mdb】的資料表
WebSearch儲存網站的相關資訊,如下表所示:
欄位名稱
資料類型 大小 說明
SiteID
自動編號
SiteName
文字
50
網站的名稱
URL
文字
100
網站的 URL 網址
Description
備忘
Keywords
文字
網站的編號
網站說明
100
網站搜尋的關鍵字
18-3-1 網址搜尋引擎的資料表SQL指令
• SQL查詢指令搜尋所需的網址記錄,其程式碼
如下所示:
strSQL = "SELECT * From WebSearch WHERE SiteName LIKE '%" & _
keyword
strSQL &= "%' OR URL LIKE '%" & keyword & "%' OR Description LIKE '%"
strSQL &= keyword & "%' OR Keywords LIKE '%" & keyword & "%'"
18-3-2 網址搜尋引擎的
ASP.NET程式
• 程式範例提供網址搜尋和新增網址的兩
個ASP.NET程式,ASP.NET程式只是網頁
資料庫查詢和操作,如下所示:
– Ch18-3.aspx
• 建立搜尋的Web表單,在建立SQL指令字串查詢
資料表後,使用DataGrid控制項以分頁顯示搜尋
的結果。
– Ch18-3Add.aspx
• ASP.NET程式建立輸入網站資料的Web表單,使
用SQL的INSERT指令插入資料表。
18-4 Web Services的基礎
• 18-4-1 什麼是Web Services
• 18-4-2 Web Services應用程式架構
18-4-1 什麼是Web Services
• Web Services屬於一種企業級的應用程式,
可以透過Internet建立自動機制提供資料
交換和工作分享等資源共享的功能。
• Web Services應用程式提供一組通用服務,
可以同時提供多個客戶端(Client)使用,
這是一組使用XML標籤作為傳遞訊息的
函數呼叫,客戶端透過HTTP傳送函數呼
叫給伺服端,伺服端以HTTP將結果傳回
給客戶端。
18-4-2 Web Services應用程式架
構-說明
• Web Services提供一組通用的遠端函數呼
叫(RPC,Remote Procedure Calls),以
便客戶端可以使用這些函數呼叫執行所
需的服務,為了客戶端和伺服端能夠依
據相同的訊息格式和規格來傳遞資訊和
呼叫,這就是「SOAP」(Simple Object
Access Protocol),這是一種結合XML標
籤訊息和HTTP協定的通訊協定。
18-4-2 Web Services應用程式架
構-WSDL
• 「WSDL」(Web Services Description
Language)語言是用來描述Web Services
服務,這是一種XML基礎的語言,用來
定義Web Services和描述如何使用此Web
Services服務的語言。
18-5 Google的Web Service
• 18-5-1 申請Google的搜尋服務
• 18-5-2 使用Google搜尋服務的Web
Service
18-5-1 申請Google的搜尋服務
• 如果Web站台需要使用Google搜尋服務的
Web Service,首先我們需要成為Google
會員,並且取得使用搜尋服務的授權碼。
– 申請Google會員
– 取得Web Service的授權碼
– 取得GoogleSearch.wsdl
18-5-2 使用Google搜尋服務的
Web Service-步驟
• 在申請Google會員取得Web Service授權
碼和WSDL檔案後,接下來我們就可以
編譯WSDL檔案,建立ASP.NET程式使用
Google的Web Service。
– 編譯Web Service的C#類別檔
– 在ASP.NET程式使用Web Service的C#類別檔
案
18-5-2 使用Google搜尋服務的
Web Service-編譯C#類別檔
• 切換到WSDL檔案GoogleSearch.wsdl的資
料夾,執行下列指令編譯WSDL檔案,
如下所示:
D:\ASP.NET\Ch18>wsdl googlesearch.wsdl Enter
• 在按下Enter鍵後,稍等一下,可以看到
成功輸出GoogleSearchService.cs的C#類
別檔案。
18-5-2 使用Google搜尋服務的
Web Service-建立物件
• 將C#類別檔案視為ASP.NET的外部程式檔案,如
下所示:
<%@ Page language="vb" Src="GoogleSearchService.cs"%>
• ASP.NET程式以VB.NET語法使用Web Service,
而Google的Web Service就是建立
GoogleSearchService物件,如下所示:
Dim objGoogle As GoogleSearchService = New GoogleSearchService()
• 在使用GoogleSearchService建構子建立
GoogleSearchService物件,然後就可以使用
doGoogleSearch()方法取得Google的搜尋結果。
18-5-2 使用Google搜尋服務的
Web Service-執行搜尋
• 建立GoogleSearchService物件,然後使用方
法取得Google的搜尋結果,如下所示:
Dim objResult As GoogleSearchResult = objGoogle.doGoogleSearch( _
GoogleKey, searchText, recordNo, PageSize, False, "", False, "", "", "")
18-5-2 使用Google搜尋服務的
Web Service-顯示結果
• 每一個找到的網站是一個ResultElement
物件,可以使用For迴路取得每一個物件,
如下所示:
For i = 0 To objResult.resultElements.GetUpperBound(0)
……objResult.resultElements(i).summary.ToString()
……objResult.resultElements(i).URL.ToString()
…………
Next
18-6 Amazon的Web Service
• 18-6-1 申請Amazon的搜尋服務
• 18-6-2 使用Amazon搜尋服務的Web
Service
18-6-1 申請Amazon的搜尋服務
• Amazon圖書搜尋服務的Web Service類似
Google的Web Service,也需要先申請取
得Developer‘s Token 。
• 下載 Web Services Development Kit,取得
AmazonWebServices.wsdl檔案。
18-6-2 使用Amazon搜尋服務的
Web Service-編譯C#類別檔
• 切換到WSDL檔案
AmazonWebServices.wsdl的資料夾,執行
下列指令編譯WSDL檔案,如下所示:
D:\ASP.NET\Ch18>wsdl AmazonWebServices.wsdl Enter
• 在按下Enter鍵後,稍等一下,可以看到
成功輸出AmazonSearchService.cs的C#類
別檔案。
18-6-2 使用Amazon搜尋服務的
Web Service-建立物件
• ASP.NET程式只需將C#類別檔案視為外部程式檔
案,如下所示:
<%@ Page language="vb" Src="AmazonSearchService.cs" %>
• 只需知道此類別檔案定義的類別屬性和方法,就
可以在ASP.NET程式以VB.NET語法使用Web
Service,Amazon的Web Service就是建立
GoogleSearchService物件,如下所示:
Dim objAmazon As AmazonSearchService = New AmazonSearchService()
• 上述程式碼使用AmazonSearchService建構子建立
AmzoneSearchService物件。
18-6-2 使用Amazon搜尋服務的
Web Service-建立請求物件
• 建立搜尋Amazon請求的KewordRequest物
件,如下所示:
Dim objRequest As KeywordRequest = New KeywordRequest()
objRequest.keyword = searchText
objRequest.devtag = AmazonToken
objRequest.mode = "books"
objRequest.type = "lite"
objRequest.page = pageNo
18-6-2 使用Amazon搜尋服務的
Web Service-執行搜尋
• 在建立好KeywordRequest的搜尋請求物
件後,就可以使用AmzoneSearchService
物件的KeywordSearchRequest方法取得搜
尋結果,如下所示:
Dim objResult As ProductInfo = _
objAmazon.KeywordSearchRequest(objRequest)
18-6-2 使用Amazon搜尋服務的
Web Service-取得結果
• 取得的搜尋結果是ProductInfo物件,這是
Details類別的物件集合,每一個Details物件是
一個搜尋結果,可以使用For迴路取得每一個
搜尋結果的產品資料,如下所示:
For i = 0 To objResult.Details.GetUpperBound(0)
objRow = objDataSet.Tables("AmazonProducts").NewRow
objRow("ASIN") = objResult.Details(i).Asin.ToString()
objRow("ProductName") =
objResult.Details(i).ProductName.ToString()
………………
objDataSet.Tables("AmazonProducts").Rows.Add(objRow)
Next