查看單個文章
舊 2004-06-21, 02:11 PM   #11 (permalink)
mic64
註冊會員
 
mic64 的頭像
榮譽勳章
UID - 582
在線等級: 級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時
註冊日期: 2002-12-06
VIP期限: 2007-04
住址: MIB總部
文章: 412
精華: 0
現金: 499 金幣
資產: 499 金幣
預設

儲存session狀態資料導論


在這個部分,你將學習有關:

需要儲存session狀態資料的原因

用來儲存session狀態資料的方法

需要儲存session狀態資料的原因2


Session資料是你想紀錄並追蹤有關使用者或網站消費者的資訊。這些資訊的好處是:

你可以檢查某位使用者是否瀏覽過網站上的促銷網頁。如果它尚未瀏覽該網頁,你可以在目前的網頁顯示一個連結指向該促銷網頁。

你可以為目前正在使用網站的企業夥伴顯示可以接受的折扣比率。

你可以追蹤某位企業夥伴曾生產過的採購訂單數量。

你可以顯示某位企業夥伴在特定時間內曾發出過的訂單。

你可以列出使用者在特定時間內同意的付款計劃。

依據使用者為訂購的物品付款的時間,你可以計算出折扣比率。該折扣可以套用到準備提供給顧客的提早付款計劃。3

你可以顯示目前正在使用網站的所有客戶,或他們目前所在的網頁。

你可以在網頁中撰寫程式,以在使用者瀏覽網頁超過特定次數以上時執行,例如,你的網站是展示股票市場指數,如果網站的訪客在一個session中取用該網頁超過兩次,程式可以被觸發來展示相關股票市場的網頁。

你可以列出網站訪客在目前的session中曾經檢視過但尚未放入購物籃中的所有產品。

你可以利用Site Server Analysis工具來分析網站用途與拜訪過你網站的客戶的購買模式。

你可以顯示客戶之前的交易紀錄。

你也可以儲存session資料以備將來使用,例如為經常拜訪網站的訪客建立個人化的網頁。這將幫助你為使用者建立個人檔案並建立使用者的偏好設定。利用這項資訊,你可以顯示:
使用者感興趣的網頁。4

新的促銷方案及產品以吸引使用者。

例如,顧客第一次參觀FiveLakes網站並瀏覽與電腦網路相關的書籍。你可以儲存這項資訊並在使用者下次登入網站時將最新出版的網路書籍展示在他們面前。你可以提供連結至書籍出版商所提供的各項優惠措施。

同樣地,你可以將目前登入Ramona網站的企業夥伴的詳細資料顯示於Site Manager中。

你也可以傳送個人化的時事分析與電子郵件給使用者,並在使用者於一段時間之內未曾登入網站時傳送電子郵件通知使用者。

例如,你可以寄送電子郵件給使用者,內含網站上目前販售特定目錄的最新書目列表。你也可以傳送一份提醒通知書給訪客,提醒他們已有一段時間未曾瀏覽網站了。

紀錄session狀態資料的方法


session狀態是暫時的。傳統上,如果使用者登入一個ASP應用程式超過20分鐘未進行任何動作,該session將結束且資料會消失。你可以為網站指定時間期限,預設值是20分鐘。當使用者要求再度啟動瀏覽器,或於時間期限過後要求在另一個網頁執行任務時,系統將建立新的session。5
你可以利用以下的方法來儲存session狀態:

使用Cookies。

使用Active Server Pages(ASP)及Internet Information Server(IIS)所提供的session物件。

使用Active User Object(AUO)及Membership目錄。

以下詳細說明了每一種儲存session狀態資料的方法。

使用Cookies


cookie是一個小檔案,由網站的伺服器儲存在使用者的瀏覽器中,用來識別使用者。cookie可以持續存留在使用者的硬碟上或依據期限時間保留在瀏覽器的記憶體。每當使用者傳送要求使用ASP網頁,cookie就會被送到網站伺服器。6
你可以在cookie中存放使用者資訊。要將資訊寫入cookie及從cookie中讀取資訊,你可以使用Response與Request物件的Cookies集合。

要建立一個特定名稱的cookie並給定資料,你可以使用下列程式碼:

