面向伺服器的快速應用程式開發(RAD)
Visual Studio .NET將極大地降低建立網路應用程式的複雜性。建立成功的網路應用程式的關鍵是將重點放在中介層上。商務邏輯和應用程式的大部份都出現在中介層伺服器上。Visual Studio .NET開放系統採用了快速應用程式開發(RAD)開年,Visual Basic開發人員已經習慣了快速地裝配基於Windows的使用者介面, 並將它應用於構建中介層對象。關鍵領域包括:
- 伺服器總管 (Server Explorer)
- 伺服器資源(Server Resources)
- 輕鬆地設定和部署基於伺服器的應用程式
- 在應用程式部署後,使用運行時跟蹤(Run-Time Tracing)對它們進行調試
Visual Studio .NET擁有開發人員成功地建立功能強大的中介層應用程式所需的所有工具。開發人員可以:
- 利用MSMQ(Microsoft Message Queuing)保證訊息的傳送和跨平台通訊。
- 將應用程式錯誤寫入到共用的事件記錄記錄中,或使用計劃任務安排某個組件在預定的時間啟用。
- 從網路上的任何一台電腦中讀取效能指數。
- 編寫當檔案系統變化時啟用和執行的組件。
- 直接將這個功能性拖放到他們的應用程式中,從而使得開發人員可以將重點放在商務問題上,而不是放在組件的組裝配合上。
伺服器總管 (Server Explorer)
編寫中介層組件的最大的一個挑戰是發現在商業網路上有哪些可用的應用程式服務。並且一旦被發現,它們將很難整合到你的應用程式中。
在Visual Studio 6.0中,啟用了Microsoft SQL Server和Oracle資料庫的發現功能。此外,Visual Studio可以都這些資料庫中的模式和資料進行處理。使用資料檢視(Data View)視窗,開發人員可以指向一個資料庫,然後將節點以深入研究資料庫的結構。Visual Studio還提供了一種修改資料庫結構的方法。例如,開發人員可以串連到 SQL Server以查看和修改表格、視圖和預存程序。
在Visual Studio的下一個版本中,Server Explorer從今天的資料檢視(Data View)又向前走了一大步,可以顯示整個電腦,包括資料庫、訊息佇列以及安裝在電腦中的所有其他伺服器元素。
圖1. 伺服器總管 (Server Explorer)
你可以將伺服器總管 (Server Explorer)中的某些資源添加到Visual Studio設計器中。當你將這些項目中的某個項目添加到自己的設計器中時,Visual Studio將自動建立一個引用你選定的特定資源的組件。例如,你可以選擇某個特定的訊息佇列,然後將其添加到組件設計器(Component Designer)中。Visual Studio將自動建立一個引用這個特定隊列的Message Queue組件。
你可以使用伺服器總管 (Server Explorer),在自己的Microsoft Windows服務上執行管理工作。這包括啟動、停止、暫停和繼續服務。伺服器旁邊的表徵圖將根據該服務的目前狀態變化。
預設情況下,伺服器總管 (Server Explorer)將把上一次的配置作為你的會話的一部分儲存,並在你下一次訪問伺服器總管 (Server Explorer)時重新開啟它。你還可以按名稱儲存特殊配置,並在它們之間進行切換。例如,你可以為軟體開發週期的每個階段設定一個專用的伺服器總管 (Server Explorer)配置。
組件設計器(Component Designer)允許進行拖放式程式設計
與表單設計器允許快速建立用戶端應用程式的方式相同,伺服器總管 (Server Explorer)提供了一種快速地、圖形化地建立伺服器端組件的方法。組件設計器(Component Designer)將RAD基於表單的程式設計概念應用到了建立中介層對象中-一種用於建立非可視化對象的可視化方法。現在開發人員無需編寫大量的伺服器端代碼,他們可以把將在伺服器上啟動並執行伺服器組件拖放到設計表面上,再使用屬性瀏覽器將它串連起來,然後雙擊,接著該對象的代碼將被開啟。
圖2. 組件設計器(Component Designer)
伺服器資源(Server Resources)
有保證的訊息傳遞和跨平台通訊
Microsoft Message Queuing使得開發人員可以通過發送和接收訊息,快速、可靠、同步地與應用程式通訊變得很容易。
MSMQ提供了:
- 與中斷連線的使用者一起建立應用程式的能力- 如當銷售人員在遠方工作時。
- 有保證的傳遞-例如,對於股票經紀人來說,如果他們的訂單輸入應用程式即使丟失一份訂單,都可能損失上百萬美元。
- 並發執行,處理多個工作請求。
- 自動將你的活動記入日誌,對於保留審計線索和恢複資料很有益。
- 到IBM MQSeries的串連,實際上它可以在從大型主機到AS/400的每個平台上運行。
開發人員需要能夠發送和接收訊息,建立訊息佇列,並管理這些訊息佇列。利用下一版本的Visual Studio,Server Explorer和MSMQ組件可以簡化執行任務。
通過將一個訊息佇列從伺服器總管(Server Explorer)拖放到組件中,該訊息佇列和訊息的預設數值允許開發人員使用下面的一行代碼發送簡單的訊息。
mq.Send "Hi Mom"
接收一條訊息就像下面一樣簡單。
message = mq.Receive
當開發人員在Visual Studio .NET中對MSMQ進行編程時,有兩種選擇:
- 要發送一條訊息,你需要將該訊息與一個訊息佇列(Message Queue)相關聯。這個對象允許開發人員直接與該隊列進行對話,並儘可能有效地發送訊息。
- 簡單地將現有的隊列拖放到一個組件中,以開始直接針對該組件進行編程。或者直接在Visual Studio中建立、刪除和重新命名隊列。
下一個步驟是提供要發送的資料。使用者可以在這個訊息佇列上調用發送方法,然後資料將發送到指定的隊列。
Dim mq as new MessageQueue ("//MyMachine/Queue1")mq.Send "This is the message"mq.Send 7 mq.Send myOrder
訊息佇列(Message Queue)組件將從自變數中擷取資料,接著將資料加入到訊息中,然後將訊息發送給指定的隊列。
將應用程式錯誤寫入到一個共用的事件記錄記錄中
用於Microsoft Windows NT和Windows 2000的應用程式定期地將警告和錯誤寫入到事件記錄記錄(Event Log)中。事件記錄記錄為Windows和應用程式提供了一個標準地、集中的方法來記錄重要的軟體和硬體事件。事件記錄記錄(Event Log)為查看日誌記錄提供了一個標準的使用者介面,並為檢查日誌記錄提供了一個編程介面。
在Visual Studio .NET中,開發人員可以將事件記錄記錄(Event Log)從伺服器總管(Server Explorer)拖放到組件中,然後編寫應用程式專用的代碼來讀寫事件記錄記錄(Event Log)。
還可以建立和編寫自訂事件記錄記錄。要做到這一點,只需從工具箱中拖動一個事件記錄記錄(Event Log)組件,接著為該日誌記錄指定一個隊列名稱,然後日誌記錄將自動建立。
最後,你可以在一條記錄被寫入到日誌記錄時運行代碼。例如,當一條錯誤記錄被寫入到應用程式記錄檔記錄時,將通知管理員。
使用計劃任務安排某個組件在預定的時間啟用
在預定的時間運行組件對於企業客戶來說是一項很重要的需求。企業按計劃經營。書店要在每個營業日結束時關閉。查賬需要每月進行。需要在每天的早晨提供詳細的報告進行分析。這些都是計劃任務的例子,這些都是自動處理髮生的場合。
多年來,Visual Studio已使得建立在Windows作業系統內部啟動並執行可執行檔和組件變得很容易。現在,Visual Studio允許使用者建立可以按預定的時間和間隔啟動並執行應用程式和組件。
例如,一個零售連鎖店可能會使用計劃組件。在商店關門時,商店資料庫的內容必須傳送給公司總部。每個商店內在指定時間運行某個計劃組件。該計劃組件檢查這一天的新的銷售情況,將它們打包,然後發回總部。 此外,每個商店在淩晨兩點進行存貨分析。低於某個指定閾值的商品將從經銷商那裡定購。
要使用計劃組件,可以將計劃事件(Scheduled Event)組件從工具箱拖放到組件設計器(Component Designer)中。一旦ScheduledEvent成為該組件的一部分,你就可以通過在屬性視窗中設定屬性來對其進行自訂。雙擊該組件填充在組件啟用時執行的代碼:
Public Sub SchdEvent1_OnScheduledEventReceive (EventSource as Object, e as ScheduledEvent)'User code goes here…End Sub
使用效能計數器(Performance Counters)從任何一台網路電腦中讀取效能指數
效能監控是指擷取和分析應用程式、服務和驅動程式提供的效能資料,以確定系統的瓶頸,並對系統和應用程式的效能進行調整的過程。Windows 2000和Windows NT提供了通過效能計數器和效能監控器(Performance Monitor)應用程式,對系統效能進行監控的方法。此外,效能監控器(Performance Monitor)可以在達到閾值時對計數器數值進行響應。例如,將事件寫入到事件記錄記錄中或關閉電腦。
Visual Studio .NET將提供一個組件,它可以很容易地建立新的計數器,讀寫任何效能計算機的數值。這個組件的一個用途就是報告每秒鐘處理的訂單數。一個商務對象有一個可以在部署後修改的屬性,用來開啟或關閉對處理每個訂單的計時。當負荷很重、輸送量減少時,管理員可以開啟這個工具,如何使用效能監控器(Performance Monitor)來確定應用程式的運行情況。如果管理員發現系統的負荷很重,並且應用程式不能足夠快地對訂單進行處理,可以對資源進行重新分配以提高效能。
要使用效能計數器(Performance Counter)組件,只需將它從伺服器總管(Server Explorer)中拖放到一個組件中,然後雙擊它編寫應用程式專用的代碼。
目錄監視器(Directory Watcher)在檔案系統發生變化時啟用
當今使用的一個常見的商用實踐是編寫長期啟動並執行應用程式,對檔案變化進行監控以取消商務過程。利用Visual Studio .NET目錄監視器(Directory Watcher)組件建立一個更加有效方法來完成此項工作非常容易。該組件對系統目錄變化通知進行監聽,並在目錄或目錄內的某個檔案發生變化是激發事件。
開發人員使用這個組件的一個例子就是FTP(File Transfer Protocol,檔案傳輸通訊協定)。設想有一個基於Web(網路)的新聞網站設立了一個FTP伺服器。來自世界各地的新聞記者都可以將他們的題材上傳到這個FTP伺服器上,目錄監視器(Directory Watcher)組件將使用電子郵件通知編輯。
簡單地將一個目錄監視器(Directory Watcher)組件從工具箱中拖出,然後設定確定該組件何時啟用的屬性即可。組件可以在目錄發生變化、被建立或被刪除,以及某個檔案被添加、重新命名或被刪除時啟用,然後執行代碼。雙擊該組件編寫在檔案或目錄事件發生時執行的代碼。
輕鬆地設定和部署基於伺服器的應用程式
企業管理員面臨著部署分布式應用程式組件,並在它們的生存周期內對它們進行管理的挑戰。組件開發商和解決方案整合商承擔著向管理員和開發人員提供足夠的資訊來推動應用程式部署的任務。在分布式應用程式模型中,目標是使組件開發商和整合商能夠非常容易地提供部署資訊,而不會犧牲管理員的模型的有效性。
部署的目標是很容易地將來自多種平台的解決方案或任意規模的項目或結構傳送給其他多種平台。Visual Studio .NET部署通過跨多平台和電腦工作解決了這個問題。它允許進行n層部署(即在.單一操作中,部署到多台目標電腦)。它還使得部署到網路(Web)伺服器和COM+伺服器變得很輕鬆。
建立跨越Windows DNA應用程式所有分層的安裝應用程式
開發人員常常需要部署一個分布式應用程式的全部3個分層,這些分層通常都是使用多種語言編寫的。利用下一個Visual Studio版本中新的部署工具,建立一個多層的安裝程式十分容易。
部署過程中使用自訂安裝程式(Installer)設定伺服器資源
將應用程式伺服器功能應用到中介層組件中將會產生對該伺服器的依賴性。開發人員可以建立一個組件,然後將一個訊息佇列(Message Queue)從工具箱拖放到一個類上。這個訊息佇列(Message Queue)將存在於這個開發人員的電腦上。但是,當部署這個應用程式時,如果這個隊列不存在則需要重新建立。Visual Studio .NET包括自訂安裝程式,可以確保依賴這些基於伺服器的資源可以在部署時建立。
圖3. 添加安裝程式(Add Installer)
在屬性(Properties)視窗中有一個連結,Add Installer,當點擊這個連結時,將會向一個包含訊息佇列安裝程式化(Message Queue Installer) 組件的項目中添加一個新類。訊息佇列安裝程式化(Message Queue Installer) 組件知道如何建立一個訊息佇列的細節。
在應用程式部署後,使用運行時跟蹤(Run-Time Tracing)對它們進行調試
跟蹤是允許開發人員對應用程式進行測試的一個特性。這樣的測試允許開發人員和管理員對所部署的應用程式的健康情況進行監控,而不是運行調試器。(有時使用調試器會隱藏錯誤,使效能和線程問題變得不明顯)。對於分布式的多層的應用程式來說,跟蹤是一個非常重要的監控和調試工具。這樣的應用程式可能會包含只有在重負荷和實際環境所固有的隨機性的情況下才會觀察得到。
理想情況下,開發人員可以在它們的生產代碼中包括開銷最小的(最多影響效能和大小的10-15%)跟蹤工具。當系統不能按預期執行時,他們可以在系統啟動並執行同時開啟用於生產代碼的跟蹤功能,然後確定問題。跟蹤功能允許開發人員在不打亂運行系統的情況下,將問題隔離,然後修正它們。
部署後使用動態屬性改變應用程式的功能性
使用生產網路(Web)應用程式的最常見的一個問題是,開發人員需要在網站啟動並執行同時改變應用程式的行為。Visual Studio .NET 提供了建立動態屬性的能力,可以在應用程式部署後對它們進行修改。實際上,這些屬性可以在應用程式運行時從XML檔案中檢索。開發人員可以很容易地修改這個檔案,以改變應用程式的行為,而無需編寫、編譯和部署新代碼。
動態屬性值可以在應用程式部署和應用程式運行時進行修改。你可以使用工具,入記事本或Visual Studio .NET中內建的XML編輯器,來編輯屬性和改變屬性值。動態屬性的一個例子是到資料庫的連接字串。如果這個應用程式將連接字串寫入程式碼到應用程式中,那麼在將應用程式從開發轉到測試再轉到生產時,開發人員需要重新編譯這個應用程式。通過將這個屬性設為"動態",連接字串值可以在應用程式部署後修改。當下一次應用程式運行時,將使用新的數值,從而將應用程式指向一個不同的資料庫而無需修改原始碼。動態屬性設定可以被項目中的多個屬性共用,這樣只須在一個位置更新共用的連接字串。
結論
Visual Studio .NET提供了發現機制來搜尋商業網路上的所有XML網路服務(Web service)、資料庫、訊息佇列、事件記錄記錄、效能計數器和其他伺服器資源。 此外,它允許開發人員將這些伺服器資源拖放到一個"可視類"上,開始以圖形化的方式進行程式設計。非常簡單地,這意味著Visual Studio .NET允許為伺服器進行快速應用程式開發。
分布式網路應用程式很難進行設定和部署。但是,利用Visual Studio中的新工具,微軟公司提供了一個安裝工具來分布一個分布式應用程式的所有分層。並且利用Visual Studio .NET中的新功能,開發人員可以將發布-部署調試和功能變化內建到他們的應用程式中。
摘錄於:http://www.microsoft.com/china/msdn/archives/others/vstudio/radserver.asp