明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

完成一個Web Application Server(2)(zt)

[摘要]部署一個可以公布產品信息和價格的企業(yè)外部站點是實現這些需求的一個好方法。該站點很容易訪問,它可以給用戶立即提供產品定價信息。企業(yè)外部站點可以接觸公司的內部信息系統(tǒng),從而獲得、計算或查找每個用戶對每個產品的特殊價格。它可以用一個注冊機制來幫助鑒定和授權用戶,這就避免了用戶相互看到他人的價格,而且它可...
部署一個可以公布產品信息和價格的企業(yè)外部站點是實現這些需求的一個好方法。該站點很容易訪問,它可以給用戶立即提供產品定價信息。企業(yè)外部站點可以接觸公司的內部信息系統(tǒng),從而獲得、計算或查找每個用戶對每個產品的特殊價格。它可以用一個注冊機制來幫助鑒定和授權用戶,這就避免了用戶相互看到他人的價格,而且它可以公布由企業(yè)內部應用程序動態(tài)存儲或計算的價格,這樣價格就總是正確的、最新的。

雖然.NET沒有提供一個現成的(off-the shelf)企業(yè)外部網站,但它的確提供了一套好的工具和模塊來構建一個企業(yè)外部網站。ASP.NET就是一個很好的用于構建企業(yè)外部網的平臺,它比以前的運用ASP和COM的Windows Distributed Internet Applications(DNA)平臺要好很多。不同于ASP和COM,ASP.NET提供了一個真正的面向對象的開發(fā)平臺,它使開發(fā)人員可以更容易地將顯示同邏輯分離開,極大地簡化了站點的開發(fā)和維護。開發(fā)人員也可以通過繼承運用現有的ASP.NET對象的豐富的功能。

實現一個門戶UI
門戶用戶界面(UI)可能是實現企業(yè)外部網的最好的方法。在藝術級的門戶站點上,瀏覽器窗口中的“房地產”被分成包含特殊內容或功能的象限或區(qū)域。你可以在諸如My Yahoo!和My MSN的公有門戶上看到這種類型的UI。

實現門戶UI上的每個區(qū)域或象限的代碼是從門戶代碼自身中分離出來的。換句話說,門戶站點被建成一個框架,在這個框架中,這些一塊塊的UI代碼被執(zhí)行。這些代碼塊有許多不同的名字,包括portlets、gadgets、components、和modules。

在J2EE世界中,人們正努力將portlet代碼標準化,使portlets可以互換,這樣任何支持標準的供應商提供的portlets就可以在一個門戶站點上運行了(見資源)。在.NET平臺上,ASP.NET在用戶控件中提供了類似于portlets或gadgets的功能。用戶控件不支持portlet標準,但是它們的確將強大的面向對象的原則引入到Web頁面的構建中。Microsoft在一個稱為IbuySpy的基于ASP.NET的門戶站點中提供了一個例子來闡明這一點,開發(fā)人員可以將這個站點作為如何構建門戶站點的一個指南(見資源)。

為了公布價格,你需要實現為每個用戶計算或查找正確價格的商業(yè)邏輯。你可以用VS.NET和你選擇的.NET編程語言寫代碼來完成這一點。你將代碼寫到適當的用戶控件中,這樣信息就可以顯示在你的門戶UI中了。

你需要確定將哪些工具用于后端集成來得到你需要的價格數據。.NET提供了ActiveX Data Objects .NET(ADO.NET),它在關系數據庫中或在OLE DB和ODBC數據源中。對于深層的集成,Microsoft提供了BizTalk Server,它運用XML提供了復雜的數據轉換和應用程序集成工具。如果你可以從一個后端系統(tǒng)得到任何一種預期的輸出內容,BizTalk Server可以讓你很容易地將輸出內容轉換成你可以用于你的門戶站點的信息。

ADO.NET和BizTalk Server可以讓你從你的后端系統(tǒng)得到定價數據,你可以用ASP.NET用戶控件和你喜歡的.NET編程語言將價格數據公布到一個門戶網站上。現在你需要確定只有你認為恰當的人才能看到那個信息。

你必須擴展.NET的本地的基于角色的安全性,使其可以用于一個B2B 企業(yè)外部網環(huán)境。例如,如果一個用戶是以“采購代理”的角色注冊的,你就不能確定那個采購代理是為哪個公司工作的。在一個價格公布應用程序中,你只想將用戶A的價格顯示給來自A公司的采購代理,將用戶B的價格只顯示給B公司的采購代理。

為了看到用戶A的價格,一個用戶必須是A公司采購代理的角色,而且必須是A公司的雇員。這就需要將邏輯AND用于這些用戶的特性。不幸的是,對于.NET Framework的基于角色的安全性,沒有機制可以在角色上執(zhí)行邏輯AND。給一個用戶分配兩個角色(“采購代理”和“A公司的雇員”)也不行,因為分配兩個角色只能讓用戶有權訪問采購代理或A公司雇員可以訪問的任何資源。給一個用戶分配多個角色,其效果同在那些角色之間運用邏輯OR是一樣的。