<%Response.Cookies ("EMailbox")= "John"%>
這段程式碼將建立名為Emailbox,擁有值為John的cookie。如果Emailbox cookie已經存在,程式會賦予cookie值John。

如果你想要使用cookie來追蹤後續的使用者session,你必須將cookie存在使用者的電腦上。為此,你需要使用Response物件的Expires屬性並將其值設定為未來的日期。

<%
Response.Cookies ("EMailbox")= "John"
Response.Cookies ("EMailbox").Expires = "December 31, 2000"
%>
要取得cookie的資料,可以使用Request.Cookies集合。例如,下面的程式將取得值John。7
<%=Request.Cookie ("EMailbox") %>
Cookie包含產生cookie的ASP網頁應用程式的路徑。例如,建立Emailbox cookie的.asp檔案是Mailapp應用程式的一部份。因此,Emailbox cookie包含了路徑\Mailapp。當使用者對Mailapp應用程式的.asp檔案提出要求,包含路徑\Mailapp的cookie將被送到網站伺服器。

你也可以在cookie中指定路徑。例如,若你希望在Emailbox cookie中指定路徑/Mailapp/Userprofiles/Data。下面的程式將幫助你完成這項工作:

<%Response.Cookies("Emailbox").Path = "/Mailapp//Userprofiles/
Data"%>
注意程式中使用了Response.Cookies集合的Path屬性來指定路徑。

使用cookie的限制是使用者的瀏覽器可能設定成不接收cookie。在這種情況下,你將需要另一種方式來追蹤使用者的資訊。方法之一便是使用Commerce.ShopperManager物件。

運用ASP與IIS所提供的Session物件8


另一種用來追蹤使用者資料的方法是使用session物件及一個由ASP伺服器所產生的唯一的SessionID。

SessionID是在使用者session開始時被建立,用來識別Session。當使用者在應用程式中要求使用ASP網頁時,session便會開始。SessionID會以cookie的方式存放在使用者的瀏覽器中,並在整個session的過程中使用。當使用者在應用程式中發出要求使用另一網頁,ASP會為SessionID cookie檢查HTTP要求標題以處理該要求。

一旦cookie被存放在使用者的瀏覽器中,相同的cookie會在整個session中被使用。然而,如果你重新啟動伺服器,或使用者關閉瀏覽器,則SessionID cookie會從RAM中被移除,且新的session會利用新的SessionID cookie來進行工作。

Session物件是在session開始時由IIS所建立,並儲存在網站伺服器的RAM上。當session被結束或放棄,它會從記憶體中被移除。


--------------------------------------------------------------------------------
注意
只有在瀏覽器設定成可以接受cookies時,Session物件才可以用來儲存使用者資訊。


--------------------------------------------------------------------------------

Session物件是一個內建的ASP物件,讓你可以為特定的session儲存使用者的資訊。這些使用者的資訊會以變數值的方式存在Session物件中。當使用者在一個應用程式中從一個網頁跳至另一網頁或瀏覽至另一個應用程式裡的.asp檔案,變數的值會維持。

要在Session物件中儲存變數,你需要在Session物件中建立一個含有名字的區段,並賦予其值。9
例如,你可以利用下面的程式建立一個名為FirstName的區段,並賦予其值。

<%
Session ("First Name") = "Jon"
%>
要取用存放在Session物件中的值,可存取那些內含名字的區段。例如,利用下面的程式碼你可以顯示登入網站的使用者名字:

Welcome <% = Session ("First Name") %>
你可以使用Session物件來儲存使用者的偏好喜愛,如螢幕解析度、網頁的文字或多媒體視覺效果。你可以將這些偏好喜愛存放在使用者存取應用程式時的第一個網頁中,然後在後繼的網頁中運用這些資訊。這樣讓你可以為使用者展示一個個人化的網站。

雖然使用Session物件是一種快速且容易的方法來儲存session狀態資料,但它受限於單一的網站伺服器。ASP session資訊會被存放在單一的網站伺服器上,且所有的網頁必須存放在相同的伺服器上以便能夠存取該資訊。如果你在網站伺服器的farm上實作網站,你便不能直接使用Session物件來存放及取用session資料。

