999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于面向服務構架的在線學習系統模塊整合

2009-07-02 05:29:48葉海松
現代教育技術 2009年8期

葉海松

【摘要】文章分析了軟件整合的需求和面向服務構架的特點,論述了如何使用基于面向服務構架的方法對軟件進行模塊級別的整合,以達到模塊重用和降低開發成本的目標;并通過在Moodle的資源頁面中嵌入簡單的代碼調用另一平臺的評分模塊服務,提供了面向服務構架的整合實例。

【關鍵詞】軟件整合;面向服務構架;學習管理系統;Web服務

【中圖分類號】G40-057 【文獻標識碼】A 【論文編號】1009—8097(2009)08—0102—03

一 整合問題的產生

現代社會對軟件的需求不斷提高,單個的復雜系統所消耗的人力和物力資源急劇上升。為了對付持續改變的需求,軟件變得越來越復雜,而軟件使用者和開發者的持續投入,使得軟件的成本越來越高。在這樣的背景下,軟件整合,即用多個小系統的整合來代替一個超級復雜的單一系統的方法逐漸受到人們的重視[1]。

在上海師范大學教育技術系實施的“現代教育技術網絡課程平臺”項目中就遇到了這種情況。在有限的經費投入下,項目使用開源的學習管理系統Moodle在構建了一個在線學習平臺,Moodle能夠滿足我們大部分的需求,包括課程管理、用戶管理、資源管理、在線測試和使用報告等。但在用戶需求中有一條在Moodle的核心組件沒有提供,即對課程資源的投票評價功能(如圖1),項目要求能夠讓用戶對資源進行無記名的評分,然后提交結果,同時會看到總體的評分情況。

這個功能在另一套成熟資源庫平臺中,已有現成的功能模塊。但是這個資源庫并不是用PHP來實現的,而是使用ASP.NET實現的。如果按照Moodle的模塊設計接口,沒有辦法直接將已有的ASP.NET的模塊嵌入Moodle[2]。因此需要尋找一種能夠重復使用既有代碼又能在兩個系統中保持松耦合關聯的方法,讓 Moodle能夠完全調用原有的ASP.NET的模塊,只增加少量的PHP代碼來實現整合工作。并且新增加的功能不影響原系統的穩定性,即便新功能失效也不影響系統的運行。在研究各種整合方法后,我們選擇了面向服務的整合框架。

二 面向服務的整合思路

1 面向服務的特點

整合的基礎是建立系統之間的對話機制,面向服務的構架提供了一種基于消息的對話機制。基于消息的模式通過傳遞數據塊來實現關聯,這些數據塊與原系統的運行邏輯無關,這樣的數據塊統稱稱作“消息”[3],如圖2。

圖2中網絡右側是服務提供者,它通過接口的形式暴露在網絡上,并使用標準的服務描述語言進行描述(如WSDL)。網絡左側的使用者通過接口和描述服務的本地代理來訪問服務。在調用過程中,網絡上傳遞的就是消息。消息的格式可以是任意的,由設計和開發者創建。在這里采用的是標準的SOAP協議提供的XML格式的消息。在接口的背后,服務的具體實現和調用的具體技術與接口定義是無關的,只要接口返回的是協商好的消息格式即可[4]。為了最大限度的利用現有的應用程序功能組件,這里將原來的應用組件以WebService的標準方式進行接口封裝,并發布在服務器上。

2 整合實例結構

這里所碰到的整合問題是一個典型的異構技術平臺的整合問題。Moodle使用的是PHP,而另一個評分模塊是運行在ASP.NET上的,PHP不能直接調用ASP.NET平臺的組件。使用標準的Web Service則可以解決這個調用問題。圖3的結構解釋了這個整合的框架。

圖3中,我們將原來系統中的Rating模塊利用ASP.NET重新進行Web Service的封裝,使用標準的接口暴露Rating模塊中的投票評價方法。RatingDAL為原系統中負責評分功能的數據層組件。這里僅通過增加服務層組件RatingService對其進行方法的調用,不改變它原有的接口。因為沒有對原來的Rating模塊作修改,因此不會引起原系統的運行問題。而Moodle中的資源頁面作為服務的消費者,可通過標準的SOAP訪問RatingService[5]。圖3中的RatingService將作為一個獨立的服務存在,可以被除Moodle以外的其它程序調用。原來使用RatingDAL組件的模塊也可以通過RatingService進行調用。在這個構架中,兩個平臺所使用的技術不再是主要的矛盾了。

三 技術實現

1 Web服務的封裝和發布

在服務實現上,考慮到PHP的交互,我們選擇了使用ASP.NET實現基于SOAP標準的Web服務[6][7]。我們通過RatingService,聲明了必須的接口,然后通過對RatingDAL的調用完成封裝。下面是RatingService的封裝代碼,可以看到代碼中完全是對原RatingDAL的封裝,沒有任何具體的數據庫訪問代碼。完成后在IIS上發布,測試通過。

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class RatingService : System.Web.Services.WebService

{

[WebMethod]

//對原模塊的調用,提交用戶的評分public int Rating(string applicationid, int resourceid, int score){

RatingDAL dal = RatingDAL.GetInstance();

return dal.AddRatingRecord(applicationid,resourceid,score);}

[WebMethod]

//對原模塊的調用,得到具體資源的平均分

private int GetAverageScore(string applicationid, int resourceid)

{

RatingDAL dal = RatingDAL.GetInstance();

return dal.GetStatistic(applicationid,resourceid);

}

[WebMethod]

//對原模塊的調用,得到具體資源評分人數

private int GetTotalUsers(string applicationid, int resourceid)

{

RatingDAL dal = RatingDAL.GetInstance();

return dal.GetStatistic(applicationid,resourceid);

}

