基於消息的應用程序並不是一個新概念,但一直以來,從頭編寫這樣的應用程序都相當困難。我將在一系列三篇文章中討論一個建立異步消息應用程序的新平台,本文為第一篇,我將在其中說明基於消息的應用程序這一概念,以及一個建立包含在SQL Server 2005中的這些應用程序的新型基礎程序。
基於消息的應用程序介紹
處理消息的應用程序是大體上會成功的應用程序。實際上,大多數大型應用程序都應用了某種類型的消息處理。這種處理可能相當簡單,例如,把一個文件放在網絡共享中,以便另一個應用程序能夠處理這個文件;之後,你就可以檢查網絡共享,看文件是否得到處理。
雖然這不是一個非常復雜的消息應用程序,但其背後的概念是一樣的:提交一條消息,應用程序執行其工作。然後,再檢查看是否收到確認消息已得到處理的信息。這種處理方法擁有許多獨特的優點:
微軟消息隊列
現在你可能已經體會到基於消息的應用程序帶來的價值,你也許想知道為什麼你沒有經常聽說這種應用程序。主要的原因在於,開發這種應用程序是一個非常困難的任務。如果你計劃編寫自己的基於消息的應用程序,你要用大部分時間來開發處理消息的基礎架構。
好消息是,你不再需要開發自己的消息基礎架構。(MSMQ)提供一個開發這類應用程序的框架。它使得應用程序可以在不同種類的網絡間進行通信,並且需要保證消息傳送(guaranteed message delivery)、路由和可配置安全。MSMQ應用程序一般在以Visual Basic、C#或C++編寫的應用程序中開發,不過也可以用其它程序語言編寫。這些應用程序在處理通常需要幾步完成的任務時表現優異。這時,一個任務的每個步驟需要邏輯到達任務的下一個步驟,如一個業務工作流應用程序。
數據庫——不再只是用於存儲數據
過去20年來,我們對關系數據庫系統的依賴程度顯著增加。最初,存儲數據並對數據進行某種處理,是建立商業關系數據庫系統的主要目的。隨著關系數據庫系統的發展,其功能和復雜性的變化,它的主要用途已由單一數據存儲轉變為更加主流的商業智能目的、更加復雜的ETL處理、數據報告、數據通知;在SQL Server 2005中,它甚至已具備編寫在數據庫引擎中執行的.NET CLR語言代碼的能力。因此,完全可以肯定地說,數據庫引擎已不再僅用於數據存儲。
Service Broker
微軟認為,允許你在數據庫內建立基於消息的應用程序,這樣才有意義。Service Broker是SQL Server 2005中新添加的基礎程序,主要用於在數據庫引擎內建立基於消息的應用程序。這些應用程序在數據庫引擎內使用新的TSQL結構而開發。
Service Broker應用程序以松散連接的應用程序而開發,它具有高度可擴展性,並提供其它消息平台所不具備的功能,如消息組協調和鎖定。這些應用程序充分支持事務,並能夠跨越數據庫實例和服務器。
後續討論
在這個系列的下一篇文章中,我將介紹Service Broker應用程序組件,並探討它們之間如何交互以構成一個Service Broker應用程序模型。
Tim Chapman是肯塔基州路易維爾市一家銀行的SQL Server數據庫管理員,他有超過7年的IT行業經驗。他還通過了微軟SQL Server 2000和SQL Server 2005的認證。