在server farm中,對網站URL的要求將被重新導引至任何目前處於空閒的伺服器。要維持session資料,你必須確定session中所有的HTTP要求都會被重新引導至相同的伺服器。你可以藉著為Session_OnStart程序撰寫程式碼來完成這項工作。10
你也可以藉著使用Site Server所提供的AUO與Membership目錄來避免這類問題。

利用AUO與Membership目錄來儲存


Session資料


在這個章節,你將學習有關:

Membership服務在網站中所扮演的角色

Membership服務的元件

在網站中使用AUO11

設定AUO

建立一個Membership server實體

Membership服務在網站中所扮演的角色


Site Server讓你可以儲存使用者資料於資料庫中,並在ASP網頁中使用這些資料。

你可以儲存session與使用者的資料於Membership目錄中,並利用Active User Object或AUO來取用這些資料。在開始學習如何使用AUO與Membership目錄來儲存session狀態資料之前,讓我們先簡單的看看Microsoft Site Server所提供的Membership服務。

Membership服務讓你可以儲存與管理使用者資料。你可以建立使用者的個人檔案、驗證使用者身分,並控制網站內容的存取。你也可以顯示針對使用者進行個人化處理的網站內容。要實作其Membership特性,Site Server提供了Membership目錄與Membership Server。

Membership目錄的元件12


Membership目錄是一個中央資料儲藏庫,儲存了使用者資料以及位址目錄。它也可以儲存組織資料、指向內容來源的指標,以及其他可以用來追蹤使用者偏好的資訊。

Membership目錄擁有:

Membership目錄資料庫

目錄資訊樹狀結構(DIT)

動態資料

Membership目錄資料庫


Membership目錄資料庫可以是Microsoft Access或Microsoft SQL Server資料庫,由使用者資料、網站資料,以及結構(Schema)等構成。13
使用者資料由網站的使用者個人檔案、安全憑證與安全群組等組成。你可以使用註冊表單或scripts來收集使用者資訊。其中註冊表單讓使用者輸入資訊,scripts則負責擷取使用者的偏好喜愛。

網站資料是有關使用Membership目錄的應用程式,內含需要傳送資訊的使用者電子郵件信箱的列表,以及用來界定內容與重要性的階層結構的網站辭典等資訊。

結構定義了Membership目錄中所有物件的用法,並以物件集合的方式儲存在Membership目錄資料庫中。結構物件可以是下列兩種型式的任何一種:

類別結構物件定義了儲存在Membership目錄中的類別物件,以及和物件類別一起使用的屬性。

屬性結構物件定義了個別的屬性。這些屬性可以被指派給類別物件。

目錄資訊樹狀結構(DIT)


利用DIT,Membership目錄中的所有資訊可以用階層式結構來呈現。DIT是一個物件的樹狀結構,由container物件與leaf物件所組成。14
container物件擁有子物件。這些物件可以是leaf物件或是其他的container物件。

leaf物件則沒有子物件,並且代表Membership目錄中個別的元素。因此,DIT以leaf物件來表示使用者資料、群組資料、結構、指向內容來源的指標,以及資料庫的設定資料。

在DIT中,元素被視為組織的單位。較低的節點或組織的單位使用名詞「ou=」。組織的單位是一個container,可以包含其他的組織單位。

DIT的根節點代表組織,並使用名詞「o=」來表示。要指定組織的名字,請在建立Membership目錄時指定一個值到DirectoryName。隨後你將不能改變該值。

根據預設,DIT擁有下列組織:

Admin組織單元,包含結構物件與內容來源物件,以及網站辭典。結構物件定義了Membership目錄中使用者資料的結構,而內容來源物件則指定了網站裡建立索引的內容的來源;網站辭典則定義了用來為其他物件進行分類的詞彙。

Members組織單元包含了使用者物件。這些物件代表網站的使用者。這些使用者可以是cookie使用者或經過註冊的使用者。這個容器儲存了子包含物件,ou=Anonymoususer, 用來儲存cookie使用者的資料。15

