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

        ?

        基于ECO與Ajax相結(jié)合的用戶注冊驗(yàn)證

        2008-12-31 00:00:00嚴(yán)倪子偉
        電腦知識(shí)與技術(shù) 2008年14期

        摘要:ECO是Borland/CodeGear在.NET平臺(tái)下實(shí)現(xiàn)出來的,根據(jù)模型驅(qū)動(dòng)開發(fā)(Model Driven Development,MDD)為核心發(fā)展出來的軟件架構(gòu);而Ajax作為Web開發(fā)的熱點(diǎn),在提高數(shù)據(jù)交互,改善用戶體驗(yàn)等方面發(fā)揮著重要作用。本文通過用戶注冊驗(yàn)證的設(shè)計(jì),說明了通過Web服務(wù),ECO和Ajax二者之間能實(shí)現(xiàn)有機(jī)的結(jié)合,從而讓開發(fā)人員真正領(lǐng)略到高效的開發(fā)能力,同時(shí)帶來更好的用戶體驗(yàn)。

        關(guān)鍵詞: ECO; Ajax;Web Service;.NET

        中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)14-20848-04

        1 引言

        隨著高生產(chǎn)力和高品質(zhì)軟件的要求標(biāo)準(zhǔn)不斷的提高,“簡化與快速開發(fā)”已成為軟件開發(fā)人員追求的重要目標(biāo)。在“快速開發(fā)”的同時(shí),提供豐富的、可交互的和個(gè)性化的用戶體驗(yàn),對提高Web應(yīng)用程序開發(fā)的品質(zhì)和效率,具有重要的現(xiàn)實(shí)意義。

        2 ECO與Ajax相結(jié)合的模式

        2.1 ECO開發(fā)架構(gòu)

        ECO(Enterprise Core Objects)是根據(jù)模型驅(qū)動(dòng)開發(fā)(Model Driven Development,MDD)為核心發(fā)展出來的技術(shù),并且結(jié)合OR Mapping、圖形用戶界面綁定、對象服務(wù)構(gòu)架以及許多其他豐富的功能而形成的,在.NET平臺(tái)下實(shí)現(xiàn)出來的軟件工程。

        2.1.1 模型驅(qū)動(dòng)開發(fā)(Model Driven Development,MDD)

        MDD的基本構(gòu)想是開發(fā)人員應(yīng)該專注于設(shè)計(jì)良好的業(yè)務(wù)邏輯模型,并且把業(yè)務(wù)邏輯撰寫在模型中。一旦模型設(shè)計(jì)完成之后,MDD即可提供工具自動(dòng)地把業(yè)務(wù)邏輯模型對映到開發(fā)人員使用的技術(shù)中。MDD提供了使用模型來直接引導(dǎo)理解系統(tǒng)、設(shè)計(jì)、建立、部署、動(dòng)作、維護(hù)和修改系統(tǒng)的流程。在這整個(gè)開發(fā)過程中,都是以模型來驅(qū)動(dòng)的。一個(gè)ECO系統(tǒng)的開發(fā)從建立模型、設(shè)計(jì)和開發(fā)模型,到撰寫Delphi/C#程序代碼都與系統(tǒng)模型脫離不了關(guān)系。

        2.1.2 UML和OCL

        UML(Unified Modeling Language)和OCL(Object Constraint Language)都是由OMG(Object Management Group)定義的標(biāo)準(zhǔn),也都是組成MDD標(biāo)準(zhǔn)的子標(biāo)準(zhǔn)之一, 對MDD的成功具有關(guān)鍵性的作用。ECO開發(fā)中,使用UML來專注于建立業(yè)務(wù)的平臺(tái)無關(guān)模型(Platform Independent Model,PIM),使用OCL來選擇和處理業(yè)務(wù)邏輯對象和業(yè)務(wù)邏輯。

        在UML2.0的標(biāo)準(zhǔn)規(guī)范中,OCL是作為附加的語言(Add-on Language)來進(jìn)行面向?qū)ο蠓治?設(shè)計(jì)之用的。由于OCL是附加的UML機(jī)制,所以被用來撰寫業(yè)務(wù)邏輯模型中的業(yè)務(wù)規(guī)則、限制條件以及定義查詢等工作之用。OCL又是一門形式語言,因此使用OCL來定義、撰寫這些模型相關(guān)的信息的好處是既清楚又不會(huì)造成模糊不清的定義。OCL可以取代SQL在ECO應(yīng)用系統(tǒng)中讓開發(fā)人員處理的業(yè)務(wù)邏輯對象,也可使用在ECO類圖中定義的業(yè)務(wù)邏輯,這樣,開發(fā)人員就無須再使用Delphi/C#程序代碼重復(fù)撰寫這些業(yè)務(wù)邏輯,可以說,使用ECO來開發(fā)應(yīng)用系統(tǒng),OCL是除了Delphi/C#語言之外第二個(gè)最重要的語言。

        2.1.3 使用ASP.NET之WEB架構(gòu)的ECO應(yīng)用程序

        ECO的開發(fā)方式是讓開發(fā)人員設(shè)計(jì)完善的用戶需求業(yè)務(wù)邏輯模型,不僅定義了類、方法和特性,更重要的是它詳細(xì)地定義了一個(gè)應(yīng)用系統(tǒng)中類之間的關(guān)系,這樣一來,開發(fā)人員只需要遵照模型的定義就可以專心地撰寫程序代碼,因此,可以簡單地說ECO能夠達(dá)到“模型即程序,程序即模型”的地步。

        ECO 提供了強(qiáng)大的ASP.NET 開發(fā)能力,它能夠和.NET內(nèi)建的UI組件搭配在一起,并且重新整理高階的服務(wù)在一組易于使用的接口中,這樣一來,不但可以讓開發(fā)者非常方便上手,也符合目前面向?qū)ο罂蚣芨臑槭褂媒涌趯?dǎo)向(Interface Oriented)的設(shè)計(jì)架構(gòu)。在這種ECO ASP.NET 架構(gòu)中,除了能夠使用所有ASP.NET提供的各種組件和服務(wù)之外,也能夠使用所有ECO的功能和服務(wù)。ASP.NET 應(yīng)用程序同樣通過EcoSpace 執(zhí)行我們在設(shè)計(jì)時(shí)期設(shè)計(jì)的業(yè)務(wù)邏輯模型,然而,由于ASP.NET 應(yīng)用程序會(huì)有許多客戶端同時(shí)存取使用,因此ASP.NET 應(yīng)用程序需要和后臺(tái)的數(shù)據(jù)庫連接,并需要使用ECO持久化映像同步器(PMapperSynchronizer)來同步每一個(gè)客戶端對于對象的修改,以保證后臺(tái)數(shù)據(jù)庫之中數(shù)據(jù)的一致性。執(zhí)行架構(gòu)如圖1。

        2.2 AjaxPro.NET框架

        AJAX是Asynchronous JavaScript and XML(異步JavaScript和XML)的縮寫,綜合運(yùn)用Javascript、XHTML和CSS、DOM、XML和XSTL、XMLHttpRequest的技術(shù),AJAX的原則是“按需取數(shù)據(jù)”,可以最大程度的減少冗余請求和響應(yīng)對服務(wù)器造成的負(fù)擔(dān),它使用XMLHTTP對象發(fā)送請求并得到服務(wù)器響應(yīng),在不重新載入整個(gè)頁面的情況下用Javascript操作DOM實(shí)現(xiàn)頁面局部更新,這種更新是瞬間的,從而帶給用戶較好的體驗(yàn)。

        隨著Ajax技術(shù)在WEB程序中的應(yīng)用,Ajax框架(或稱Ajax庫)有如雨后春筍般令開發(fā)人員眼花繚亂,但是面對如此之多的Ajax框架,如何選擇適合自己項(xiàng)目的Ajax框架,特別是在和ECO相結(jié)合的應(yīng)用系統(tǒng)中,顯得更為重要。

        AjaxPro.NET是一個(gè)優(yōu)秀的Ajax框架,它做為Ajax技術(shù)在.Net框架下的實(shí)現(xiàn),作者M(jìn)ichael Schwarz采取了一種封裝效果相當(dāng)棒的技術(shù):將客戶端處理XML、事件調(diào)用方式都封裝在2個(gè)Javascript文件中(AjaxPro.prototype.js 和AjaxPro.core.js),同時(shí)將這2個(gè)重要文件以資源的形式編譯于dll中,在處理客戶端請求其自定義的.ashx文件時(shí),返回這兩個(gè)文件。在實(shí)際應(yīng)用中只要添加其DLL引用并進(jìn)行簡單的配置, 就可以非常方便的在客戶端直接調(diào)用服務(wù)端方法,實(shí)現(xiàn)驗(yàn)證目的。

        2.3 Ajax通過WebService整合ECO系統(tǒng)

        ECO功能強(qiáng)大,而且非常符合開發(fā)習(xí)慣,當(dāng)使用ECO開發(fā)應(yīng)用程序時(shí),開發(fā)人員可以專注于設(shè)計(jì)要解決的問題模型,一旦這個(gè)模型定義、開發(fā)完畢之后,整個(gè)應(yīng)用程序就幾乎已經(jīng)完成了大半的工作,因?yàn)镋CO在應(yīng)用程序運(yùn)行時(shí)會(huì)執(zhí)行開發(fā)人員設(shè)計(jì)的模型來解決客戶的問題。這樣開發(fā)人員可以避免花費(fèi)很多的開發(fā)時(shí)間于瑣碎的細(xì)節(jié)之中,而能集中精力于設(shè)計(jì)完善的業(yè)務(wù)邏輯。

        Ajax作為構(gòu)建Web應(yīng)用的一種方法,它帶給訪問者完全不同的瀏覽感受,為客戶端提供了強(qiáng)大的GUI能力,通過ECO和AJAX的有機(jī)結(jié)合,開發(fā)人員可以在WEB應(yīng)用程序中使用完善的業(yè)務(wù)邏輯,并將良好的用戶體驗(yàn)展現(xiàn)在使用者面前,那么在ECO與Ajax相結(jié)合的模式下,服務(wù)器端的開發(fā)應(yīng)該是什么樣子,應(yīng)該用什么樣的框架支持這種“只向?yàn)g覽器返回?cái)?shù)據(jù)”的服務(wù)請求,其實(shí)這時(shí)很需要一個(gè)全新概念的服務(wù)器端架構(gòu),本人認(rèn)為這種架構(gòu)應(yīng)該基于WebService。

        Web Service主要是為了使原來各孤立的站點(diǎn)之間的信息能夠相互通信、共享而提出的一種接口。Web Service所使用的是Internet上統(tǒng)一、開放的標(biāo)準(zhǔn),如HTTP、XML、SOAP(簡單對象訪問協(xié)議)、WSDL等,所以Web Service可以在任何支持這些標(biāo)準(zhǔn)的環(huán)境(Windows,Linux)中使用。Webservice的一個(gè)最基本的目的就是提供在各個(gè)不同平臺(tái)的不同應(yīng)用系統(tǒng)的協(xié)同工作能力。

        通過Web服務(wù),Ajax技術(shù)可以與ECO應(yīng)用程序很好進(jìn)結(jié)合在一起,二者可通過如圖2的模式進(jìn)行相結(jié)合。

        3 結(jié)合ECO與Ajax的用戶注冊驗(yàn)證設(shè)計(jì)與實(shí)現(xiàn)

        在各種網(wǎng)絡(luò)服務(wù)中,新用戶注冊隨處可見,新用戶進(jìn)行注冊時(shí),系統(tǒng)應(yīng)判斷注冊的用戶名是否已存在,ECO系統(tǒng)中如何在不重新刷新頁面的情況下進(jìn)行驗(yàn)證,就須通過使用Web Service方法。Ajax與ECO相結(jié)合下的用戶注冊驗(yàn)證的實(shí)現(xiàn)主要有以下幾個(gè)步驟:

        (1)首先下載AjaxPro.NET 組件。并將AjaxPro.2.dll引用到項(xiàng)目中;

        (2)在Web.config文件中配置AjaxPro框架;

        (3)使用ECO設(shè)計(jì)器界面以可視化的方式設(shè)計(jì)注冊用戶類(Register類有:UserName、Password、Email等注冊需要的屬性),然后通過ORMapping在連接的數(shù)據(jù)庫中產(chǎn)生必要的數(shù)據(jù)結(jié)構(gòu);

        (4)創(chuàng)建ECO WebService,在服務(wù)器端撰寫Web服務(wù)方法;

        unit WebService1;

        ……

        [WebMethod]

        function GetUserCount(Uname:string): integer;

        ……

        function TWebService1.GetUserCount(Uname:string): integer;

        var

        OclService: IOclService;

        ResultElement: IElement;

        oclstr:string;

        begin

        OclService := EcoSpace.GetEcoService();

        oclstr:='Register.allinstances->select(UserName='''+Uname+''') ';

        ResultElement := OclService.Evaluate(oclstr);

        Result := ResultElement.GetAsCollection.Count;

        DoneWithEcoSpace;

        end;

        將調(diào)試后的Web服務(wù)方法通過“Web Reference”添加引用到調(diào)用的項(xiàng)目中。

        (5)在ECO ASP.NET Forms中注冊使用Ajax框架,同時(shí)加入相關(guān)的ECO組件,設(shè)計(jì)調(diào)用WebService的方法;

        public

        function IsNameExist(sUname:string):boolean;

        function IsUserExist(Uname:string):boolean;

        [AjaxPro.AjaxMethod]

        function GetReturnInfo(s:string): string; //聲明客戶端JavaScript可呼叫的方法

        [AjaxPro.AjaxMethod]

        function GetInfo : string; //聲明客戶端JavaScript可呼叫的方法

        ……

        procedure TRegist.Page_Load(sender: System.Object; e: System.EventArgs);

        begin

        // TODO: Put user code to initialize the page here

        Utility.RegisterTypeForAjax(typeof(Default.TRegist));

        end;

        function TRegist.IsUserExist(Uname: string): boolean; //調(diào)用WebService

        var

        ws:TWebService1;

        begin

        ws:=TWebService1.Create;

        if ws.GetUserCount(Uname)>0 then Result:=true else Result:=1;

        end;

        function TRegist.GetReturnInfo(s: string): string;

        begin

        if(IsUserExist(s)) then Result:='2';

        end;

        (6)撰寫客戶端訪問ASPX頁面的JavaScript代碼,使用XMLHttp呼叫Ajax方法。

        function IsUsernameExist_callback(res)

        {var msg = document.getElementById('lblMessage');

        var bRet = res.value;

        if (bRet == \"2\")

        {msg.innerHTML = '用戶名已存在!';

        msg.style.color = ' red ';}

        else

        {msg.innerHTML = '用戶名可以使用!';

        msg.style.color = 'green'}

        }

        ……

        4 結(jié)束語

        本用戶注冊驗(yàn)證程序在RAD Studio 2007下調(diào)試成功。本文通過這一常用實(shí)例的實(shí)現(xiàn),提出一個(gè)在.NET平臺(tái)下快速開發(fā)Web程序的基本模式:Ajax技術(shù)可以通過WebService和ECO應(yīng)用程序進(jìn)行結(jié)合,充分實(shí)現(xiàn)“快速開發(fā)”與“良好用戶體驗(yàn)”,較好地完成Web應(yīng)用軟件的開發(fā)。

        參考文獻(xiàn):

        [1] 李維. Delphi MDA/DDA程序設(shè)計(jì)──使用ECO[M]. 電子工業(yè)出版社,2007.

        [2] Xavier Pacheco. Delphi for.NET Developer's Guide[M]. 機(jī)械工業(yè)出版社,2005.

        [3] 柯自聰. Ajax開發(fā)精要──概念、案例與框架[M]. 電子工業(yè)出版社,2006.

        [4] 蔡宏. Delphi 2006 for NET開發(fā)技術(shù)原理與實(shí)踐教程[M]. 電子工業(yè)出版社,2007.

        [5] 趙建華. MDA與可執(zhí)行UML[M]. 機(jī)械工業(yè)出版社,2006.

        注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文

        伊人精品无码AV一区二区三区| 少妇夜夜春夜夜爽试看视频| 50岁退休熟女露脸高潮| 波多野结衣有码| 久久久诱惑一区二区三区| 久久国产亚洲精品一区二区三区| 亚洲中文字幕久久精品蜜桃| 欧美性猛交内射兽交老熟妇| 亚洲韩国在线| 日韩女优一区二区在线观看| 亚洲av不卡无码国产| 国外精品视频在线观看免费| 日韩偷拍一区二区三区视频| 人妻少妇被猛烈进入中文| 国色天香中文字幕在线视频| 最近日本中文字幕免费完整 | 亚洲国产精品久久电影欧美| 亚洲男女内射在线播放| 亚洲性啪啪无码av天堂| 欧美国产日本精品一区二区三区| 日韩av中文字幕少妇精品| 国模gogo无码人体啪啪| 无码国产69精品久久久孕妇| 亚洲精品中文字幕观看| 久久精品国产自产对白一区| 亚洲精品~无码抽插| 婷婷开心深爱五月天播播| 日本爽快片18禁免费看| 国产一区二区三区啪| 日韩激情av不卡在线| 欧美性生交大片免费看app麻豆| 亚洲国产长腿丝袜av天堂| 色综合色综合久久综合频道| 久久精品亚洲精品国产区| 人妻少妇中文字幕乱码| 亚洲日韩专区在线视频| 亚洲人妻av在线播放| 人人澡人人妻人人爽人人蜜桃麻豆| 亚洲日韩精品欧美一区二区 | 国产高清在线精品一区αpp| 男女啪啪啪的高清视频|