亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于面向服務(wù)構(gòu)架的在線學(xué)習(xí)系統(tǒng)模塊整合

        2009-07-02 05:29:48葉海松
        現(xiàn)代教育技術(shù) 2009年8期
        關(guān)鍵詞:WEB服務(wù)

        葉海松

        【摘要】文章分析了軟件整合的需求和面向服務(wù)構(gòu)架的特點(diǎn),論述了如何使用基于面向服務(wù)構(gòu)架的方法對(duì)軟件進(jìn)行模塊級(jí)別的整合,以達(dá)到模塊重用和降低開發(fā)成本的目標(biāo);并通過在Moodle的資源頁(yè)面中嵌入簡(jiǎn)單的代碼調(diào)用另一平臺(tái)的評(píng)分模塊服務(wù),提供了面向服務(wù)構(gòu)架的整合實(shí)例。

        【關(guān)鍵詞】軟件整合;面向服務(wù)構(gòu)架;學(xué)習(xí)管理系統(tǒng);Web服務(wù)

        【中圖分類號(hào)】G40-057 【文獻(xiàn)標(biāo)識(shí)碼】A 【論文編號(hào)】1009—8097(2009)08—0102—03

        一 整合問題的產(chǎn)生

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

        在上海師范大學(xué)教育技術(shù)系實(shí)施的“現(xiàn)代教育技術(shù)網(wǎng)絡(luò)課程平臺(tái)”項(xiàng)目中就遇到了這種情況。在有限的經(jīng)費(fèi)投入下,項(xiàng)目使用開源的學(xué)習(xí)管理系統(tǒng)Moodle在構(gòu)建了一個(gè)在線學(xué)習(xí)平臺(tái),Moodle能夠滿足我們大部分的需求,包括課程管理、用戶管理、資源管理、在線測(cè)試和使用報(bào)告等。但在用戶需求中有一條在Moodle的核心組件沒有提供,即對(duì)課程資源的投票評(píng)價(jià)功能(如圖1),項(xiàng)目要求能夠讓用戶對(duì)資源進(jìn)行無記名的評(píng)分,然后提交結(jié)果,同時(shí)會(huì)看到總體的評(píng)分情況。

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

        二 面向服務(wù)的整合思路

        1 面向服務(wù)的特點(diǎn)

        整合的基礎(chǔ)是建立系統(tǒng)之間的對(duì)話機(jī)制,面向服務(wù)的構(gòu)架提供了一種基于消息的對(duì)話機(jī)制?;谙⒌哪J酵ㄟ^傳遞數(shù)據(jù)塊來實(shí)現(xiàn)關(guān)聯(lián),這些數(shù)據(jù)塊與原系統(tǒng)的運(yùn)行邏輯無關(guān),這樣的數(shù)據(jù)塊統(tǒng)稱稱作“消息”[3],如圖2。

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

        2 整合實(shí)例結(jié)構(gòu)

        這里所碰到的整合問題是一個(gè)典型的異構(gòu)技術(shù)平臺(tái)的整合問題。Moodle使用的是PHP,而另一個(gè)評(píng)分模塊是運(yùn)行在ASP.NET上的,PHP不能直接調(diào)用ASP.NET平臺(tái)的組件。使用標(biāo)準(zhǔn)的Web Service則可以解決這個(gè)調(diào)用問題。圖3的結(jié)構(gòu)解釋了這個(gè)整合的框架。

        圖3中,我們將原來系統(tǒng)中的Rating模塊利用ASP.NET重新進(jìn)行Web Service的封裝,使用標(biāo)準(zhǔn)的接口暴露Rating模塊中的投票評(píng)價(jià)方法。RatingDAL為原系統(tǒng)中負(fù)責(zé)評(píng)分功能的數(shù)據(jù)層組件。這里僅通過增加服務(wù)層組件RatingService對(duì)其進(jìn)行方法的調(diào)用,不改變它原有的接口。因?yàn)闆]有對(duì)原來的Rating模塊作修改,因此不會(huì)引起原系統(tǒng)的運(yùn)行問題。而Moodle中的資源頁(yè)面作為服務(wù)的消費(fèi)者,可通過標(biāo)準(zhǔn)的SOAP訪問RatingService[5]。圖3中的RatingService將作為一個(gè)獨(dú)立的服務(wù)存在,可以被除Moodle以外的其它程序調(diào)用。原來使用RatingDAL組件的模塊也可以通過RatingService進(jìn)行調(diào)用。在這個(gè)構(gòu)架中,兩個(gè)平臺(tái)所使用的技術(shù)不再是主要的矛盾了。

        三 技術(shù)實(shí)現(xiàn)

        1 Web服務(wù)的封裝和發(fā)布

        在服務(wù)實(shí)現(xiàn)上,考慮到PHP的交互,我們選擇了使用ASP.NET實(shí)現(xiàn)基于SOAP標(biāo)準(zhǔn)的Web服務(wù)[6][7]。我們通過RatingService,聲明了必須的接口,然后通過對(duì)RatingDAL的調(diào)用完成封裝。下面是RatingService的封裝代碼,可以看到代碼中完全是對(duì)原RatingDAL的封裝,沒有任何具體的數(shù)據(jù)庫(kù)訪問代碼。完成后在IIS上發(fā)布,測(cè)試通過。

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

        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

        public class RatingService : System.Web.Services.WebService

        {

        [WebMethod]

        //對(duì)原模塊的調(diào)用,提交用戶的評(píng)分public int Rating(string applicationid, int resourceid, int score){

        RatingDAL dal = RatingDAL.GetInstance();

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

        [WebMethod]

        //對(duì)原模塊的調(diào)用,得到具體資源的平均分

        private int GetAverageScore(string applicationid, int resourceid)

        {

        RatingDAL dal = RatingDAL.GetInstance();

        return dal.GetStatistic(applicationid,resourceid);

        }

        [WebMethod]

        //對(duì)原模塊的調(diào)用,得到具體資源評(píng)分人數(shù)

        private int GetTotalUsers(string applicationid, int resourceid)

        {

        RatingDAL dal = RatingDAL.GetInstance();

        return dal.GetStatistic(applicationid,resourceid);

        }

        //其它的WebMethods

        //……

        }

        在這個(gè)版本的RatingService中,每個(gè)需要進(jìn)行投票統(tǒng)計(jì)的應(yīng)用程序必須先手動(dòng)的生成一個(gè)GUID作為ApplicationID。以后每次記錄投票和統(tǒng)計(jì)時(shí)都必須提供相應(yīng)的ApplicationID。

        2 Moodle的Web服務(wù)調(diào)用

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

        在Moodle中我們找到顯示資源的頁(yè)面,moodlemod esourceview.php文件。我們?cè)谠撐募惺褂肏TML設(shè)計(jì)如圖1的界面,然后增加Web服務(wù)的調(diào)用代碼。

        首先,利用soapclient對(duì)象訪問RatingService,獲得其接口方法,并創(chuàng)建服務(wù)代理,代碼如下:

        表2 WebService聲明

        include(“SOAP/Client.php”);

        //設(shè)置ApplicationID,這個(gè)ID是手工注冊(cè)生成的

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

        //獲取自動(dòng)生成的WSDL代碼

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

        //根據(jù)$wsdl生成RatingService的代理$soapclient

        $soapclient=$wsdl->getProxy();

        然后,進(jìn)行投票記錄,通過$soapclient調(diào)用Rating方法,記錄投票的分值:

        最后,獲取評(píng)分情況,存儲(chǔ)在變量中,供下文應(yīng)用:

        表4 WebService的數(shù)據(jù)讀取方法調(diào)用

        //調(diào)用RatingService的方法,分別得到平均分和評(píng)分用戶數(shù)

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

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

        ……

        //在相應(yīng)位置顯示平均得分和參與用戶數(shù)

        分(最高分9分)

        已有 位用戶對(duì)此資源進(jìn)行評(píng)分

        最終結(jié)果如圖4所示。

        上面的實(shí)例中Moodle本身并不是面向服務(wù)構(gòu)架,但是PHP有支持Web Service調(diào)用的模塊,為實(shí)施整合提供了條件。實(shí)例中,我們沒有對(duì)原評(píng)價(jià)模塊作過多的調(diào)整,只是將它通過Web Service進(jìn)行封裝發(fā)布,實(shí)現(xiàn)了服務(wù)和具體調(diào)用的分離,不僅為Moodle提供了服務(wù)同時(shí)也可以向其它應(yīng)用程序提供評(píng)分的服務(wù)。上述實(shí)例在本地機(jī)Moodle1.9/PHP/Apache/MySql/Windows和ASP.NET2.0/IIS5/MSSQL/Windows環(huán)境下調(diào)試通過。

        3 進(jìn)一步的研究目標(biāo)

        文中的兩個(gè)系統(tǒng)是在同一個(gè)服務(wù)器上運(yùn)行的,因此并沒有涉及到有關(guān)安全性的問題。在后續(xù)的應(yīng)用中,可能會(huì)遇到分布式的調(diào)用,因此對(duì)WebService安全性的控制將是下一步的研究目標(biāo)。

        四 小結(jié)

        綜上所述,軟件整合的目的是充分重用現(xiàn)有的軟件,減少軟件維護(hù)和開發(fā)的成本。要達(dá)到這個(gè)目的,整合的方法是很重要的,不然很有可能會(huì)和預(yù)期的目標(biāo)被道而馳。本文研究的面向服務(wù)的軟件整合方法,在使用不同技術(shù)實(shí)現(xiàn)的軟件中,通過基于消息的通訊來實(shí)施整合,大大減少了軟件之間的依賴性,提高了整合的可靠性。當(dāng)然,任何方法都不是萬能的,具體的整合過程還牽涉到原有系統(tǒng)的開發(fā)框架、目標(biāo)軟件本身的可靠性和可擴(kuò)展性都等因素,在實(shí)施軟件整合時(shí)要結(jié)合各種實(shí)際情況進(jìn)行綜合的研究。

        猜你喜歡
        WEB服務(wù)
        現(xiàn)代SOA架構(gòu)差旅報(bào)銷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)分析
        基于3G技術(shù)的智能水表WEB服務(wù)系統(tǒng)的研究
        基于Web服務(wù)的SPSS與.NET系統(tǒng)集成開發(fā)
        軟件(2016年4期)2017-01-20 09:28:12
        基于線性回歸的航班延誤預(yù)測(cè)研究與系統(tǒng)開發(fā)
        基于Proteus的嵌入式以太網(wǎng)Web服務(wù)虛擬實(shí)驗(yàn)的設(shè)計(jì)與實(shí)現(xiàn)
        智慧校園一卡通與圖書館系統(tǒng)對(duì)接探究
        軟件(2016年5期)2016-08-30 18:28:31
        教學(xué)工作量管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        一種基于SOA的web異構(gòu)數(shù)據(jù)集成方法研究
        基于Agent的自演化Web服務(wù)機(jī)制研究
        基于ARM平臺(tái)的嵌入式Web服務(wù)器設(shè)計(jì)
        日本国产一区在线观看| 国产做无码视频在线观看浪潮| 亚洲日韩欧美一区二区三区| 女同性恋一区二区三区四区| 一区二区视频在线观看地址| 午夜毛片不卡免费观看视频| 黄色资源在线观看| 我和丰满老女人性销魂| 东京热日本av在线观看| 特级a欧美做爰片第一次| 可以免费在线看黄的网站| 久久夜色精品国产九色| 看日本全黄色免费a级| 男女车车的车车网站w98免费| 国产精品久久久久尤物| 日本a一区二区三区在线| 亚洲天堂成人av在线观看| a级特黄的片子| 亚洲另类激情综合偷自拍图| 精品国模人妻视频网站| 精品无码人妻夜人多侵犯18| 日韩综合无码一区二区| 日韩精品无码免费专区网站 | 国产精品毛片一区二区| 欧美丰满熟妇乱xxxxx图片| 欧美综合区自拍亚洲综合| av天堂网手机在线观看| 黄色av一区二区在线观看| 亚洲丁香五月天缴情综合| 亚洲欧美中文v日韩v在线| 色视频不卡一区二区三区| 久久精品国产久精国产爱| 日出水了特别黄的视频| 中文字幕国产精品中文字幕| 国产日产韩国级片网站| 麻豆婷婷狠狠色18禁久久| 色丁香色婷婷| 久久伊人久久伊人久久| 成年人一区二区三区在线观看视频| 小sao货水好多真紧h无码视频| 99国产精品久久久蜜芽|