Group組織單元包含了群組物件,其用以表達為管理以及安全性考量所建立的群組。任何你所新建的群組都會直接被加入container中。這個container擁有ou=NTGroup子包含物件來儲存直接對應到Microsoft Windows NT群組的群組資料。

Dynamic組織單元,代表目前連結到網站的使用者其前後不一致的資料。這個container中的物件是由Microsoft NetMeeting客戶端所建立,表示目前登入的使用者。這項資料將不會被寫入磁碟。

Application組織單元,包含支援應用程式如NetMeeting的資訊。

DistributionList組織單元,包含用來傳送資訊的電子郵件信箱,如newsletters的列表。

動態資料


動態資訊指的是有關session與目前登入網站使用者的關聯資訊。動態資料包含了像是使用者識別身份與其IP位址等資訊。它也將包含對應用程式獨有的資訊,如使用者瀏覽的網頁與放置在購物籃中的商品。

動態資料在session的期間存活。當session開始,區段隨同特定time-to-live(TTL)而建立。當TTL趨於零,區段會從Membership目錄中被移除。這樣確保session狀態資料不會因為session被捨棄或毀壞而累積。16
Membership Server


除了Membership目錄,Site Server還提供Membership Server來實作Membership服務。 Membership Server讓應用程式的伺服器端如Internet Information Server (IIS)能夠在網站中實作Membership特性。Membership Server提供服務幫助你使用與管理Membership目錄。你也可以確認並驗證帳戶存放在Membership目錄中的使用者。

Membership Server擁有下列元件:

認證服務。

Active User Object(AUO)。

Light-weight目錄存取協定(LDPA)服務。

Site Server Message Builder服務。17

每一個元件詳述如下。

認證服務


認證服務實作了網站的安全性。要達成這點,驗證服務必須執行下列工作:

以存放於Membership目錄的密碼來驗證使用者所輸入的密碼。

建立安全內文來支援Windows NT跨內容與應用程式的存取控制。

將Membership目錄中的群組對應到Windows NT Server目錄資料庫的群組。

認證服務也提供了從Membership目錄接收使用者的屬性,並將之存入快取記憶體,以改善ASP應用程式的存取效能。18
Active User Object (AUO)


AUO代表一組跨越所有資料來源的使用者屬性。它可以從多個Membership目錄與外部資料庫進行資料整合,並建立一份虛擬結構,讓任何的script或應用程式使用。

使用AUO,應用程式可以取得目前使用者的資料,不必實作程式碼來確認使用者、指定資料儲存的位址等。AUO可以讀寫資料來源並建立物件。同樣地,使用AUO的script或程式可以讀寫資料來源。

Light-weight目錄存取協定(LDAP)


這項服務為對Membership目錄進行平台獨立的取用提供了一個介面。你可以存取Membership目錄中保持不變或動態的資料。使用這項服務你可以從Membership目錄資料庫取得、編輯、加入或刪除區段。

你可以在相同的電腦上建立並設定LDAP服務為Membership目錄資料庫、應用程式伺服器端,或獨立的電腦。

要取用Membership目錄,那是一個經過驗證、與LDAP相容的應用程式可以登入LDAP服務。驗證服務會登入LDAP服務中取得資訊並提供Membership目錄的內容。19
Site Server Message Builder服務


Site Server Message Builder服務讓你可以藉著使用Direct Mail來傳送電子郵件給列於Membership目錄中Distribution List中的接收者。Direct Mail是一項由Microsoft Site Server針對個人化所提供的一項功能。

有關Direct Mail的討論已經超過本書的範圍。你可以參考網站文件以取得List Builder、Message Builder與Direct Mail的完整討論。

現在,讓我們看看如何在ASP應用程式中使用AUO來儲存session狀態資料。

在網站中使用AUO


要使用AUO來存取session的狀態資料,你需要在網站中設置AUO。要做到這點,需執行下列工作:

為Membership目錄建立一個資料庫。20
在被要求的網站伺服器上,建立含有AUO的Membership Server實體。
將需要儲存session資料所在的網站對應到Membership Server。
在Membership Server中設定AUO。
為Membership目錄建立一個SQL Server資料庫