運用基于概要(profile-based)的安全性
對于一個價格公布應用程序,你需要基于概要的安全性來確保價格只呈現給恰當的人。運用基于概要的安全性,每個用戶的多個特性,如身份、雇主、角色、頭發(fā)顏色、政黨等等,就可以用邏輯AND和邏輯OR結合起來,這樣你的企業(yè)外部站點上的每塊內容和每個功能就可以得到恰當的安全性了。

.NET沒有提供基于概要的安全性;你必須構建或購買。幸運的是,.NET Framework是可以高度擴展的,你不用費什么力氣就可以將基于概要的安全性裝到你的.NET 應用程序中。運用一個關系數據庫服務器可以最好地實現該安全性,這個關系數據庫服務器包含一個用戶及其特性的數據庫。該數據庫也可以包含用來控制對企業(yè)外部站點的內容和功能進行訪問的安全信息。

將所有這些信息存在一個關系數據庫中,你就可以寫SQL存儲過程,確定一個特殊的用戶是否有權訪問一個特定的資源。數據庫可以很容易地返回一個特定用戶被授權的所有資源的清單。你可以用ASP.NET內在的User對象將這個資源清單緩存起來,使企業(yè)外部站點必須執(zhí)行的頻繁的授權檢查的性能達到最佳。

將用戶信息存在一個關系數據庫服務器中也提供了另外一個好處。你可以擴展這個數據庫用于XRM應用程序開發(fā)。數據庫不僅可以跟蹤用戶的安全性,它也可以通過恰當的站點使用數據,記錄用戶的商業(yè)問題、管理聯合項目和工作流、分析每個用戶是如何運用你的企業(yè)外部站點的。

為了公布價格,你的企業(yè)外部站點也需要對產品信息進行內容管理和編目錄。公司提供和出售的產品是由一長串部件組成的,這些部件以許多種方式進行配置和定制來滿足用戶的特殊需求。然而,如今的在線目錄系統(tǒng)只用一個簡單的價格清單出售完成的產品。

Microsoft Commerce Server主要針對小規(guī)模的零售B2C商務,你需要擴展它,使其可以用于更普遍的B2B環(huán)境,在這個環(huán)境中,產品更復雜,定價不統(tǒng)一,用戶的支付方式是通過交換定購單和發(fā)票完成的,而不是用信用卡。

如今產品的復雜性也要求你將在線產品目錄同一個文件管理系統(tǒng)結合起來。你在顯示目錄中的每個產品時,需要在它的旁邊用超鏈接將其連接到相關的文件。這樣,你就可以用復雜的信息來補充目錄中的每個產品了,比如用白皮書、規(guī)范、使用指南、文件列表、產品文件等等。文件管理系統(tǒng)可以使公司的域專家很容易地管理那些文件。

構建文件庫
從其名稱上看,Microsoft Content Management Server(CMS)給人的印象是它在內容管理方面很有用。然而,CMS只能讓你為一個網站創(chuàng)建一個設計模板,然后把內容插到那個模板中。例如,如果你在線發(fā)布一個報紙,那么CMS會很有用,因為格式是不變的,只需要經常改變內容就行了。但是它不適用于包含復雜產品的B2B目錄。

Microsoft SharePoint Portal Server(SPS)是另一個產品,它的名字聽起來很有希望,但是它不適用于B2B價格公布應用程序。SPS是一個用于Microsoft Office應用程序的服務器。Office 用戶可以將他們的文件保存在SPS中,而不用保存在他們的本地硬盤上,這就使公司內部的其它Office用戶可以很容易地訪問這些文件。SPS不適用于價格公布應用程序,而且它也還沒用于.NET。

因此,運用.NET,你必須為任何價格公布類型的應用程序構建目錄和文件管理系統(tǒng)。對于產品目錄來說,你也許可以擴展Commerce Server。對一個文件庫來說,你可以用文件系統(tǒng)、Microsoft Exchange或Microsoft SQL Server。在這些選項中,我建議使用SQL Server,因為它是一個事務處理數據庫,能夠存儲二進位的大的對象(blobs)以及元數據。很容易搜索基于SQL Server的內容庫,用來存儲和檢索數據的編程接口很強大,有許多文件可以證明這一點。在SQL Server中實現一個文件庫不是一項瑣碎的工作,但它也不是一項很浩大的任務。

一旦你擁有了一個具有基于概要的安全性、后端系統(tǒng)集成、內容管理系統(tǒng)和目錄系統(tǒng)的企業(yè)外部站點,你就可以實施你的價格公布應用程序了。我建議開始時,只實現一部分。這種想法是為了讓應用程序的功能部分運轉及實施起來,使你對.NET有一些體驗。

最好開始時只實現具有基于概要的安全性和一些簡單的后端集成的門戶站點。例如,站點可以公布不包括產品信息的、個性化的、簡單的價格清單。一旦你實現了這個功能,你將會得到一些經驗,就可以做好準備繼續(xù)開發(fā)文件管理和/或目錄系統(tǒng)了。你也許也想在企業(yè)外部站點上實現Web services或電子郵件通知。對于這種復雜的應用程序部分,.NET可以讓你每次呈現一點點,使你在嚴格控制時間和金錢的投資的前提下,能夠逐步進入Web application servers的多方面領域。


關于作者:
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)。聯系方式:Lyn@howtob2b.com。