摘 要 對基于SOA思想的Web服務技術進行研究,以“培訓信息管理系統”為設計案例,設計一個基于SOA的應用軟件系統,討論Web服務模型中的概念層、邏輯層和物理層的具體內容,分析Web服務架構的優點以及還需要解決的一些問題,并運用JSP的Web服務技術在系統原型上實現這種架構,為正在建設中的校園網管理系統的集成提供一個可參考方案。
關鍵詞 SOA;Web服務;管理系統模型
中圖分類號 G434 文獻標識碼 A 文章編號 1671-489X(2008)18-0044-02
當前,大學校園無論在教學管理還是行政管理方面都進行了多年的信息化建設。很多部門正在使用的管理系統可能是在不同時期、由不同廠商或自主開發的軟件,基于不同的軟硬件平臺和網絡結構環境。對于新、老系統之間的數據如何集成和共享,如何按需要實現它們之間的相互調用,成為一道難題。
SOA(SOA,service-oriented architecture)——面向服務架構,為解決以上問題提供了有效的技術解決方案。
1 基于SOA的培訓信息管理系統模型構建
1.1 基于SOA的系統架構方案面向服務的集成完全是開放的,能夠解決培訓管理系統的異構集成、互操作問題;另一方面,也是更重要的一點,SOA提供了一個服務協作和事務的業務流程自動化框架實現服務的編排。根據以上分析,從安全性、可集成性等方面考慮,本培訓信息管理系統架構如圖1所示。
培訓信息管理系統各用戶訪問系統形式如下:
1)培訓管理內部,如培訓部主任、系統管理員等使用三層C/S結構的客戶端程序來訪問數據庫,使用Windows版的應用程序;
2)各學院成人教育部門以及各學院任課教師可利用瀏覽器通過校園網訪問數據庫,屬于校園網B端用戶,使用Web版應用程序;
3)普通用戶、校外參加培訓的學員通過Internet訪問數據庫,瀏覽系統資源,屬于三層B/S架構的B端用戶,使用Web版應用程序;
4)把所有公用功能單元邏輯從系統中抽取出來,以Web服務的形式發布到校園網Web服務器的私有UDDI(Universal Description,Discovery and Integration),以便其他業務層或系統集成使用。
1.2 用Web服務實現的系統邏輯架構由Web服務的工作原理,結合三層分布式體系結構計算模型,設計出培訓信息管理系統的Web服務邏輯架構,如圖2所示。
培訓信息管理系統Web服務架構分為以下幾個層次。
1)表示層。表示層實際上是一個接入終端,可以是瀏覽器,也可以是用戶自己定制的應用程序等。其功能主要是發出應用請求,比如登錄、檢索、數據管理等。

2)Web服務層。該層是各種服務的集合,負責向表示層提供應用服務。
3)業務邏輯層,包括完成各種子功能的方法。
4)數據層,主要是支持各種異構的操作系統、異構數據庫系統、異構網絡系統。
2 基于SOA的培訓信息管理系統模型實現
培訓信息管理系統大量的業務體現在數據的操作中,尤其體現在對數據的添加、刪除、查詢等處理上。比如要查詢學員信息,只要通過SQL查詢就可以實現。如果把SQL所支持的存儲過程和Web 服務結合起來實現對信息的查詢,將使整個系統的開發速度與運行質量得到提高。現在大多開發工具都直接支持將SQL查詢和存儲過程轉化為Web服務。以下是開發的一個Web服務的示例,功能為對學員信息的查詢。
2.1 數據層的實現數據訪問管理是應用程序用來存儲、檢索和管理數據的方式,旨在優化性能,在本系統實踐中主要采用以下2個策略。

1)存儲過程的使用。數據訪問層對數據庫的訪問要盡量采用存儲過程的方式進行,該策略有效利用了SQL Server數據庫系統對性能優化的特點。在基于SOA的系統設計上,把存儲過程用在Web服務的設計中,同樣能夠簡化程序的設計,隱藏系統內部的細節,并提高系統的靈活性。
2)在JSP中使用JDBC訪問數據庫。數據庫管理系統中主要操作對象是數據,因此優化數據的操作設計對于系統整體性能的提高起著積極的作用。JDBC API為Java開發者使用數據庫提供統一的編程接口,它由一組Java類和接口組成。
2.2 業務層的實現通過Web服務協議可暴露應用程序的一個Web方法。以下程序清單定義了一個接口,它用來暴露一個EJB方法,該方法列出符合查詢條件的學員記錄。該接口擴充了遠程接口,并將selectstudent()方法標記為拋出RemoteException異常。接口定義了一個方法,該方法將查詢到的學員記錄作為字符串返回。
一個查詢功能的Web服務接口(Service.java)
Package wsexampls;
Import java.rmi.*;
public interface Service extends Remote
{ public String[] selectstudent(String List) throws RemoteException; }
2.3 表示層的實現表示層實現的任務實質是調用服務程序。對于客戶端程序的服務調用,需先給客戶端工程添加Web引用,實質上就是將Web Service的代理類對應的DLL文件導入客戶端。完成添加代理類后,即可通過調用代理類來調用Web 服務。主要有通過創建Web 服務中定義類的實例、調用類的方法等完成。
下例說明表示層完成服務調用的實質性工作:
1)添加Web引用;
2)StudentGetSet GETSET=new StudentGetSet()‘創建類的實例,本例為GETSET;
3)list =GETSET.selectstudent(StudentId)‘調用類的方法,本例為selectstudent()。
由于采用Web 服務中間層,客戶端不直接操作數據庫,提高了系統的安全性和可靠性。同時,由于對Web服務的訪問(使用SOAP協議訪問)可以穿透防火墻,所以Web 服務有較好的可復用性。例如將學員基本信息查詢功能整合到其他系統中時,只需開發客戶端程序,并調用完成學員信息查詢的Web 服務即可。
3 結束語
由于目前Web服務技術還在發展中,筆者只對與本課題應用的相關部分進行學習和研究。本課題所開發的Web服務系統還不完整,只是以一個簡單Web服務為原型示例,為整個系統的開發提供一個參考模型,做一些基于SOA技術上的準備。