你可以使用Microsoft Access或Microsoft SQL Server來宣告成為Membership目錄資料庫。你可以針對擁有較少使用者的小型網站使用Access資料庫。Access資料庫的最大規格為1GB。

至於那些擁有成千上百並註冊過的使用者服務網站,你應該選擇Microsoft SQL Server資料庫。


--------------------------------------------------------------------------------
注意
你無法將Access資料庫匯入SQL Server。如果你想要使用SQL Server來代替目前使用的Access資料庫,你必須重新來過一次。21

--------------------------------------------------------------------------------

建立Membership Server實體


安裝Membership Server於電腦上的軟體需求有:

Microsoft Windows NT Server 4.0版

Windows NT 4.0 Service Pack 3

Microsoft NT檔案系統(NTFS)

Microsoft Internet Explorer 4.01或更新版本

Windows NT 4.0 Option Pack22

Microsoft Site Server 3.0

當你執行Membership Server的自訂選項安裝,並從Knowledge選項中選擇 Personalization and Membership sub-option ,Membership Server與Membership目錄便會自動被建立。Membership Serve被稱為Intranet(Windows NT認證)Membership Server,並包含下列事項:

AUO

LDAP服務

Message Builder Service23

然而,這個Membership目錄使用Access資料庫。要使用SQL Server資料庫來建立Membership目錄資料庫,你需要建立一個新的Membership Server與一個新的Membership目錄。

將網站伺服端對應到Membership Server


要讓網站伺服器端或網站可以使用AUO來儲存session資料,你必須將伺服器對應到Membership Server實體。你可以對應一個或多個伺服端到單一Membership Server來存放並取用資料。然而,對於一個網站而言你只能擁有一個Membership Server。

在Membership Server上設定AUO


如前面所討論的,AUO可以存取多個資料來源並呈現一個虛擬結構供應用程式使用。如此讓應用程式可以與單一共通介面互相合作以存取使用者資料。


--------------------------------------------------------------------------------
注意
在大多數的情況中,Microsoft建議AUO應該只存取Membership目錄。


--------------------------------------------------------------------------------

要在網站中設定AUO,你需要:24
設定AUO供應者。(一個AUO供應者為AUO取得資料的資料來源。)

建立或選擇物件的類別來儲存session資料。該類別必須是Membership目錄所支援。例如,你可以使用由Site Server所提供的Membership類別。

設定AUO提供者


你可以設定一個或多個AUO來取得資料的來源。你可以指定下列工作以成為AUO提供者:

Membership目錄:你可以指定Membership目錄中的容器成為AUO提供者。提供者是Membership目錄的成員容器。

目錄服務:這些服務應該與LDAP、Novell Directory Service(NDS)、Netware 3.0(NWCOMP)、IIS或Windows NT的Active Directory Service等相容。

ODBC相容的資料庫:這些資料庫並不特別地安裝成Membership目錄,但是卻可以經過設定來儲存使用者資料。25

非ODBC資料庫:這些資料庫需要一個自訂的ADS提供者。

針對每一個AUO提供者,你需要設定下列選項:

設定提供者別名用來識別唯一AUO提供者。你只能使用字母與數字字元來當作提供者別名。

設定ADS路徑到資料容器指定提供者的型式、提供者的位置,以及一個位於目錄資訊樹狀結構的容器。這個容器包含了從提供者的而來的資料。Membership目錄的ADS路徑為LDAP://<servername:port>/o=<directoryname>/ou=members。

設定ADS路徑到結構類別物件,為提供者建立新的資料物件。對於Membership目錄,這個物件會藏匿在DIT的結構容器中,且其路徑為LDAP://<servername:port>/o= <directoryname>/ou=members。

設定ADS路徑的結尾部分指定將與AUO共同運作的物件。如果你指定使用者名稱作為結尾,AUO將以o=<directoryname>/ou=members/cn=user name的格式來尋找需要的使用者資訊。

除了設定一個AUO提供者,你還需要為儲存資料的物件建立類別。為此,你需要建立一個新的容器、新的類別及屬性。你將會在ASP網頁中使用容器、類別與屬性來存取session狀態物件。26
讓我們看看為FiveLakes網站設定AUO的範例。要完成這項工作,你必須執行以下任務:

