<map version="0.7.1">
<node TEXT="GKO, luennot 17.-18.9.">
<node TEXT=".NET" FOLDED="true" POSITION="left">
<node TEXT="Materiaalia" FOLDED="true">
<node TEXT=".net framework sdk, overview"/>
</node>
<node TEXT="Tavoitteet (marketing hypea, kritiikki&#xe4;...?)" FOLDED="true">
<node TEXT="Oliopohjainen ymp&#xe4;rist&#xf6;, joka mahdollistaa olioiden varastoinnin ja suorittamisen paikallisesti ja/tai verkossa"/>
<node TEXT="Suoritusymp&#xe4;rist&#xf6;, joka minimoi ohjelmiston levitys- ja versiointikonfliktit" FOLDED="true">
<node TEXT="Assembly-paketit, sis&#xe4;lt&#xe4;v&#xe4;t metatietoa versioista"/>
</node>
<node TEXT="Turvallinen ja hallittu suoritusymp&#xe4;rist&#xf6; (my&#xf6;s tuntemattomalle tai kolmannen osapuolen koodille)" FOLDED="true">
<node TEXT="&quot;Managed code&quot;==virtuaalikoneen kautta ajettu, muistiviitteit&#xe4; valvotaan, roskienkeruu"/>
</node>
<node TEXT="Skriptattuja tai tulkattuja ymp&#xe4;rist&#xf6;j&#xe4; parempi suorituskyky" FOLDED="true">
<node TEXT="JIT == Just In Time compiling"/>
</node>
<node TEXT="Yhten&#xe4;ist&#xe4;&#xe4; erilaisten sovellusten ohjelmointia (esim. windows vs. web-sovellukset)" FOLDED="true">
<node TEXT="ainakin kun k&#xe4;ytet&#xe4;&#xe4;n Exploreria..."/>
</node>
<node TEXT="Teollisuusstandardien tukeminen, integrointi mihin tahansa koodiin" FOLDED="true">
<node TEXT="XML/Web services?"/>
</node>
</node>
<node TEXT="Komponentit" FOLDED="true">
<node TEXT="CLR (Common Language Runtime)" FOLDED="true">
<node TEXT="&quot;Managed code&quot;, frameworkin alla ajettava koodi"/>
<node LINK="http://www.jasonbock.net/dotnetlanguages.html" TEXT="Mahdollisuus k&#xe4;ytt&#xe4;&#xe4; eri kieli&#xe4; kehitykseen (esim. C#, C++, J#, Object Pascalin .net-laajennukset), k&#xe4;&#xe4;nnet&#xe4;&#xe4;n MSIL (MicroSoft Intermediate language)-v&#xe4;likielelle" FOLDED="true">
<node TEXT="Esim. Delphi 8 on .NET-tuettu. Windows Formsin ohella voi k&#xe4;ytt&#xe4;&#xe4; VCL-kirjaston .NET-laajennusta, jossa suurin osa luokista on samat kuin aiemmissa versioissa" FOLDED="true">
<node TEXT="T&#xe4;st&#xe4; huolimatta Delphi 8 ei ole yhteensopiva aiempien versioiden kanssa eik&#xe4; sill&#xe4; voi kirjoittaa Win32-koodia"/>
<node TEXT="Mainosesitteiden mukaan vanhat projektit saisi VCL.NET:n avulla muunnettua &quot;helposti&quot; uuteen muotoon (ei testattu)"/>
</node>
<node TEXT="Moniperint&#xe4;&#xe4; ei tueta .NET-ymp&#xe4;rist&#xf6;ss&#xe4;, ei edes kieliss&#xe4;, joissa se muuten olisi (esim. c++)"/>
<node TEXT="Pohdittavaa: 0nko .NET todella kieliriippumaton, vai onko kyseess&#xe4; Microsoftin &quot;Common Language&quot; eri syntakseilla?" FOLDED="true">
<node TEXT="Esim. miten funktionaalinen ohjelmointi taipuu .net:iin (ainakin ML-kielest&#xe4; on .net-toteutus)"/>
</node>
</node>
<node TEXT="CTS (Common type system) yhten&#xe4;ist&#xe4;&#xe4; eri kielten tyypit"/>
<node TEXT="luokkia voidaan peri&#xe4; mill&#xe4; tahansa .net-kielell&#xe4; kirjoitetuista luokista"/>
<node TEXT="Muistinsiivous, osoittimien piilotus (kuten java)"/>
<node TEXT="framework-koodi k&#xe4;&#xe4;nnet&#xe4;&#xe4;n aina JIT-k&#xe4;&#xe4;nt&#xe4;j&#xe4;ll&#xe4;, joten .net koodin pit&#xe4;isi periaatteessa vastata suorituskyvylt&#xe4;&#xe4;n natiivikoodia (vrt. uudemmat java-virtuaalikoneet)"/>
<node TEXT="Mahdollisuus k&#xe4;ytt&#xe4;&#xe4; my&#xf6;s vanhaa windows-koodia (COM-komponentit ja DLL-kutsut)"/>
</node>
<node TEXT="Luokkakirjasto" FOLDED="true">
<node TEXT="Komponentteja sovelluskehitykseen" FOLDED="true">
<node TEXT="Konsolisovellukset"/>
<node LINK="http://www.windowsforms.net/" TEXT="Windows-k&#xe4;ytt&#xf6;liittym&#xe4;t (.net-terminologiassa Windows Forms)">
<node LINK="http://msdn.microsoft.com/netframework/using/building/windows/analystreports/smartclient.aspx" TEXT="Artikkeli: Smart client application model"/>
<node TEXT="&quot;smart/rich client&quot;: k&#xe4;ytt&#xe4;j&#xe4;n koneella ajettava .net-sovellus, suurin osa toteutuksesta ladataan web-palvelimelta ja p&#xe4;ivitet&#xe4;&#xe4;n tarvittaessa"/>
</node>
<node TEXT="ASP.NET (ASP-sivuja .NET-palvelinymp&#xe4;rist&#xf6;ss&#xe4;)"/>
<node TEXT="ADO.NET (ADO-tietokantayhteydet xml-tuella varustettuna)" FOLDED="true">
<edge WIDTH="thin"/>
<font NAME="SansSerif" SIZE="12"/>
<node TEXT=".net-tietokantayhteydet k&#xe4;ytt&#xe4;v&#xe4;t omia Provider-komponentteja"/>
<node TEXT="Palvelinkohtaisia provider-komponentteja saatavilla esim. MS SQL- ja Oracle-palvelimille"/>
<node TEXT="OleDB- ja ODBC-yhteyksi&#xe4; varten omat yleisk&#xe4;ytt&#xf6;iset providerit"/>
</node>
<node TEXT="Web-sovelluspalvelut"/>
<node TEXT="Windows-palvelinsovellukset"/>
</node>
<node TEXT="Luokat on organisoitu sis&#xe4;kk&#xe4;isiin nimiavaruuksiin (kuten javan paketit)"/>
<node TEXT="Yhdenn&#xe4;k&#xf6;isyys Javan luokkakirjaston (sek&#xe4; nimi- ett&#xe4; toimintatasolla) on h&#xe4;kellytt&#xe4;v&#xe4; (esim. s&#xe4;ili&#xf6;luokat)..."/>
</node>
</node>
<node TEXT=".NET sis&#xe4;ltyy vakiona Windows Server 2003:een, valinnaisesti Windows XP:en Service Pack 1:sta ja Windows 2000:een SP 3:sta alkaen. Lis&#xe4;ksi ymp&#xe4;rist&#xf6;n voi asentaa Windows 98:aan ja my&#xf6;hempiin."/>
<node LINK="http://www.mono-project.com/" TEXT=".NET frameworkist&#xe4; kehitteill&#xe4; my&#xf6;s avoimen l&#xe4;hdekoodin Linux-versio Mono (novellin sponsoroima). T&#xe4;st&#xe4; huolimatta .NET on k&#xe4;yt&#xe4;nn&#xf6;ss&#xe4; Windows-keskeinen."/>
<node TEXT=".NET-j&#xe4;rjestelm&#xe4;t kommunikoivat kesken&#xe4;&#xe4;n (ja muilla arkkitehtuureilla tehtyjen j&#xe4;rjestelmien kanssa) ensisijaisesti Web-sovelluspalveluina. My&#xf6;s yhteydet COM-komponentteihin ovat tuettuja (molempiin suuntiin)." FOLDED="true">
<node TEXT="Web-sovelluspalvelujen ongelmana heikko suorituskyky ja tuhlaileva verkon k&#xe4;ytt&#xf6;"/>
</node>
<node LINK="http://iiop-net.sourceforge.net/" TEXT=".NET ei ole suoraan yhteensopiva EJB- tai CORBA-komponenttien kanssa. Integrointij&#xe4;rjstelmi&#xe4; on kuitenkin saatavilla (esim. Borlandin Janeva, Open Source -puolelta iiop.net)"/>
<node TEXT="Ohjelmisto paketoidaan kokoelmaan (Assembly, yleens&#xe4; exe- tai dll-tiedosto), muistuttaa javan JAR-paketointia" FOLDED="true">
<node TEXT="Kokoelma sis&#xe4;lt&#xe4;&#xe4; kaikki ohjelman tarvitsemat kirjastot, k&#xe4;&#xe4;nnetyt kooditiedostot (.netmodule, vrt. javan .class) ja mahdollisesti resursseja (kuvat yms)"/>
<node TEXT="Kokoelman kirjastoja voidaan pit&#xe4;&#xe4; my&#xf6;s keskitetyss&#xe4; v&#xe4;limuistissa (Assembly cache), jolloin eri sovellukset voivat jakaa kirjastoja"/>
<node TEXT="Kokoelmien tarkoitus on ratkaista vanhojen windows-sovellusten dll-versiointiongelmat"/>
<node TEXT="Kokoelmia voidaan ladata web-palvelimelta tarvittaessa (vrt. java web start)"/>
</node>
</node>
<node TEXT="C#" FOLDED="true" POSITION="left">
<node TEXT="Materiaali: C# Builderin C# tutorial (l&#xf6;ytyy aloitussivulta)"/>
<node TEXT="Ensisijainen kieli .net-ohjelmointiin"/>
<node TEXT="C# vs java" FOLDED="true">
<node LINK="http://www.25hoursaday.com/CsharpVsJava.html" TEXT="Yleiselt&#xe4; semantiikaltaan l&#xe4;hes identtiset kielet (Dare Obasanjo: C# from java developer&apos;s perspective. ks. my&#xf6;s googlella java vs c#)"/>
<node TEXT="Pieni&#xe4; syntaktisia eroja (esim. javan paketit ovat c#:ss&#xe4; nimiavaruuksia"/>
<node TEXT="Oliopohjainen kieli, ei moniperint&#xe4;&#xe4;, rajapinnat tuettuja (kuten java)"/>
<node TEXT="c#:ss&#xe4; on standardi Dispose-rajapinta resurssien vapauttamiseen, jota k&#xe4;ytt&#xe4;j&#xe4; voi tarvittaessa kutsua itse (javan finalizea joustavampi)"/>
<node TEXT="c# sis&#xe4;lt&#xe4;&#xe4; luetellut tyypit (enum, tulevat java 1.5:een)"/>
<node TEXT="c#:ss&#xe4; mahdollista m&#xe4;&#xe4;ritell&#xe4; tietuetyyppej&#xe4;, joiden muistinhallinta perustuu pinoon (javassa mahdollista vain primitiivityypeill&#xe4;)"/>
<node TEXT="c#:ss&#xe4; on foreach-lause (vastaava mekanismi tulossa java 1.5:een)"/>
<node TEXT="oma syntaksi propertyjen m&#xe4;&#xe4;rittelyyn"/>
<node TEXT="c++:n tapaan operaattorien kuormitus sallittua"/>
<node TEXT="c# tukee funktioiden argumenttien v&#xe4;lityst&#xe4; viitearvoisena (call-by-reference, javassa vain call-by-value)"/>
<node TEXT="c#-koodissa oleva dokumentaatio XML:&#xe4;&#xe4;..."/>
<node TEXT="heitett&#xe4;vi&#xe4; poikkeuksia ei mainita koodissa (javan throws -lause)"/>
<node TEXT="c#:ss&#xe4; ei ole nimett&#xf6;mi&#xe4; sis&#xe4;luokkia"/>
<node TEXT="c#:ss&#xe4; voi k&#xe4;ytt&#xe4;&#xe4; c-tyylisi&#xe4; osoittimia, mutta vain, jos lohko on merkitty avainsanalla unsafe">
<node TEXT="roskienkeruu ei siirr&#xe4; unfafe-lohkon alla olevaa koodia"/>
</node>
<node TEXT="metodien m&#xe4;&#xe4;ritykseen on Delphin tapaan merkitt&#xe4;v&#xe4; erikseen virtuaaliset (virtual), syrj&#xe4;ytt&#xe4;v&#xe4;t (override) ja yliluokan m&#xe4;&#xe4;rityksen piilottavat (new) metodit "/>
</node>
<node TEXT="Esimerkki: C#-stream"/>
<node TEXT="C#-komponentit" FOLDED="true">
<node TEXT="Materiaali" FOLDED="true">
<node TEXT=".net framework sdk, component programming, events"/>
<node TEXT=".net framework sdk, windows forms controls, developing"/>
</node>
<node TEXT="Komponenttien luonti ja k&#xe4;ytt&#xf6;"/>
<node TEXT=".NET-terminologiassa Component ja Control tarkoittavat suurinpiirtein Delphin vastaavia: Component on IComponent-rajapinnan toteuttava luokka, jota voi k&#xe4;sitell&#xe4; lomakkeella (RAD-ymp&#xe4;rist&#xf6;ss&#xe4;), Controllilla on lis&#xe4;ksi oma k&#xe4;ytt&#xf6;liittym&#xe4;"/>
<node TEXT="Tapahtumak&#xe4;sittely" FOLDED="true">
<node TEXT="Tapahtumat ovat luokkia, jotka on peritty EventArgs-luokasta (vrt. Javan java.awt.Event)"/>
<node TEXT="Tapahtumank&#xe4;sittelij&#xe4;t merkit&#xe4;&#xe4;n tapahtuman l&#xe4;hett&#xe4;v&#xe4;ss&#xe4; luokassa delegaateiksi (vrt. javan tapahtumarajapinnat)" FOLDED="true">
<node TEXT="delegaatit ovat olioita, mutta vastaavat delphin funktio-osoittimia tai C++:n funktoreita"/>
<node TEXT="Delegaatilla m&#xe4;&#xe4;ritell&#xe4;&#xe4;n tapahtumank&#xe4;sittelij&#xe4;n argumentit"/>
<node TEXT="K&#xe4;yt&#xe4;nn&#xf6;ss&#xe4; delegaatit ovat &apos;syntaktista sokeria&apos; Delphin metodiosoitintyypille"/>
</node>
<node TEXT="Tapahtumat merkit&#xe4;&#xe4;n event-avainsanalla ja ovat delegaattityyppi&#xe4;. K&#xe4;&#xe4;nt&#xe4;j&#xe4; lis&#xe4;&#xe4; luokkaan kuormitetut += ja -= -operaattorit, joilla asiakasluokat voivat rekister&#xf6;id&#xe4; tapahtumak&#xe4;sittelij&#xf6;it&#xe4; (vrt. javan addEventListener)" FOLDED="true">
<node TEXT="event-avainsanan avulla k&#xe4;ytt&#xf6;liittym&#xe4; &quot;tunnistaa&quot; tapahtuman ja lis&#xe4;&#xe4; sen object inspectoriin"/>
<node TEXT="Huom. javan tapaan tapahtumalla voi olla useita k&#xe4;sittelij&#xf6;it&#xe4; (huom. delphiss&#xe4; ei ole oletuksena vastaavaa k&#xe4;sittely&#xe4;, ellei k&#xe4;ytet&#xe4; Windowsin viestej&#xe4; tai koodata toiminnallisuutta itse Delphin p&#xe4;&#xe4;lle)"/>
</node>
<node TEXT="Tapahtuma luodaan ja tapahtumak&#xe4;sittelij&#xf6;it&#xe4; kutsutaan yleens&#xe4; On-alkuisissa metodeissa (vrt. javan fire-metodit)" FOLDED="true">
<node TEXT="Delphiss&#xe4; suojatut virtuaaliset metodit (esim. Click, KeyPress)"/>
</node>
</node>
</node>
<node TEXT="Esimerkki: C#-autolaskuri"/>
</node>
<node TEXT="Web-sovelluspalvelut (WebServices)" FOLDED="true" POSITION="left">
<node TEXT="Materiaalia" FOLDED="true">
<node LINK="http://www.w3.org/2002/ws/" TEXT="W3C: Web Services Activity"/>
<node LINK="http://msdn.microsoft.com/webservices/" TEXT="Microsoft: Web services Developer center"/>
<node LINK="http://java.sun.com/webservices/" TEXT="Sun: Java Technology and web services"/>
<node LINK="http://weblogs.cs.cornell.edu/AllThingsDistributed/archives/000120.html" TEXT="Hyv&#xe4; kriittinen artikkeli: Web Services are not Distributed Objects (Werner Vogel)"/>
<node TEXT="Kompakti Delphi/Kylix-spesifinen artikkeli: Kylix 2 + XML, SOAP &amp; WebServices (Dr. Bob)"/>
</node>
<node TEXT="XML:n ohella (tai sen takia) yksi eniten hypetetyimpi&#xe4; k&#xe4;sitteit&#xe4; viime vuosina"/>
<node TEXT="W3C:n suositus sovellusten v&#xe4;liseen kommunikointiin verkon yli" FOLDED="true">
<node TEXT="Web-sovelluspalvelu on ohjelmisto, joka k&#xe4;sittelee muualta (yleens&#xe4; HTTP-protokollalla) tulevan XML-dokumentin (yleens&#xe4; SOAP-muotoinen)"/>
<node TEXT="Web-sovelluspalvelu m&#xe4;&#xe4;ritt&#xe4;&#xe4; rajapinnan, jonka avulla asiakassovellus voi l&#xe4;hett&#xe4;&#xe4; sille viestej&#xe4;. Rajapinta m&#xe4;&#xe4;ritell&#xe4;&#xe4;n yleens&#xe4; WSDL-kielell&#xe4;"/>
<node TEXT="Web-sovelluspalvelu sijaitsee verkossa, joten k&#xe4;yttj&#xe4;n on tiedett&#xe4;v&#xe4; palvelun osoite ja portti (k&#xe4;yt&#xe4;nn&#xf6;ss&#xe4; URL)"/>
<node TEXT="K&#xe4;yt&#xe4;nn&#xf6;n sovelluksissa v&#xe4;ltt&#xe4;m&#xe4;t&#xf6;nt&#xe4; on my&#xf6;s tekniikka, jolla SOAP-viestit muutetaan funktiokutsuiksi ja toisin p&#xe4;in. Esim. Delphi, Java ja C# tarjoavat t&#xe4;h&#xe4;n helppok&#xe4;ytt&#xf6;iset komponentit."/>
</node>
<node TEXT="Web-sovelluspalvelut eiv&#xe4;t ole (ihmisen luettavia) web-sivuja vaan tarkoitettu sovellusten k&#xe4;sittelyyn"/>
<node TEXT="Ei ole komponenttiarkkitehtuuri (vrt. com, corba) eik&#xe4; ole tarkoittu korvaamaan niit&#xe4;, mutta mahdollistaa eritt&#xe4;in joustavan ja yksinkertaisen kommunikoinnin heterogeenisten j&#xe4;rjestelmien v&#xe4;lill&#xe4;" FOLDED="true">
<node TEXT="Verrattuna &quot;oikeisiin&quot; komponenttiarkkitehtuureihin huomattavasti yksinkertaisempi ja rajoittuneempi j&#xe4;rjestelm&#xe4; (ei olioita, ei nimipalvelua, ei transaktioita ym, jotka CORBA- tai COM+ -komponenteilla saadaan ilmaiseksi)"/>
<node TEXT="Web-sovelluspalveluihin liittyv&#xe4;t standardit ja ty&#xf6;kalut eiv&#xe4;t ole l&#xe4;hellek&#xe4;&#xe4;n yht&#xe4; kehittyneit&#xe4; kuin komponenttiarkkitehtuureilla"/>
<node TEXT="Aidosti j&#xe4;rjestelm&#xe4;- ja kieliriippumaton (kiitos XML-viestinv&#xe4;lityksen)"/>
</node>
<node TEXT="Erityisesti web-palvelua tarjoavalla komponentilla ei ole tilaa! (kuten web-sivut)" FOLDED="true">
<node TEXT="Jokainen HTTP-kysely on erillinen tapahtumansa, jolla ei sellaisenaan ole yhteytt&#xe4; muihin kyselyihin"/>
<node TEXT="vrt. komponenttiarkkitehtuureissa p&#xe4;&#xe4;st&#xe4;&#xe4;n k&#xe4;sittelem&#xe4;&#xe4;n yksitt&#xe4;ist&#xe4; oliota pysyv&#xe4;n viitteen avulla suoraan asiakassovelluksessa. web-sovelluspalveluissa t&#xe4;m&#xe4; ei ole suoraan mahdollista."/>
<node TEXT="Tilatiedon voi web-sovellusten tapaan kuljettaa esim. osana kyselyjen parametreja"/>
<node TEXT="Delphiss&#xe4; palvelinolioiden luontia ja tuhoamista voi hallita manuaalisesti tRemotable-luokan DataContext-propertyn avulla. Lis&#xe4;ksi web-sovelluspalvelua luotaessa voi m&#xe4;&#xe4;ritell&#xe4; (service activation), luodaanko jokaista kysely&#xe4; varten uusi olio vai k&#xe4;ytet&#xe4;&#xe4;nk&#xf6; samaa, globaalia oliota."/>
</node>
<node TEXT="SOAP (Simple Object Access Protocol)" FOLDED="true">
<node LINK="http://www.topxml.com/soap/articles/soapservices/default.asp" TEXT="ks. soap tutorial"/>
<node TEXT="viestiprotokolla et&#xe4;proseduurikutsuja (=web-sovelluspalvelujen k&#xe4;ytt&#xf6;&#xe4;) varten" FOLDED="true">
<node TEXT="Huom. nimest&#xe4;&#xe4;n huolimatta protokollalla ei ole mit&#xe4;&#xe4;n tekemist&#xe4; _olioiden_ kanssa"/>
</node>
<node TEXT="Soap-viestit ovat XML-dokumentteja"/>
<node TEXT="Koska toimii yleens&#xe4; HTTP:n p&#xe4;&#xe4;ll&#xe4;, l&#xe4;p&#xe4;isee palomuurit" FOLDED="true">
<node TEXT="Huom. HTTP:n k&#xe4;ytt&#xf6; ei ole pakollista. Periaatteessa SOAP-viestin voi l&#xe4;hett&#xe4;&#xe4; vaikka s&#xe4;hk&#xf6;postilla, kunhan vastaanottava sovellus ymm&#xe4;rt&#xe4;&#xe4; sen"/>
<node TEXT="Formaali m&#xe4;&#xe4;ritys olemassa ainakin tominnasta suoraan UDP-protokollan p&#xe4;&#xe4;ll&#xe4;"/>
</node>
<node TEXT="Et&#xe4;proseduurikutsu ja palvelimen vastaus ovat erillisi&#xe4; SOAP-viestej&#xe4;"/>
<node TEXT="Ongelmia: protokolla on nimest&#xe4;&#xe4;n huolimatta melko mutkikas ja raskas k&#xe4;ytt&#xf6;tarkoitukseensa n&#xe4;hden" FOLDED="true">
<node TEXT="Esim. yhden kokonaisluvun l&#xe4;hetys ja vastaanotto vaatii kaksi yli 100-merkkist&#xe4; XML-dokumenttia + HTTP-headerit + TCP/IP-paketit!">
<node TEXT="Ks. W3schools, soap tutorial -esimerkki"/>
</node>
<node TEXT="Valmiit komponentit piilottavat protokollan toteutuksen, joten ohjelmoijan ei tarvitse yleens&#xe4; ottaa sit&#xe4; huomioon"/>
<node TEXT="Kilpailevia (yksinkertaisempia, mutta ominaisuuksiltaan rajoittuneempia) tekniikoita: XML-RPC ja REST-arkkitehtuurityyli -sivuutetaan t&#xe4;ss&#xe4;."/>
</node>
</node>
<node TEXT="WSDL (Web Service Description Language)" FOLDED="true">
<node TEXT="ks. wsdl tutorial (w3schools)"/>
<node TEXT="Kieli web-sovelluspalveluiden kuvaamiseen" FOLDED="true">
<node TEXT="M&#xe4;&#xe4;rittelee sovelluspalvelun tuntemat kyselyviestit- ja vastausviestit parametreineen ja tyyppeineen"/>
<node TEXT="datatyypit XML Schema -pohjaisia"/>
</node>
<node TEXT="xml-muotoinen &quot;rajapintam&#xe4;&#xe4;ritys&quot; tai kokoelma funktioiden &quot;prototyyppej&#xe4;&quot;"/>
<node TEXT="huom. delphi pystyy generoimaan web-sovelluspalveluille wsdl-kuvauksen rajapinnasta. asiakassovelluksia varten wsdl-kuvauksesta voi generoida koodin web-sovelluspalvelun kutsumiseen"/>
<node TEXT="tarkempi k&#xe4;sittely sivuutetaan."/>
</node>
<node TEXT="UDDI (Universal Description, Discovery and Integration)" FOLDED="true">
<node TEXT="Standardi palvelujen kuvaamiseen, etsimiseen ja integrointiin"/>
<node TEXT="&quot;keltaiset sivut&quot; internetiss&#xe4;"/>
<node TEXT="sivuutetaan.."/>
</node>
<node TEXT="Lyhyesti: termit _web_ service ja simple _object_ access protocol on nimetty kyseenalaisesti, koska sovelluspalvelut eiv&#xe4;t tarvitse www:t&#xe4; eik&#xe4; niill&#xe4; ole mit&#xe4;&#xe4;n tekemist&#xe4; olioiden kanssa" FOLDED="true">
<node TEXT="K&#xe4;yt&#xe4;nn&#xf6;ss&#xe4; web-palvelimet tarjoavat helposti k&#xe4;ytt&#xf6;&#xf6;notettavan infrastruktuurin sovelluspalveluille, joten termi j&#xe4;&#xe4;nee pysym&#xe4;&#xe4;n"/>
</node>
<node TEXT="Esimerkki: &quot;Where in the world is Sven Svensson&quot; (Anders Ohlsson), ks. my&#xf6;s babelfish"/>
<node LINK="http://soapclient.com/SoapServices.html" TEXT="soaplient.com - er&#xe4;it&#xe4; julkisia web-sovelluspalveluja"/>
</node>
<node TEXT="Dokumentointiohjelmat" FOLDED="true" POSITION="right">
<node TEXT="Idea: kirjoitetaan dokumentaatio osaksi l&#xe4;hdekoodia ja generoidaan esim. html-sivusto"/>
<node TEXT="Soveltuvat erityisesti yleisk&#xe4;ytt&#xf6;isen kirjaston dokumentointiin (API-dokumentaatiot). Dokumentaatiosta on helppoa tarkistaa, mit&#xe4; jokin tietty yksitt&#xe4;inen funktio tekee"/>
<node TEXT="Eiv&#xe4;t yleens&#xe4; sovellu laajempien kokonaisuuksien ja olioiden dynaamisen toiminnan ja suhteiden dokumentointiin" FOLDED="true">
<node TEXT="Esim. javadoc generoi luokkahierarkian, mutta ei luokkakaavioita (t&#xe4;h&#xe4;n on olemassa DocLetteja)"/>
<node TEXT="Sekvenssi- tai tilakaavioiden generointi/k&#xe4;sittely onnistuu yleens&#xe4; vain kaupallisilla CASE-ohjelmilla.."/>
</node>
<node TEXT="Yleisi&#xe4; dokumentointiohjelmia" FOLDED="true">
<node TEXT="JavaDoc (Javan standardi)" FOLDED="true">
<node TEXT="Lienee kaikille tuttu javan dokumentaatiosta"/>
<node TEXT="Dokumentaation sekaan voi laittaa HTML-koodia"/>
<node TEXT="Mahdollistaa omien muotoilijoiden m&#xe4;&#xe4;rittelyn (docletit)"/>
</node>
<node TEXT="C#:n XML-kommentit (C#:n standardi)" FOLDED="true">
<node TEXT="Luo XML-muotoisen dokumentaation"/>
<node TEXT="Nopeasti katsottuna vaikuttaa JavaDocia rajoittuneemmalta j&#xe4;rjestelm&#xe4;lt&#xe4; (XML:n kirjoittaminen k&#xe4;sin osaksi l&#xe4;hdekoodia on tuskaa.)"/>
<node TEXT="XML-ulostulo mahdollistaa periaatteessa k&#xe4;yt&#xf6;n eri formaateissa (XSLT-muunnokset) ja edelleen dokumentaation j&#xe4;lkik&#xe4;sittelyn"/>
<node TEXT="Huom. XML-formaatti ei tue skeeman tasolla mill&#xe4;&#xe4;n tasolla ohjelman rakenteita (esim. skeemassa ei ole luokan tai nimiavaruuden k&#xe4;sitteit&#xe4;, olennaisesti dokumentaatio on vain kasa &quot;member&quot;-tageja, jotka voivat olla mit&#xe4; tahansa nimiavaruuksista metodeihin)">
<node TEXT=" =&gt; J&#xe4;lkik&#xe4;sittely ty&#xf6;l&#xe4;st&#xe4;!"/>
</node>
</node>
<node TEXT="Doxygen (C++ ym.)" FOLDED="true">
<node TEXT="Perinteinen ja monipuolinen dokumenttigeneraattori, ei tue valitettavasti Delphi&#xe4;..."/>
<node TEXT="Luo miellytt&#xe4;vi&#xe4; selattavia HTML-luokkakaavioita"/>
</node>
<node TEXT="DIPasDoc (Delphi)" FOLDED="true">
<node TEXT="Ilmainen ja helppok&#xe4;ytt&#xf6;inen dokumenttigeneraattori Delphille"/>
<node TEXT="Asennettu IT-luokan koneille"/>
<node TEXT="Kannattaa kokeilla omaan koodiin!"/>
</node>
</node>
<node TEXT="Testataan p&#xe4;&#xe4;teohjauksissa..."/>
</node>
<node TEXT="Asennusohjelmat" POSITION="right">
<node TEXT="Delphiss&#xe4; mukana: InstallShield (esimerkki?)" FOLDED="true">
<node TEXT="Varoitus: InstallShieldiss&#xe4; on bugi, joka ilmenee k&#xe4;ytett&#xe4;ess&#xe4; ODBC-tietol&#xe4;hteit&#xe4;. Bugi ilmenee virheilmoituksena asennuksen aikana ja sen korjaaminen vaatii MSI-tiedoston muuttamista k&#xe4;sin"/>
<node LINK="http://support.installshield.com/kb/view.asp?articleid=Q106747" TEXT="Ongelmasta lis&#xe4;&#xe4; : installshield"/>
<node LINK="http://msi2xml.sourceforge.net/" TEXT="MSI-tiedostojen muokkaamisessa auttaa esim. msi2xml-ohjelma"/>
</node>
<node TEXT="Huom. asettamalla Delphiss&#xe4; projektin asetusten packages-v&#xe4;lilehdell&#xe4; voi m&#xe4;&#xe4;ritell&#xe4;, liitet&#xe4;&#xe4;nk&#xf6; kaikki ohjelman tarvitsemat bpl-kirjastot exe-tiedostoon">
<node TEXT="jos build with runtime packages on p&#xe4;&#xe4;ll&#xe4;, bpl-tiedostoja ei liitet&#xe4;"/>
<node TEXT="bpl-tiedostojen liitt&#xe4;minen helpottaa ohjelman jakamista, mutta vie ylim&#xe4;&#xe4;r&#xe4;ist&#xe4; tilaa, jos useampi ohjelma tarvitsee samat kirjastot"/>
<node TEXT="yleiset delphi-sovelluksiin liittyv&#xe4;t runtime-kirjastot ovat yleens&#xe4; windowsin system32-hakemistossa">
<node TEXT="useimmat sovellukset tarvitsevat ainakin rtl70.bpl-kirjaston, graafiset my&#xf6;s vcl70.bpl:n tietokantasovellukset my&#xf6;s vcldb70.bpl:n, jne.."/>
<node TEXT="k&#xe4;yt&#xe4;nn&#xf6;ss&#xe4; tarvittavat kirjastot on aina syyt&#xe4; testata koneella, jossa ei ole Delhpi&#xe4; (tai bpl-kirjastot siirretty tilap&#xe4;isesti pois system32-hakemistosta)"/>
</node>
</node>
<node TEXT="ilmaisia asennusohjelmia my&#xf6;s saatavilla, esim. Inno Setup"/>
<node TEXT="Useimmat nyky&#xe4;&#xe4;n k&#xe4;yt&#xf6;ss&#xe4; olevat windows-asennusohjelmat k&#xe4;ytt&#xe4;v&#xe4;t sis&#xe4;isesti Windowsin omaa Install APIa, tuloksena MSI-asennustiedosto, joka paketoidaan EXE-tiedostoon (+mahdollisesti Windowsin oman asennusj&#xe4;rjestelm&#xe4;n uusin versio mukaan)"/>
<node TEXT="Java-puolella omat installointiohjelmansa (runsaasti!), esim. InstallAnywhere" FOLDED="true">
<node TEXT="K&#xe4;yt&#xe4;nn&#xf6;ss&#xe4; monet java-ohjelmat saa asennettua ilman erillist&#xe4; installointiohjelmaa JAR/WAR/EAR-pakkauksena"/>
</node>
<node TEXT="Esimerkki: laskuriconfiguration"/>
</node>
<node TEXT="Tulevaisuus?" FOLDED="true" POSITION="right">
<node TEXT="Web-sovellusten ja desktop-sovellusten k&#xe4;ytt&#xf6;liittym&#xe4;kehitys yhten&#xe4;istyy" FOLDED="true">
<node TEXT="T&#xe4;m&#xe4; olisi ainakin toivottavaa kehityst&#xe4;..." FOLDED="true">
<node TEXT="Nykyiset tavat web-k&#xe4;ytt&#xf6;liittymien tuottamiseen (suora html-koodin generointi esim. servletill&#xe4; tai ulkoasun ja koodin sekoittaminen PHP/JSP/ASP-tyyliin) eiv&#xe4;t ole yll&#xe4;pidett&#xe4;v&#xe4; tapa eiv&#xe4;tk&#xe4; tue kunnon k&#xe4;ytt&#xf6;liittym&#xe4;suunnittelua"/>
<node TEXT="Puhtaisiin web-k&#xe4;ytt&#xf6;liittymiin saatavilla suunnitteluty&#xf6;kaluja (Dreamweaver ym), mutta ne eiv&#xe4;t yleens&#xe4; toimi yhteen dynaamisesti generoidun koodin kanssa. Lis&#xe4;ksi niiden tuki web-standardeille (validi &amp; saavutettava koodi ym) vaihtelee."/>
</node>
<node TEXT="Jo nyt toimiva esimerkki Delphill&#xe4;" FOLDED="true">
<node TEXT="Web-autolaskuri"/>
<node TEXT="Perustuu Borlandin IntraWeb-tekniikkaan" FOLDED="true">
<node TEXT="Web-lomakkeita voi suunnitella kuten windows-k&#xe4;ytt&#xf6;liittymi&#xe4;"/>
<node TEXT="Windows-kontrollien sijaan k&#xe4;ytet&#xe4;&#xe4;n IntraWeb (IW) -kontrolleja"/>
<node TEXT="Kontrollien tapahtumak&#xe4;sittelij&#xe4;t luovat JavaScript-tapahtumak&#xe4;sittelij&#xf6;it&#xe4;"/>
<node TEXT="Web-sovelluksen voi ajaa Delphiin sis&#xe4;&#xe4;nrakennetulla Intraweb-sovelluspalvelimella tai osana oikeaa web-palvelinta (CGI, Apache-moduuli ym)"/>
<node TEXT="Sovelluspalvelin luo lomakesuunnitelman perusteella &quot;sopivan&quot; web-sivun riippuen k&#xe4;ytt&#xe4;j&#xe4;n selaimesta">
<node TEXT="Varoitus: generoitu koodi on varsin sekava lomake/javascript-viritys... Dokumentaation lupauksista huolimatta toimivuus eri selaimilla ja k&#xe4;ytt&#xf6;j&#xe4;rjestelmill&#xe4; voi olla riskialtista"/>
<node TEXT="Korppi-j&#xe4;rjestelm&#xe4;n kehitt&#xe4;j&#xe4; Kurki oli kehitetty IntraWebi&#xe4; muistuttavalla j&#xe4;rjestelm&#xe4;ll&#xe4; ja siin&#xe4; oli runsaasti selainten v&#xe4;lisist&#xe4; eroista johtuvia k&#xe4;ytett&#xe4;vyysongelmia - t&#xe4;st&#xe4; huolimatta lupaava tekniikka."/>
</node>
</node>
</node>
<node TEXT=".NET-frameworkin web forms lupaa kehittyneemp&#xe4;&#xe4; tukea t&#xe4;h&#xe4;n suuntaan (ei testattu, joten t&#xe4;st&#xe4; ei enemp&#xe4;&#xe4;)"/>
<node TEXT="Win98+IE - integraation my&#xf6;t&#xe4; Web-pohjaiset k&#xe4;ytt&#xf6;liittym&#xe4;t ovat yleistyneet my&#xf6;s Desktop-sovelluksissa, joten yhten&#xe4;istyminen kulkee molempiin suuntiin..."/>
<node TEXT="Web-k&#xe4;ytt&#xf6;liittym&#xe4;n saa helposti sovellukseen mukaan Explorer-selainkomponentin avulla"/>
</node>
<node TEXT="&quot;fiksut&quot; asiakassovellukset" FOLDED="true">
<node LINK="http://msdn.microsoft.com/netframework/programming/winforms/richclient.aspx" TEXT="&quot;Return of the rich clients&quot;"/>
<node TEXT="WWW:n nousun ja vakiintumisen my&#xf6;t&#xe4; on taas/vihdoin havaittu, ett&#xe4; kaikkea ei kannata tehd&#xe4; web-sovelluksina (microsoftilla on t&#xe4;ss&#xe4; toki my&#xf6;s omat intressins&#xe4;...)" FOLDED="true">
<node TEXT="Client/Server-malli uusissa vaatteissa"/>
</node>
<node TEXT="Tarkoittaa k&#xe4;yt&#xe4;nn&#xf6;ss&#xe4; itse itsens&#xe4; p&#xe4;ivitt&#xe4;vi&#xe4; ja riippuvuusongelmat ratkaisevia sovelluksia, jotka ajetaan asiakaskoneella (erityisesti k&#xe4;ytt&#xf6;liittym&#xe4;n&#xe4; voidaan k&#xe4;ytt&#xe4;&#xe4; t&#xe4;ll&#xf6;in k&#xe4;ytt&#xf6;j&#xe4;rjestelm&#xe4;n natiivikomponentteja)" FOLDED="true">
<node TEXT="Tavoite: v&#xe4;ltet&#xe4;&#xe4;n perinteisten client/server-sovellusten p&#xe4;ivitys/levitysongelmat, mutta saadaan monipuoliset k&#xe4;ytt&#xf6;liittym&#xe4;komponentit ja oikeudet hy&#xf6;dynt&#xe4;&#xe4; k&#xe4;ytt&#xe4;j&#xe4;n koneen resursseja"/>
</node>
<node TEXT="Pohjatekniikkana esim. java web start tai .net-assemblyjen lataus verkosta"/>
<node TEXT="Koska l&#xe4;hes kaikissa uusissa sovelluksissa on jo v&#xe4;hint&#xe4;&#xe4;n automaattiset p&#xe4;ivitykset, t&#xe4;m&#xe4; on hyvin pitk&#xe4;lle jo nykyisyytt&#xe4;.."/>
</node>
<node TEXT="Uusi tekniikka asiakassovelluksiin: skriptatut XML-k&#xe4;ytt&#xf6;liittym&#xe4;t" FOLDED="true">
<node TEXT="Materiaalia: " FOLDED="true">
<node LINK="http://www.xulalliance.org/" TEXT="XUL Alliance"/>
<node LINK="http://msdn.microsoft.com/longhorn/" TEXT="Microsoft: Longhorn Developer Center"/>
<node LINK="http://www.mozilla.org/projects/xul/" TEXT="Mozilla XUL"/>
</node>
<node TEXT="L&#xe4;ht&#xf6;kohta: &quot;Web Applications&quot;?" FOLDED="true">
<node LINK="http://www.quirksmode.org/oddsandends/webapplications.html" TEXT="Peter Paul Koch: Web Applications, promise or hype?"/>
<node TEXT="Ongelma: standardit web-komponentit (my&#xf6;s javascript-k&#xe4;sittelyn j&#xe4;lkeen) ovat rajoittuneita!" FOLDED="true">
<node TEXT="Esim. vertaa WebMailia l&#xe4;hes mihin tahansa (jopa tekstipohjaiseen) Oikeaan s&#xe4;hk&#xf6;postiohjelmaan! (t&#xe4;m&#xe4; on tietysti makuasia... :-)"/>
</node>
<node TEXT="&quot;Web applications&quot; tarkoittaa web-sivujen toiminnallisuuden laajentamista enemm&#xe4;n desktop-sovellusten suuntaan" FOLDED="true">
<node TEXT="HTML+javascript+xforms...?"/>
<node TEXT="Mac OSX:n widgetit"/>
<node TEXT="DHTML entist&#xe4; kehittyneemp&#xe4;n&#xe4;?"/>
</node>
<node TEXT="Idea: Miksei my&#xf6;s Desktop-sovelluksia voisi m&#xe4;&#xe4;ritell&#xe4; web-sivujen tapaan?"/>
</node>
<node TEXT="Lyhyesti: m&#xe4;&#xe4;ritell&#xe4;&#xe4;n k&#xe4;ytt&#xf6;liittym&#xe4; ja tapahtumak&#xe4;sittelij&#xf6;iden kutsuminen web-sivujen tyyliin">
<node TEXT="Tapahtumak&#xe4;sittelij&#xf6;iden koodi on erillisiss&#xe4; komponenteissa (vrt. JSP-sivut, joista kutsutaan JavaBeaneja)"/>
</node>
<node TEXT="Mozilla" FOLDED="true">
<node LINK="http://www.mozilla.org/projects/xul/joy-of-xul.html" TEXT="Artikkeli: The Joy of XUL"/>
<node TEXT="XUL+JavaScript+XPCOM">
<node TEXT="XUL == XML User Interface language, alunperin Mozillan k&#xe4;ytt&#xf6;liittym&#xe4;kieli, sittemmin yleistynyt tarkoittamaan XML-kieli&#xe4;, jotka on tarkoitettu k&#xe4;ytt&#xf6;liittymien kuvaamiseen"/>
<node TEXT="XPCOM - Mozillan klooni COM-komponenttiarkkitehtuurista">
<node TEXT="Javascriptill&#xe4; tapahtumak&#xe4;sittelij&#xf6;ist&#xe4; kutsuttavia komponentteja!"/>
</node>
</node>
<node TEXT="&quot;Alkuper&#xe4;inen&quot; XML-k&#xe4;ytt&#xf6;liittymi&#xe4; hy&#xf6;dynt&#xe4;v&#xe4; sovellus"/>
<node TEXT="Aiheuttanut valtaisan Plugin/laajennusry&#xf6;pyn Mozillaan ja FireFoxiin">
<node TEXT="Mozillan C++ -kielisen ytimen koodaaminen on harvojen gurujen toimintaa"/>
<node TEXT="XUL/Javascriptin:n k&#xe4;ytt&#xf6; on huomattavasti helpompaa ja turvallisempaa =&gt; enemm&#xe4;n kehitt&#xe4;ji&#xe4;"/>
</node>
</node>
<node TEXT="Windows Longhorn" FOLDED="true">
<node LINK="http://msdn.microsoft.com/longhorn/understanding/pillars/avalon/default.aspx?pull=/msdnmag/issues/04/01/Avalon/default.aspx" TEXT="Artikkeli: Code name Avalon..."/>
<node TEXT="Windows XP:n jo nyt ylihypetetty seuraaja"/>
<node TEXT="WinAPI:n korvaaja: .NET:n p&#xe4;&#xe4;ll&#xe4; py&#xf6;riv&#xe4; WinFX" FOLDED="true">
<node TEXT="Tullee saataville my&#xf6;s XP:lle ja Windows 2003:lle"/>
<node TEXT="Avalon: 3d-kiihdytetty esitysj&#xe4;rjestelm&#xe4; ja k&#xe4;ytt&#xf6;liittym&#xe4;kirjasto" FOLDED="true">
<node TEXT="XAML (Extensible Application Markup Language): xml-pohjainen kieli sovellusten k&#xe4;ytt&#xf6;liittym&#xe4;n m&#xe4;&#xe4;rittelyyn"/>
<node TEXT="K&#xe4;ytt&#xf6;liittym&#xe4;kirjasto sis&#xe4;lt&#xe4;&#xe4; Windows Forms -komponentit, mutta varsinaiset Avalon-komponentit ovat taas uusi kirjastonsa..."/>
<node TEXT="Windows Forms-komponentit voivat sis&#xe4;lt&#xe4;&#xe4; Avalon-komponentteja ja toisinp&#xe4;in"/>
<node TEXT="Avalon-sovellukset muistuttavat Web-sivustoja: &quot;ikkunoiden&quot; sijaan sovellus koostuu skriptatuista lomakesivuista"/>
<node TEXT="Saman sovelluksen voi ajaa ty&#xf6;p&#xf6;yd&#xe4;ll&#xe4; tai WWW:ss&#xe4; (todenn&#xe4;k&#xf6;isesti vain IE:ll&#xe4;, tosin...)"/>
</node>
<node TEXT="Indigo: web-sovelluspalveluihin perustuva viestij&#xe4;rjstelm&#xe4;, jolla longhorn-sovelluksia voi liitt&#xe4;&#xe4; toisiinsa" FOLDED="true">
<node TEXT="yksityiskohdat hukkuivat markkinointimateriaaliin..."/>
</node>
</node>
<node TEXT="Huom! Longhornin yksityiskohdat tulevat varmasti viel&#xe4; muuttumaan. T&#xe4;m&#xe4;nhetkinen virallinen julkaisup&#xe4;iv&#xe4; on vuoden 2006 puolella ja uusi tiedostoj&#xe4;rjestelm&#xe4; WinFS p&#xe4;&#xe4;tettiin &#xe4;skett&#xe4;in j&#xe4;tt&#xe4;&#xe4; pois julkaisuversiosta."/>
</node>
<node TEXT="Teoriassa voitaisiin m&#xe4;&#xe4;ritell&#xe4; yleinen XML-pohjainen k&#xe4;ytt&#xf6;liittym&#xe4;n kuvausformaatti, jota eri sovelluskehittimet voisivat k&#xe4;ytt&#xe4;&#xe4;" FOLDED="true">
<node TEXT="K&#xe4;yt&#xe4;nn&#xf6;ss&#xe4; ei onnistu, koska kaikissa k&#xe4;ytt&#xf6;liittym&#xe4;kirjastoissa (mukaanlukien &quot;cross-platform&quot;-kirjastot)  on oma terminologiansa"/>
<node TEXT="Lis&#xe4;ksi kilpailevia XML-k&#xe4;ytt&#xf6;liittymi&#xe4; on t&#xe4;ll&#xe4; hetkell&#xe4; _runsaasti_ "/>
<node TEXT="K&#xe4;yt&#xe4;nn&#xf6;ss&#xe4; olisi viritetty versio windowsin vanhoista RC-tiedostoista..."/>
<node TEXT="Yksitt&#xe4;isten kehittimien/kirjastojen k&#xe4;ytt&#xf6;liittym&#xe4;t ovat usein jo nyt kuvattu XML:n&#xe4;"/>
</node>
</node>
<node TEXT="Mahdollinen malli tulevaisuuden hajautettuihin sovelluksiin: palvelinsovellukset Java-pohjaisia (EJB-komponentit, JSP-k&#xe4;ytt&#xf6;liittym&#xe4;t), asiakassovellukset .NET-pohjaisia (Windows forms, Delphi.NET)"/>
<node TEXT="Varmaa: moninaiset tekniikat, komponenttiarkkitehtuurit, kielet, frameworkit, sovelluspalvelimet ja -kehittimet eiv&#xe4;t h&#xe4;vi&#xe4; mihink&#xe4;&#xe4;n, vaan pysyv&#xe4;t edelleen v&#xe4;hint&#xe4;&#xe4;n &apos;legacy&apos;-sovelluksissa" FOLDED="true">
<node TEXT="Osaava koodaaja pystyy vaihtamaan joustavasti ymp&#xe4;rist&#xf6;st&#xe4; toiseen, koska pohjalla olevat periaatteet muuttuvat hitaammin kuin p&#xe4;iv&#xe4;n muotisanat"/>
<node LINK="http://www.joelonsoftware.com/articles/APIWar.html" TEXT="Pohdittavaa: &quot;How Microsoft lost the APi war&quot; (Joel Spolsky)"/>
</node>
</node>
</node>
</map>