//其它的WebMethods

//……

}

在這個版本的RatingService中,每個需要進行投票統計的應用程序必須先手動的生成一個GUID作為ApplicationID。以后每次記錄投票和統計時都必須提供相應的ApplicationID。

2 Moodle的Web服務調用

在Moodle調用方法上,可選擇PHP調用Web服務,或者使用JavaScript進行Ajax調用。考慮到跨域訪問的安全性問題,我們選擇了使用PHP的PEAR_SOAP模塊。

在Moodle中我們找到顯示資源的頁面,moodlemod esourceview.php文件。我們在該文件中使用HTML設計如圖1的界面,然后增加Web服務的調用代碼。

首先,利用soapclient對象訪問RatingService,獲得其接口方法,并創建服務代理,代碼如下:

表2 WebService聲明

include(“SOAP/Client.php”);

//設置ApplicationID,這個ID是手工注冊生成的

$applicationid=”3c4b5694-339c-4fe6-8248-4409f2eb1050$wsdl=new”;

//獲取自動生成的WSDL代碼

$wsdl=SOAP_WSDL(“http://localhost/Rating/RatingService.asmx?WSDL”);

//根據$wsdl生成RatingService的代理$soapclient

$soapclient=$wsdl->getProxy();

然后,進行投票記錄,通過$soapclient調用Rating方法,記錄投票的分值:

最后,獲取評分情況,存儲在變量中,供下文應用:

表4 WebService的數據讀取方法調用

//調用RatingService的方法,分別得到平均分和評分用戶數

$average=$soapclient->GetAverageScore($applicationid, $id);

$totalusers=$soapclient->GetTotalUsers($applicationid, $id);

……

//在相應位置顯示平均得分和參與用戶數

分(最高分9分)

已有 位用戶對此資源進行評分

最終結果如圖4所示。

上面的實例中Moodle本身并不是面向服務構架,但是PHP有支持Web Service調用的模塊,為實施整合提供了條件。實例中,我們沒有對原評價模塊作過多的調整,只是將它通過Web Service進行封裝發布,實現了服務和具體調用的分離,不僅為Moodle提供了服務同時也可以向其它應用程序提供評分的服務。上述實例在本地機Moodle1.9/PHP/Apache/MySql/Windows和ASP.NET2.0/IIS5/MSSQL/Windows環境下調試通過。

3 進一步的研究目標

文中的兩個系統是在同一個服務器上運行的,因此并沒有涉及到有關安全性的問題。在后續的應用中,可能會遇到分布式的調用,因此對WebService安全性的控制將是下一步的研究目標。

四 小結

綜上所述,軟件整合的目的是充分重用現有的軟件,減少軟件維護和開發的成本。要達到這個目的,整合的方法是很重要的,不然很有可能會和預期的目標被道而馳。本文研究的面向服務的軟件整合方法,在使用不同技術實現的軟件中,通過基于消息的通訊來實施整合,大大減少了軟件之間的依賴性,提高了整合的可靠性。當然,任何方法都不是萬能的,具體的整合過程還牽涉到原有系統的開發框架、目標軟件本身的可靠性和可擴展性都等因素,在實施軟件整合時要結合各種實際情況進行綜合的研究。

主站蜘蛛池模板: 免费一极毛片| 国产精品久久久久久影院| 欧美综合成人| 国产青青草视频| 69免费在线视频| 伊人婷婷色香五月综合缴缴情| 色天天综合| 国产乱人激情H在线观看| 中文字幕人成人乱码亚洲电影| 亚洲精品国产成人7777| 亚洲熟女中文字幕男人总站| 欧美一区国产| 黄色网站不卡无码| 国产精品成人AⅤ在线一二三四 | 99国产精品一区二区| 久久综合色天堂av| 人禽伦免费交视频网页播放| 蜜臀AV在线播放| 久久天天躁夜夜躁狠狠| 亚洲乱码在线视频| 欧美一级大片在线观看| 亚洲视频在线青青| 欧美日韩亚洲综合在线观看| 国产jizz| 亚洲一级毛片在线观| 欧美色亚洲| 极品尤物av美乳在线观看| 亚洲无码37.| 久久精品嫩草研究院| 黄色网站在线观看无码| 亚洲欧美日韩精品专区| 久久综合色播五月男人的天堂| 国产黄在线免费观看| 国产福利在线免费观看| 国内黄色精品| 亚洲欧美色中文字幕| 日本道中文字幕久久一区| 日本黄色a视频| 国内精品视频在线| 日韩免费毛片视频| 毛片免费观看视频| 国内精自线i品一区202| 亚洲成人精品| 无码国产伊人| 国产正在播放| 91综合色区亚洲熟妇p| 视频二区中文无码| 国产00高中生在线播放| 色久综合在线| 国产精品大尺度尺度视频| 国产在线啪| 天天综合色网| www.av男人.com| 日韩专区欧美| 欧美亚洲国产精品久久蜜芽| 久久 午夜福利 张柏芝| 99热这里只有精品5| 色老二精品视频在线观看| 国产视频a| 国产精品一区二区久久精品无码| 免费看久久精品99| 一区二区三区国产精品视频| 欧美日本中文| 色综合天天综合| 亚洲成人动漫在线观看| 国产JIZzJIzz视频全部免费| 国产主播在线观看| 久久国产热| 青青青伊人色综合久久| 三级欧美在线| 亚洲视频在线青青| 色哟哟国产精品| 性欧美久久| 亚洲午夜福利精品无码不卡 | 免费一级无码在线网站| 成人在线欧美| 国产精品毛片一区| 超清人妻系列无码专区| 久久久91人妻无码精品蜜桃HD| 人与鲁专区| 国产精品爽爽va在线无码观看| 网友自拍视频精品区|