在Membership目錄的根節點下建立一個名為 ou=SessionStateData 的容器。
在結構中建立一個型態為Integer,名為pageview的屬性。
建立一個名為SessionState,擁有屬性cn與objectclass的結構類別物件。
指定組織單元為父類別,這樣SessionState類別的實體就可以被建立。27
指定RDNAttribute的值為cn。
你必須為FiveLakes網站建立第二個AUO提供者。這個提供者的ADS路徑為<computername:LDAPport>/o=<directoryname>/ou=SessionStateData。

AUO提供者的結構路徑為<computername:LDAPport>/o=<directoryname>/ou=Admin /cn=Schema/cn=SessionState。

使用AUO來存取Session狀態資料


在這個部分,你將學習有關:

編輯ASP網頁來存取或儲存session狀態資料

搜尋Membership目錄的使用者資料28

編輯ASP網頁來存取或儲存Session資料


要存取或儲存session資料,你必須建立一個AUO的實體。你需要在任何你想儲存session資料的ASP網頁中加入程式碼。例如,你可以加入程式碼到應用程式的default.asp網頁,來為使用者將存取的預設網頁儲存session資料。

如果想要為使用者存取過的所有網頁儲存session資料,你可以建立一個小型的ASP檔案,內含程式負責在Membership目錄中使用AUO來儲存session狀態資料。然後你可以在應用程式的所有網頁中放入該檔案。

讓我們看看FiveLakes網站的default.asp網頁中負責儲存session狀態資料的程式碼。要建立AUO的實體,你必須建立一個UserObject的實體如下:

Set user = Server.CreateObject("Membership.UserObjects")
這段程式建立一個AUO,並利用目前使用網頁的使用者姓名對物件進行初步設定。你現在可以為固定的AUO提供者存取使用者的屬性。

至於動態的session資料,你必須使用動態的FiveLakes AUO提供者。你需要建立一個將儲存並取用資料的session物件。你也需要指定session的長度。在FiveLakes網站,AUO session狀態提供者的名稱為FiveLakesAUO,而session物件的類別則為SessionState。29
首先你將撰寫程式來檢查session物件是否已建立。如果沒有,你將使用下列程式碼建立物件:

