完成一個Web Application Server(2)(zt)
發(fā)表時間:2024-02-19 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]部署一個可以公布產(chǎn)品信息和價格的企業(yè)外部站點(diǎn)是實(shí)現(xiàn)這些需求的一個好方法。該站點(diǎn)很容易訪問,它可以給用戶立即提供產(chǎn)品定價信息。企業(yè)外部站點(diǎn)可以接觸公司的內(nèi)部信息系統(tǒng),從而獲得、計(jì)算或查找每個用戶對每個產(chǎn)品的特殊價格。它可以用一個注冊機(jī)制來幫助鑒定和授權(quán)用戶,這就避免了用戶相互看到他人的價格,而且它可...
部署一個可以公布產(chǎn)品信息和價格的企業(yè)外部站點(diǎn)是實(shí)現(xiàn)這些需求的一個好方法。該站點(diǎn)很容易訪問,它可以給用戶立即提供產(chǎn)品定價信息。企業(yè)外部站點(diǎn)可以接觸公司的內(nèi)部信息系統(tǒng),從而獲得、計(jì)算或查找每個用戶對每個產(chǎn)品的特殊價格。它可以用一個注冊機(jī)制來幫助鑒定和授權(quán)用戶,這就避免了用戶相互看到他人的價格,而且它可以公布由企業(yè)內(nèi)部應(yīng)用程序動態(tài)存儲或計(jì)算的價格,這樣價格就總是正確的、最新的。
雖然.NET沒有提供一個現(xiàn)成的(off-the shelf)企業(yè)外部網(wǎng)站,但它的確提供了一套好的工具和模塊來構(gòu)建一個企業(yè)外部網(wǎng)站。ASP.NET就是一個很好的用于構(gòu)建企業(yè)外部網(wǎng)的平臺,它比以前的運(yùn)用ASP和COM的Windows Distributed Internet Applications(DNA)平臺要好很多。不同于ASP和COM,ASP.NET提供了一個真正的面向?qū)ο蟮拈_發(fā)平臺,它使開發(fā)人員可以更容易地將顯示同邏輯分離開,極大地簡化了站點(diǎn)的開發(fā)和維護(hù)。開發(fā)人員也可以通過繼承運(yùn)用現(xiàn)有的ASP.NET對象的豐富的功能。
實(shí)現(xiàn)一個門戶UI
門戶用戶界面(UI)可能是實(shí)現(xiàn)企業(yè)外部網(wǎng)的最好的方法。在藝術(shù)級的門戶站點(diǎn)上,瀏覽器窗口中的“房地產(chǎn)”被分成包含特殊內(nèi)容或功能的象限或區(qū)域。你可以在諸如My Yahoo!和My MSN的公有門戶上看到這種類型的UI。
實(shí)現(xiàn)門戶UI上的每個區(qū)域或象限的代碼是從門戶代碼自身中分離出來的。換句話說,門戶站點(diǎn)被建成一個框架,在這個框架中,這些一塊塊的UI代碼被執(zhí)行。這些代碼塊有許多不同的名字,包括portlets、gadgets、components、和modules。
在J2EE世界中,人們正努力將portlet代碼標(biāo)準(zhǔn)化,使portlets可以互換,這樣任何支持標(biāo)準(zhǔn)的供應(yīng)商提供的portlets就可以在一個門戶站點(diǎn)上運(yùn)行了(見資源)。在.NET平臺上,ASP.NET在用戶控件中提供了類似于portlets或gadgets的功能。用戶控件不支持portlet標(biāo)準(zhǔn),但是它們的確將強(qiáng)大的面向?qū)ο蟮脑瓌t引入到Web頁面的構(gòu)建中。Microsoft在一個稱為IbuySpy的基于ASP.NET的門戶站點(diǎn)中提供了一個例子來闡明這一點(diǎn),開發(fā)人員可以將這個站點(diǎn)作為如何構(gòu)建門戶站點(diǎn)的一個指南(見資源)。
為了公布價格,你需要實(shí)現(xiàn)為每個用戶計(jì)算或查找正確價格的商業(yè)邏輯。你可以用VS.NET和你選擇的.NET編程語言寫代碼來完成這一點(diǎn)。你將代碼寫到適當(dāng)?shù)挠脩艨丶校@樣信息就可以顯示在你的門戶UI中了。
你需要確定將哪些工具用于后端集成來得到你需要的價格數(shù)據(jù)。.NET提供了ActiveX Data Objects .NET(ADO.NET),它在關(guān)系數(shù)據(jù)庫中或在OLE DB和ODBC數(shù)據(jù)源中。對于深層的集成,Microsoft提供了BizTalk Server,它運(yùn)用XML提供了復(fù)雜的數(shù)據(jù)轉(zhuǎn)換和應(yīng)用程序集成工具。如果你可以從一個后端系統(tǒng)得到任何一種預(yù)期的輸出內(nèi)容,BizTalk Server可以讓你很容易地將輸出內(nèi)容轉(zhuǎn)換成你可以用于你的門戶站點(diǎn)的信息。
ADO.NET和BizTalk Server可以讓你從你的后端系統(tǒng)得到定價數(shù)據(jù),你可以用ASP.NET用戶控件和你喜歡的.NET編程語言將價格數(shù)據(jù)公布到一個門戶網(wǎng)站上。現(xiàn)在你需要確定只有你認(rèn)為恰當(dāng)?shù)娜瞬拍芸吹侥莻信息。
你必須擴(kuò)展.NET的本地的基于角色的安全性,使其可以用于一個B2B 企業(yè)外部網(wǎng)環(huán)境。例如,如果一個用戶是以“采購代理”的角色注冊的,你就不能確定那個采購代理是為哪個公司工作的。在一個價格公布應(yīng)用程序中,你只想將用戶A的價格顯示給來自A公司的采購代理,將用戶B的價格只顯示給B公司的采購代理。
為了看到用戶A的價格,一個用戶必須是A公司采購代理的角色,而且必須是A公司的雇員。這就需要將邏輯AND用于這些用戶的特性。不幸的是,對于.NET Framework的基于角色的安全性,沒有機(jī)制可以在角色上執(zhí)行邏輯AND。給一個用戶分配兩個角色(“采購代理”和“A公司的雇員”)也不行,因?yàn)榉峙鋬蓚角色只能讓用戶有權(quán)訪問采購代理或A公司雇員可以訪問的任何資源。給一個用戶分配多個角色,其效果同在那些角色之間運(yùn)用邏輯OR是一樣的。
運(yùn)用基于概要(profile-based)的安全性
對于一個價格公布應(yīng)用程序,你需要基于概要的安全性來確保價格只呈現(xiàn)給恰當(dāng)?shù)娜恕_\(yùn)用基于概要的安全性,每個用戶的多個特性,如身份、雇主、角色、頭發(fā)顏色、政黨等等,就可以用邏輯AND和邏輯OR結(jié)合起來,這樣你的企業(yè)外部站點(diǎn)上的每塊內(nèi)容和每個功能就可以得到恰當(dāng)?shù)陌踩粤恕?br>
.NET沒有提供基于概要的安全性;你必須構(gòu)建或購買。幸運(yùn)的是,.NET Framework是可以高度擴(kuò)展的,你不用費(fèi)什么力氣就可以將基于概要的安全性裝到你的.NET 應(yīng)用程序中。運(yùn)用一個關(guān)系數(shù)據(jù)庫服務(wù)器可以最好地實(shí)現(xiàn)該安全性,這個關(guān)系數(shù)據(jù)庫服務(wù)器包含一個用戶及其特性的數(shù)據(jù)庫。該數(shù)據(jù)庫也可以包含用來控制對企業(yè)外部站點(diǎn)的內(nèi)容和功能進(jìn)行訪問的安全信息。
將所有這些信息存在一個關(guān)系數(shù)據(jù)庫中,你就可以寫SQL存儲過程,確定一個特殊的用戶是否有權(quán)訪問一個特定的資源。數(shù)據(jù)庫可以很容易地返回一個特定用戶被授權(quán)的所有資源的清單。你可以用ASP.NET內(nèi)在的User對象將這個資源清單緩存起來,使企業(yè)外部站點(diǎn)必須執(zhí)行的頻繁的授權(quán)檢查的性能達(dá)到最佳。
將用戶信息存在一個關(guān)系數(shù)據(jù)庫服務(wù)器中也提供了另外一個好處。你可以擴(kuò)展這個數(shù)據(jù)庫用于XRM應(yīng)用程序開發(fā)。數(shù)據(jù)庫不僅可以跟蹤用戶的安全性,它也可以通過恰當(dāng)?shù)恼军c(diǎn)使用數(shù)據(jù),記錄用戶的商業(yè)問題、管理聯(lián)合項(xiàng)目和工作流、分析每個用戶是如何運(yùn)用你的企業(yè)外部站點(diǎn)的。
為了公布價格,你的企業(yè)外部站點(diǎn)也需要對產(chǎn)品信息進(jìn)行內(nèi)容管理和編目錄。公司提供和出售的產(chǎn)品是由一長串部件組成的,這些部件以許多種方式進(jìn)行配置和定制來滿足用戶的特殊需求。然而,如今的在線目錄系統(tǒng)只用一個簡單的價格清單出售完成的產(chǎn)品。
Microsoft Commerce Server主要針對小規(guī)模的零售B2C商務(wù),你需要擴(kuò)展它,使其可以用于更普遍的B2B環(huán)境,在這個環(huán)境中,產(chǎn)品更復(fù)雜,定價不統(tǒng)一,用戶的支付方式是通過交換定購單和發(fā)票完成的,而不是用信用卡。
如今產(chǎn)品的復(fù)雜性也要求你將在線產(chǎn)品目錄同一個文件管理系統(tǒng)結(jié)合起來。你在顯示目錄中的每個產(chǎn)品時,需要在它的旁邊用超鏈接將其連接到相關(guān)的文件。這樣,你就可以用復(fù)雜的信息來補(bǔ)充目錄中的每個產(chǎn)品了,比如用白皮書、規(guī)范、使用指南、文件列表、產(chǎn)品文件等等。文件管理系統(tǒng)可以使公司的域?qū)<液苋菀椎毓芾砟切┪募?br>
構(gòu)建文件庫
從其名稱上看,Microsoft Content Management Server(CMS)給人的印象是它在內(nèi)容管理方面很有用。然而,CMS只能讓你為一個網(wǎng)站創(chuàng)建一個設(shè)計(jì)模板,然后把內(nèi)容插到那個模板中。例如,如果你在線發(fā)布一個報(bào)紙,那么CMS會很有用,因?yàn)楦袷绞遣蛔兊模恍枰?jīng)常改變內(nèi)容就行了。但是它不適用于包含復(fù)雜產(chǎn)品的B2B目錄。
Microsoft SharePoint Portal Server(SPS)是另一個產(chǎn)品,它的名字聽起來很有希望,但是它不適用于B2B價格公布應(yīng)用程序。SPS是一個用于Microsoft Office應(yīng)用程序的服務(wù)器。Office 用戶可以將他們的文件保存在SPS中,而不用保存在他們的本地硬盤上,這就使公司內(nèi)部的其它Office用戶可以很容易地訪問這些文件。SPS不適用于價格公布應(yīng)用程序,而且它也還沒用于.NET。
因此,運(yùn)用.NET,你必須為任何價格公布類型的應(yīng)用程序構(gòu)建目錄和文件管理系統(tǒng)。對于產(chǎn)品目錄來說,你也許可以擴(kuò)展Commerce Server。對一個文件庫來說,你可以用文件系統(tǒng)、Microsoft Exchange或Microsoft SQL Server。在這些選項(xiàng)中,我建議使用SQL Server,因?yàn)樗且粋事務(wù)處理數(shù)據(jù)庫,能夠存儲二進(jìn)位的大的對象(blobs)以及元數(shù)據(jù)。很容易搜索基于SQL Server的內(nèi)容庫,用來存儲和檢索數(shù)據(jù)的編程接口很強(qiáng)大,有許多文件可以證明這一點(diǎn)。在SQL Server中實(shí)現(xiàn)一個文件庫不是一項(xiàng)瑣碎的工作,但它也不是一項(xiàng)很浩大的任務(wù)。
一旦你擁有了一個具有基于概要的安全性、后端系統(tǒng)集成、內(nèi)容管理系統(tǒng)和目錄系統(tǒng)的企業(yè)外部站點(diǎn),你就可以實(shí)施你的價格公布應(yīng)用程序了。我建議開始時,只實(shí)現(xiàn)一部分。這種想法是為了讓應(yīng)用程序的功能部分運(yùn)轉(zhuǎn)及實(shí)施起來,使你對.NET有一些體驗(yàn)。
最好開始時只實(shí)現(xiàn)具有基于概要的安全性和一些簡單的后端集成的門戶站點(diǎn)。例如,站點(diǎn)可以公布不包括產(chǎn)品信息的、個性化的、簡單的價格清單。一旦你實(shí)現(xiàn)了這個功能,你將會得到一些經(jīng)驗(yàn),就可以做好準(zhǔn)備繼續(xù)開發(fā)文件管理和/或目錄系統(tǒng)了。你也許也想在企業(yè)外部站點(diǎn)上實(shí)現(xiàn)Web services或電子郵件通知。對于這種復(fù)雜的應(yīng)用程序部分,.NET可以讓你每次呈現(xiàn)一點(diǎn)點(diǎn),使你在嚴(yán)格控制時間和金錢的投資的前提下,能夠逐步進(jìn)入Web application servers的多方面領(lǐng)域。
關(guān)于作者:
Lyn Robison是Implementing B2B Commerce with .NET: A Guide for Programmers and Technical Managers (Addison Wesley Professional, 2001)一書的作者。他的第一本書是Teach Yourself Database Programming with Visual C++ 6 in 21 Days (Sams, 1998)。聯(lián)系方式:Lyn@howtob2b.com。