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