If not IsArray(user("SessionState".objectclass) Then
User("SessionState").objectclass = Array("SessionState",
"dynamicobject")
end If
要為session指定其持續期間,你必須為物件指定time-to-live(TTL)的值。

User("SessionState").entryTTL = 600
一但你建立了session物件,你可以如同其他物件一樣為其屬性指定值並取用其屬性值。例如,你可以使用下面的程式來儲存使用者曾經使用過網頁的名稱到pagename屬性中。

User("SessionState").pagename = Request("SCRIPT_NAME")
要取得使用者曾經使用過的網頁名稱,你必須使用下列程式:30
pageAccessed = User("SessionState").pagename
你可以使用setInfo方法來確認更動,如下面程式所示:

user.setInfo
在Membership目錄中搜尋Session狀態資料


使用AUO,你可以為使用者或session屬性來搜尋Membership目錄的固定與動態資料。例如,你可以產生一個曾經登入網站或瀏覽過某網頁的所有使用者的列表。

在FiveLakes網站中,目前被使用網頁的名稱儲存在pagename屬性中。你可以使用ADO(Active Data Object)來查詢Membership目錄,並且產生一份使用目前網頁的使用者列表。

Set conMD = CreateObject("ADODB.Connection")
ConMD.Provider = "ADsDSOObject"
ConMD.Open "Ads Provider"
Querystring = "<LDAP://INSTRUCTOR:1003/o=FiveLakes/
ou=SessionStateData/>; (&(objectClass = SessionState)(currentPath="
& Request("SCRIPT_NAME") &"));ADsPath,cn;SubTree"
Set rs = conn.Execute( queryString, numRecords, 1 )
Do While Not rs.EOF
Response.Write rs("cn") & "<br>"
rs.MoveNext
Loop31
使用AUO及Membership目錄來儲存Session狀態資料所帶來的好處


session狀態資料是以動態資料的方式儲存於Membership目錄中。你可以設定AUO來為Membership目錄中的每一位使用者建立一個動態物件。該物件的屬性為session的屬性。 Membership目錄中的動態物件擁有一個TTL,在物件建立時被指定。一旦TTL到期,該動態物件會從Membership目錄中被移除。當使用者不再使用網站,並且已超過TTL的時間,這種情況就會發生。

當動態物件存在時,並有使用者瀏覽網站,該物件會更新且session會重新被建立。

使用動態物件的好處是你可以為實作於Web平台上的網站儲存使用者的session狀態資料。在Web平台上,使用者可能存取存放於不同伺服器的網頁。然而,全部網站的Membership目錄卻只有一個,且動態物件是存放於Membership目錄中。這樣做確保了每一次的session只有一個動態物件會被建立。

同樣地,即使使用者的要求被導引到不同的伺服器,使用者資料仍將維持。原因是所有網頁從Membership目錄中的動態物件取用資料,並且只將session資料寫入動態物件。

使用AUO提供了錯誤容忍。如果你使用Session物件來儲存session狀態資料,當網站伺服器當機時資料將遺失。然而,使用AUO來儲存session狀態資料於Membership目錄中,即使網站伺服器當機,資料還是會被保留。

實作10儲存Session狀態資料32


目標


在完成本實作之後,你將能夠:

安裝一個Membership Server並將之對應到網站伺服器。

為Membership Server設定AUO。

在您開始之前


先決條件


在開始實作之前,你必須具有:33
HTML與ASP scripting的基本知識。

熟悉Microsoft Internet Explorer與Microsoft Visual InterDev 6.0。

環境設定


在本實作中沒有額外的步驟需要設定。

4 預估完成所需時間:45分鐘

練習1:安裝Membership Server34


在這個練習中,你將為Ramona網站安裝一個Membership Server。該伺服器將使用SQL Server RamonaMD作為Membership目錄。

4 建立名為RamonaMD的SQL Server資料庫。

在 開始 選單上,指向 程式集35 ,然後選擇 Microsoft SQL Server 7.0 的 Enterprise Manager 。
在左邊的框格中,點選 SQL Server Group36 的「 + 」記號。
在左邊的框格中,點選<local server>的「 + 」記號。
在左邊的框格中,利用滑鼠右鍵點選37 Databases ,然後選擇 New Database 。
在 Newdatabase Properties -對話盒的38 Name 欄位,輸入『RamonaMD』,然後按下 確定 。
在左邊的框格中,點選 Databases 。39
在右邊的框格中,利用滑鼠右鍵點選 RamonaMD ,然後選擇 內容 。
在 RamonaMD Properties40 對話盒中,點選 Options 標籤頁。
選取 Truncate log on checkpoint 核取方塊,然後按下 確定41 。
關閉Enterprise Manager。
4 啟動MMC-based Administration

在 開始 選單中,指向42 程式集 ,然後選擇 Microsoft Site Server 的 Administration ,接著點選 Site Server Service Admin(MMC)43 。

4 建立Membership Server的實體

在左邊的框格中,點選 Personalization and Membership 的「+」記號。
利用滑鼠右鍵點選44 <localhost> ,選擇 新增 ,然後點選 Membership Server Instance 。
New Membership Server Wizard會啟動。點選45 下一步 。
建立Membership Server來儲存session資料。選取 Custom configuration 核取方塊,然後在Select Configuration Mode步驟中按下 下一步 。46
在Select Configuration Options步驟中,選擇元件安裝。選取 Active User Object(AUO) 與 LDAP Servic e核取方塊,然後按下 下一步 。47
在Select the Membership Directory步驟中,選取為Membership Server建立一個新的Membership目錄,然後點選 下一步 。
在Select the Authentication Mode步驟中,接受Membership Authentication的預設選項,然後點選 下一步 。
在Name the Membership Directory and Create Account步驟中,於48 Membership Directory name 欄位中輸入 RamonaMD 。
於 Password 欄位中輸入49 ramonaadmin ,然後點選 下一步 。
在Select the Database Type步驟中,選取 Microsoft SQL Database 核取方塊,然後點選50 下一步 。
在Type SQL Database Information步驟中,指定資料庫的位置。在 erver name 欄位中輸入『localhost』,並且在 Database name 欄位中輸入51 RamonaMD 。
在 SQL Server database user name 欄位中輸入『sa』,然後按下 下一步 。52
在Create Local LDAP Service步驟中,你需要為LDAP服務指定IP位址,與port號碼。接受預設值,然後點選 下一步 。
按下 完成 。
一個名為Membership Server #2的Membership Server會被建立。53
4 將Ramona網站對應至Membership Server

在 開始 選單上,指向 程式集 ,然後選擇54 Microsoft Site Server 的 Administration ,接著按下 Site Server Service Admin(HTML) 。
在Web Administration網頁中,點選55 Personalization and Membership 。
在左邊的框格中,點選 Web Site Mappings 。
在Web Site Mapping for <localhost>網頁,選擇 Default Web Site56 。
在 Map to 列表盒中,點選 Membership Server # 2 ,然後按下 Submit57 。
練習2:為網站設定AUO


假設你要在Ramona網站中儲存訂購的資訊。每當採購訂單產生時,你需要儲存訂單、訂購的書籍目錄與訂購數量等資料。

在這個練習中,你將為Ramona網站建立並設定AUO來儲存每一個session需要的資料。

4 建立容器來儲存採購行為

在Site Server控制台的左邊框格中,利用滑鼠右鍵點選58 Membership Directory Manager ,選擇 新增 ,然後按下 Container 。
會出現New Container Wizard。點選59 下一步 。
輸入『orderbehavor』作為容器的名字,然後點選 完成 。
4 為AUO建立屬性60

在左邊的框格中,雙擊 Microsoft Directory Manager 。
在左邊的框格中,雙擊 ou=Admin 。
在左邊的框格中,利用滑鼠右鍵點選61 cn=Schema ,選擇 New ,然後按下 Attribute 。
會出現New Attribute Wizard。點選62 下一步 。
在Type the Name of the New Attribute步驟中,於 Name field and Date of Order in the Display name 欄位中輸入 datefolder ,然後按下63 下一步 。
在Select the Attribute Syntax步驟中,選擇 Date/Time ,然後按下 完成 。64
重複步驟3-6建立 bookcategory 與 orderquantity 屬性。 bookcategory 的屬性型態為65 String ,而 orderquantity 的屬性則為 Integer 。
466 建立purchaseorder類別

在左邊的框格中,利用滑鼠右鍵點選 cn=Schema ,選擇 New 然後點選 Class67 。
會出現New Class Wizard。點選 下一步 。
在Type the Name of the New Class步驟中,指定 purchaseorder 為名稱並顯示類別的名稱,然後點選68 下一步 。
在Add Parent Classes步驟中,點選 Remove 移動組織使成為父節點之一,然後按下 下一步 。69
在Select the Attributes for the Class步驟中,點選 Add 。
在 Add Attribute 對話盒中,選擇 Date of Orde70 r屬性,然後按下 OK 。
重複步驟5與6以便加入 bookcategory 與 orderquantity71 屬性到類別中。
點選bookcategory屬性旁邊的方塊。
在 Naming attribute 列表盒中選擇 bookcategory ,然後按下72 完成 。
4 為Membership #2配置第二個AUO提供者

在左邊的框格中,利用滑鼠右鍵點選 Membership Server #2 ,然後選擇73 Properties 。
在 Membership Server #2 Properties 對話盒中,點選 Active User Object (AUO) Providers 標籤頁。74
點選 Add 。
會出現 Active User Object (AUO) Provider Properties 對話盒。在特定的欄位中輸入以下的資訊。

AUO alias:
RamonaAUO
Build Activer Directory Services (ADS) Path:
<localhost>:LDAPportnumber/o=RamonaMD/ou=members
(where the default value of LDAPportnumber is 1003)
Schema path: <localhost>:LDAPportnumber/o=RamonaMD/
ou=Admin/
cn=Schema/cn=
purchaseorder75
按下 OK 。
按下 OK 。
mic64 目前離線  
送花文章: 0, 收花文章: 21 篇, 收花: 61 次