340 likes | 463 Views
Microsoft AJAX Library kliens oldali osztálykönyvtár. Kereskényi Róbert kereskenyi.robert@aut.bme.hu MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék. Tartalom. Architektúra AJAX JavaScript
E N D
Microsoft AJAX Library kliens oldali osztálykönyvtár Kereskényi Róbert kereskenyi.robert@aut.bme.hu MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék
Tartalom • Architektúra • AJAX JavaScript • Kliens oldali alap AJAX osztálytípusok • Base Class Library (BCL) típusok • Authentication és Profile szolgáltatás
Microsoft AJAX Library Base Class Library Script Core Asynchronous Communications XML-HTTP Stack JSON Serializer Web Service Proxies XML-HTTP Browser Compatibility Browsers (IE, Firefox, Opera, Safari) Architektúra Server Scripts XHTML / CSS
Tartalom Architektúra AJAX JavaScript Kliens oldali alap AJAX osztálytípusok Base Class Library (BCL) típusok Authentication és Profile szolgáltatás
JavaScript keretrendszer • AJAX Library ≈ JavaScript keretrendszer • Globális függvények ($functions) • JavaScript kiterjesztés • JavaScript típus rendszer • Alap osztályok, interfészek, … (Script Core) • További osztályok, interfészek, … (BCL) • Használhatóvá teszi a JavaScript-et • OOP jelleg • Könnyebb, produktívabb, használhatóbb
AJAX JavaScript • Globális függvények • $create, $find, $get, $addHandler, $removeHandler • Típus kiegészítések • Array – add, contains, insert, remove, … • Boolean – parse • Error – argumentOutOfRange, invalidOperations, … • Number – parse • Object – getType, getTypeName • String – format, endsWith, startWith, trim, … • http://ajax.asp.net/docs/ClientReference/
AJAX – OOP JavaScript • JavaScript • Objektum alapú • NEM objektum orientált • Microsoft AJAX Library objektum orientált programozást biztosít • Névtér, osztály, interfész, öröklés, enum • Kulcs: • JavaScript ”prototype” a kulcs • és persze az AJAX JavaScript
Példa – OOP JavaScript Type.RegisterNameSpace( "MyNameSapce" ); MyNameSapce.Person = function( name ) { MyNameSapce.Person.initializeBase( this ); this._name = name; } MyNameSapce.Person.prototype = { get_name: function() { returnthis._name; } } MyNameSapce.Person.registerClass( 'MyNameSapce.Person' );
Tartalom Architektúra AJAX JavaScript Kliens oldali alap AJAX osztálytípusok Base Class Library (BCL) típusok Authentication és Profile szolgáltatás
stb… Behavoir XML-HTTP- Executor Application StringBuilder Debug Component stb… EventArgs WebRequest -Executor WebRequest- Manager Timer DOMElement DOMEvent JavaScript- Serializer WebRequest ProfileGroup Authentication- Service Control stb… WebMethod WebServiceError ProfileService Script Core Library Sys. Serialization Sys.Services Sys.UI Sys Sys.Net
Application és Debug osztály • Application • magát az alkalmazást reprezentálja • globálisan elérhető • load, unload események • pageLoad, pageUnload automatikusan hívódik, ha jelen van • Debug • beépített, kliens oldali debug lehetőség • assert, fail • globálisan elérhető • windows.debug = new Sys.Debug();
Tartalom Architektúra AJAX JavaScript Kliens oldali alap AJAX osztálytípusok Base Class Library (BCL) típusok Authentication és Profile szolgáltatás
CheckBox TextBox BindingBase Action Binding InvokeMethod- Action Timer SetProperty- Action Counter … Validator Label AutoComplete- Behavior ListView Button XSLTView ItemView DataControl … … DataNavigator DataSource DataFilter DataRow DataTable DataColumn … Selector DataView Base Class Library típusok Sys.Preview Sys.Preview.UI.Data Sys.Preview.Data Sys.Preview.UI
JavaScript vs XML-Script • Kliens oldalon fogalmazhatunk • programkóddal: JavaScript • deklaratívan: XML-Script • Egyenértékűek • Kontroll függő, hogy mikor melyiket egyszerűbb használni (pl. adatkötés) • Deklaratív módot támogatni fogják a tervezőeszközök VS „Orcas”
Timer - JavaScript <script type="text/javascript"> function pageLoad() { var timer = new Sys.Preview.Timer(); timer.initialize(); timer.set_enabled( true ); timer.set_interval( 1000 ); //1 sec timer.add_tick( onTick ); } function onTick() { window.alert( ”Nem zavaró?” ); } </script>
Timer – XML-Script <script type="text/javascript"> function onTick() { window.alert( ’Nem zavaró?’ ); } </script> <scripttype="text/xml-script"> <page xmlns:script="http://schemas.microsoft.com/xml-script/2005"> <components> <timer enabled="true"interval="1000"tick="onTick" /> </components> </page> </script>
Viselkedések (behaviors) • Viselkedést reprezentáló osztályok • Alap osztály: Sys.UI.Behavior • Leszármazott osztályok • ClickBehavior • PopupBehavior • HoverBehavior • AutoCompleteBehavior • OpacityBehavior • LayoutBehavior • FloatingBehavior
Akciók (actions) • Objektumon értelmezett akciókat reprezentáló osztályok • System.Preview.Action osztályból származik – közös ősosztály • Leszármazott osztályok: • InvokeMethodAction • SetPropertyAction • PostBackAction
Példa - InvokeMethodAction <timer id="theTimer" interval="2000" enabled="true"> <tick> <invokeMethodAction target="timeServiceMethod„ method="invoke"> <parameters userContext="" /> </invokeMethodAction> </tick> </timer> <scripttype="text/xml-script"> <page xmlns="http://schemas.microsoft.com/xml-script/2005"> <components> <label id="lblTime" /> <timer id="theTimer" interval="2000" enabled="true"> <tick> <invokeMethodAction target="timeServiceMethod" method="invoke"> <parameters userContext="" /> </invokeMethodAction> </tick> </timer> <serviceMethodRequest id="timeServiceMethod" url="DateTimeService.asmx" methodName="GetTimeAsString"> <completed> <setPropertyAction target="DateTime" property="text" > <bindings> <binding dataContext="timeServiceMethod" dataPath="result" property="value" /> </bindings> </setPropertyAction> </completed> </serviceMethodRequest> </components> </page> </script> <serviceMethodRequest id="timeServiceMethod" url="DateTimeService.asmx" methodName="GetTimeAsString"> <completed> <setPropertyAction target="DateTime" property="text" > <bindings> <binding dataContext="timeServiceMethod„ dataPath="result" property="value" /> </bindings> </setPropertyAction> </completed> </serviceMethodRequest>
Adatkötés • Adatot rendelni HTML elemhez hogy megjelenítse • Megadása • data context: adatforrás neve • data path: adatforrás forrás tulajdonsága • property: vezérlő elem cél tulajdonsága • transformer: transzformáció az adatforráson az adatkötés előtt (opcionális) • binding direction: in / out / mindkettő
Komplex adatkötés • Sys.Preview.Data névtér osztályai • DataSource, DataTable, DataView, … • Sys.Preview.UI.Data névtér osztályai • ListView, ItemView, … • Szerver oldali webszolgáltatás kétirányú • Select, Insert, Update, Delete • Saját osztály szintén lehet adatforrás • Ezek együttes használata kliens oldali adatkötéshez!
Adatkötés - példa <scripttype="text/xml-script"> <page xmlns="http://schemas.microsoft.com/xml-script/2005"> <components> <textBox id="TextBox1" /> <label id="Label1"> <bindings> <binding dataContext="TextBox1" dataPath="text" property="text" transform="ToString" transformerArgument="Text entered: {0}" /> </bindings> </label> </components> </page> </script>
Validáció • ASP.NET AJAX saját validátorai • ASP.NET szerver oldali validátorokat egészíti ki AJAX-ossá • Tisztán kliens oldali validáció a HTML elem által generált change eseményre triggerel • RTM verzióban NINCS BENNE!!! • Patch-ként fog megjelenni
Autentikáció • Front-end az ASP.NET 2.0 Membership szolgáltatásához • AuthenticationService.asmx (beépített) • Engedélyezni kell • Kliens oldalon Sys.Services.AuthenticationService osztály • Metódusok: • login, logout, isLoggedIn • Tulajdonságok: • defaultLoginCompletedCallback, defaultFailedCallback, isLoggedIn, timeout, … Web.config: <authenticationService enabled="true" requireSSL=„true|false" />
Profil • Front-end az ASP.NET 2.0 profil szolgáltatásához • ProfileService.asmx (beépített) • Engedélyezni kell • Kliens oldalon Sys.Services.ProfileService osztály • Metódusai: • save, load • Tulajdonságai: • defaultLoadCompletedCallback, defaultSaveCompletedCallback, defaultFailedCallback, properties (field), timeout, … • Profil tulajdonság elérése • Sys.Services.ProfileService.load( …, OnLoadCompleted, … ); • function OnLoadCompleted (){ Sys.Services.ProfileService.properties.PROPERTYNAME } Web.config: <profileService enabled="true" requireSSL=„true|false" />
PreviewGlitz.js • UI effekt kiegészítés a BCL-hez • Sys.Preview.UI.Effects névtér • Átlátszóság OpacityBehavoir • Méret és pozíció LayoutBehavior • Animáció Animation osztály és leszármazottai • PropertyAnimation, InterpolatedAnimation, DiscreteAnimation, NumberAnimation, LengthAnimation, CompositeAnimation, FadeAnimation, ColorAnimation • _duration, _fps, _target, play(), …
Animáció… <script language="javascript"type="text/javascript"> function pageLoad() { var ani = new Sys.Preview.UI.Effects.FadeAnimation(); ani.set_target($get("image1").control); ani.set_effect(Sys.Preview.UI.Effects.FadeEffect.FadeOut); ani.set_duration(3); ani.play(); } </script> …… <compositeAnimation id="aniComp" duration="3"> <animations> <lengthAnimation target="imgLayout1" property="top" startValue="0" endValue="300" /> <lengthAnimation target="imgLayout1" property="left" startValue="0" endValue="600" /> </animations> </compositeAnimation>
VirtualEarthMap • Korai béta fázisokban lévő vezérlő • AtlasUIMap.js tartalmazza (v Beta2) • Microsoft Virtual Earth SDK burkoló osztály AJAX-hoz • Térkép beágyazása saját web oldalakba • mozgatás, nagyítás, kicsinyítés • Adatkötés (pushpin-ek) • Talán újra része lesz az AJAX Library-nek…
Összefoglalás • Microsoft AJAX Library az ASP.NET AJAX kliens oldali része • Platform és böngésző független • OOP és osztály kiegészítés a JavaScripthez JavaScript framework • Imperatív (JavaScript) és deklaratív (XML-Script) programozás
További információk • Fejlesztői Portál: • http://www.devportal.hu • Webfejlesztés témaközpont: • http://www.devportal.hu/Portal/Webdevelopment.aspx • ASP.NET 2.0 Induló Készlet: • http://www.devportal.hu/InduloKeszlet • MSDN .NET Developer Center • http://msdn.microsoft.com/netframework/ • MSDN ASP.NET Developer Center • http://msdn.microsoft.com/aspnet • Hivatalos ASP.NET honlap • http://www.asp.net • Hivatalos ASP.NET AJAX honlap • http://ajax.asp.net • Microsoft AJAX Library reference honlap • http://ajax.asp.net/docs/ClientReference/
Kérdések és válaszok Értékelőlapok!
© 2007 Microsoft Corporation. Minden jog fenntartva. Az előadás csupán tájékoztató jellegű, a Microsoft Magyarország a benne szereplő esetleges hibákért vagy tévedésekért semmilyen felelősséget nem vállal.