I N F O W A R EVISUAL STUDIO .NET II.vývojové štúdio novej generácieWEB SERVICESXML webové sluby sú jedným z uholných kameòov.NET Frameworku. Po<strong>sk</strong>ytujú informácie cezdefinované rozhranie, vybudované <strong>na</strong> internetovýchprotokoloch. Ich prednosou je jednoduchos,s akou sú <strong>na</strong> internete sprístupnite¾né. Prístupk nim môe by pritom obmedzený len pre autorizovanýchklientov. Kombináciou XML Web Servicesa internetu sa dá vytvori široká paleta hodnotnýchaplikácií (<strong>na</strong>pr. unifikované bankové sluby,platenie faktúr, obchodovanie s akciami, poisovaciesluby atï.).XML webové sluby nie sú sprístupòované cezDCOM alebo RMI IIOP (Internet Inter-ORB Protocol).Pouívajú štandardné webové protokoly (<strong>na</strong>pr.HTTP) a dátové formáty (XML). Primárnym formátomspráv implementácie webových sluieb od Microsoftuje SOAP.Webové sluby sú opísané tzv. kontraktom, ktorýsa <strong>na</strong>jèastejšie pouíva vo formáte XML súboruspåòajúceho štandard Web Services DescriptionLanguage (WSDL). WSDL dokument obsahuje opisnýformát s urèením vstupných parametrov, výstupnýchtypov a opisom kadej metódy zverejnenejwebovou slubou. Tento samoopisný dokumentobsahuje dostatok informácií pre programátora,ktorý bude chcie vytvori klient<strong>sk</strong>y program pouívajúciwebovú slubu.Ak h¾adáte <strong>na</strong> internete webovú slubu, mali byste sa obráti <strong>na</strong> registre UDDI (Universal Description,Discovery and Integration), ktoré obsahujúzoz<strong>na</strong>my zverejnených a registrovaných webovýchsluieb. (UDDI register Microsoftu má URLadresu http://uddi.microsoft.com/default.aspx.Praktickou ukákou portálu <strong>na</strong> UDDI Business Registry– obchodný register UDDI – nájdete <strong>na</strong> adresehttp://<strong>www</strong>.soapclient.com/uddisearch.html.)Webová sluba v implementácii Microsoftu je voformáte súboru .asmx, spúšanom <strong>na</strong>d ASP. NET. Prijej inštalácii musíte v Microsoft Internet InformationServices (IIS) <strong>na</strong>stavi virtuálny adresár, doktorého umiestnite .asmx kód webovej sluby. Ak si„<strong>na</strong>browsujete“ URL adresu .asmx súboru, servervráti opisnú HTML stránku webovej sluby, obsahujúcuzoz<strong>na</strong>m metód sluby s monosou ichokamitého od<strong>sk</strong>úšania. V prípade, e si „<strong>na</strong>browsujete“webovú slubu s parametrom ?SDL, servervráti dokument WSDL. V prostredí Visual Studia.NET môete vytvori projekt webovej sluby vytvorenímnového projektu (vo Visual Basicu .NET alebov C#) výberom šablóny ASP .NET Web Service.Visual Studio .NET vygeneruje všetky potrebnésúbory aj s predpripravenou demonštraènou metódou„HelloWorld“ (obr. 1).Okrem spomí<strong>na</strong>ného jadrového súboru .asmxvygeneruje VS .NET automaticky aj XML súborweb.config, ktorý obsahuje konfiguraèné vo¾by <strong>na</strong>spracovanie webovej sluby v prostredí ASP .NET.Ïalší vygenerovaný súbor v projekte s príponouObr. 1 Súbory webovej sluby, automatickyvygenerované VS .NETdisco je XML súbor pouívaný klient<strong>sk</strong>ymi aplikáciami,pretoe zgrupuje WSDL a schému sluby.Bezpeènos webových sluieb je postavená <strong>na</strong>ASP .NET. Bezpeènostné poiadavky webovej slubysú podobné tým, ktoré je potrebné zabezpeèi<strong>na</strong>pr. v hypermarketoch. Drvivá väèši<strong>na</strong> ¾udí chodído hypermarketu anonymne, <strong>na</strong>vštevuje rôzne oddeleniaa butiky. V tom istom hypermarkete sú všakmiesta (pokladne, kancelárie), do ktorých môuvojs len ¾udia s overenou identitou (sú autentifikovaní)a pracujúci práve vo vybranej kancelárii (autorizovaní).MS IIS 5 podporuje autentifikácie Basic,Basic cez SSL, Digest (keï sa <strong>na</strong> prenos prístupovýchinformácií pouíva <strong>na</strong>vyše hashovanie), integrovanúWindows autentifikáciu alebo klient<strong>sk</strong>e certifikáty.Webové sluby implementované v ASP .NET jemoné vola z klient<strong>sk</strong>ych aplikácií tromi spôsobmi– cez HTTP GET (URL adresa sluby s parametromzverejnenej metódy), HTTP POST (odoslanie po-iadavky <strong>na</strong> slubu cez HTML formulár) a výmenouSOAP správ. Pri programovaní klient<strong>sk</strong>ej stranywebovej sluby s výmenou SOAP správ pouíva.NET tzv. triedy proxy, ktoré majú zjednodušený,<strong>na</strong> funkcii zaloený prístup k webovým slubámpo<strong>sk</strong>ytovaným ¾ubovo¾ným typom servera akceptujúcehopoiadavky HTTP. Proxy triedy obsahujúfunkcie, ktoré sú mapovaním metód ponúkanýchwebovou slubou. Keï klient zavolá jednu z týchtofunkcií, trieda proxy vygeneruje HTTP poiadavkua pošle ju <strong>na</strong> server. Pri návrate ohlasu vo formáteXML sa trieda proxy postará o jeho „rozparsovanie“a vráti výsledky vo funkcii jadru klient<strong>sk</strong>ej aplikácie.Volanie zverejnených metód webovej slubymôe trva aj nieko¾ko sekúnd. Pouívate¾ nemôetakú dobu pozera <strong>na</strong> nehybnú obrazovku aplikácie,preto sa musí volanie u<strong>sk</strong>utoèni z iného aplikaènéhovlák<strong>na</strong> bez „zamrznutia“ pouívate¾<strong>sk</strong>éhorozhrania. K <strong>na</strong>programovaniu asynchrónnej komunikácieklient<strong>sk</strong>ej aplikácie s webovou slubouobsahuje trieda proxy metódu s menom Beginmethod<strong>na</strong>me(teda <strong>na</strong>pr. BeginGetTime), ktorá štartujeasynchrónnu komunikáciu s webovou slubou.Ako zistíte, e výsledky spracovania webovouslubou sú u pripravené? Objekt IAsyncResultobsahuje metódu IsCompleted, ktorá vráti hodnotytrue alebo false, indikujúce stav spracovania po-iadavky.Na pouitie XML webovej sluby z aplikáciívytváraných v prostredí VS.NET staèí do projektuprida webový odkaz <strong>na</strong> webovú slubu cez príkazAdd Web Reference.C#Z radov programátorov C++ pouívajúcich VisualStudio sa v Microsofte hromadili poiadavky <strong>na</strong>zjednodušenie jazyka a obohatenie o vlastnosti,ktoré sú implementované <strong>na</strong>pr. v Jave. Microsoftpoiadavky programátorov rozviedol a pustil sa dovytvorenia nového jazyka, ktorý je dostatoène jednoduchý(ako Visual Basic), ale pritom dostatoènevýkonný a flexibilný ako C++. Nový jazyk, <strong>na</strong>zvanýC# ("sí-šárp"), sa pýši zabezpeèením typov, správoupamäte (garbage collection), zjednodušenýmideklaráciami typov, správou verzií, podporouškálovate¾nosti s monosou rýchleho vývoja (<strong>na</strong>pr.COM+ a Web Services).C++ je „mocný“ jazyk, ale jeho pouívanie nieje rozhodne prechádzka parkom. Po dlhšom pouívaníVisual Basicu si pri programovaní v C++obèas poloíte otázku, preèo v C++ treba imple-88 PC REVUE 1/2002
I N F O W A R Ementova deštruktor pre kadú triedu. Ak vásobèas prepadnú takéto myšlienky, ale pritom savám C alebo C++ páèia, <strong>sk</strong>úste C#.C# je vytvorený <strong>na</strong>d .NET Framework. Medzihlavné ciele tvorby nového jazyka patrila zaruèenejednoduchos. V C# sú všetky operátory sprístupneniaèlenov triedy a pointerov reprezentovanébodkou. Unicode character nie je viacwchar_t, ale char; 64-bitový integer je long, nie__int64. C# po<strong>sk</strong>ytuje typ bool s hodnotamitrue alebo false. V zoz<strong>na</strong>me dátových typovpodporovaných C# nájdete aj v SQL èastopouívané typy decimal a string. Je jasné, e zajednoduchos v C# zaplatíte miernym zhoršenímvýkonu, zí<strong>sk</strong>ate však zabezpeèenie typova automatické upratovanie pamäte. C# tak tvorístabilnejšie a <strong>na</strong>koniec aj produktívnejšie programy.C# unifikuje typový systém tak, e vámumoní vidie kadý typ ako objekt. Objekty sú<strong>sk</strong>ombinované do <strong>na</strong>mespacespre jednoduchší prístup. Akvytvoríte komplexný komponent,môete ho da do vlastného<strong>na</strong>mespace a zverejòovanémetódy deklarujete ako public.Ak vytvoríte triedy s rov<strong>na</strong>kýmmenom vo viacerých <strong>na</strong>mespaces,C# vám umoní <strong>na</strong>definovapre ne aliasy. C aC++ aj <strong>na</strong>priek neustálemuvývoju obsahujú historicképrvky, ktorých dodriavanie jepri programovaní u<strong>na</strong>vujúce.C# prichádza so zabezpeèenímtypov (type safety) <strong>na</strong> zaisteniestability aplikácie a zároveò <strong>na</strong>zvýšenie èitate¾nosti kódu.Oproti C++ má C# bohatšímodel <strong>na</strong> spracovanie chýb.Obsahuje podporu pre spracovanievýnimiek cez štruktúry príkazov throw,try…catch a try…fi<strong>na</strong>lly. Debugovací proces jeobohatený o podmienkové k¾úèové slovo <strong>na</strong> kontrolubehu programu [conditio<strong>na</strong>l("DEBUG")].Keïe C# vychádza z C++, implementuje,samozrejme, štandardné objektové programovanie.V sharpe môete vytvára static èlenov tried,èím zjednodušujete èitate¾nos kódu a zniujetenáchylnos ku konfliktom v názvosloví. Èlenoviatriedy v C# môu by definovaní ako private,protected, public alebo inter<strong>na</strong>l. Metódy a operáciesa dajú v C# preai jednoduchšou syntaxouako v C++. Pre COM+ programátorov jedôleitá informácia, e komponentový modelCOM+ podporuje v C# k¾úèové slovo delegates,èo je objektovo orientovaný ekvivalent pointerov<strong>na</strong> funkcie v C++.C# automaticky neinicializuje lokálne premenné,kompilátor vás však upozorní <strong>na</strong>pouitie premennej pred jej inicializáciou. Keï sisprístupníte pole, automaticky sa <strong>sk</strong>ontrolujejeho rozsah. Na rozdiel od C a C++ nemôeteprepísa nealokovanú pamä a nemôete vytvorineplatnú referenciu. Garbage collection v C#zaistí, aby ste v kóde nenechali nepouívanézablúdené odkazy. Do vlastností jazyka patrí ajkontrola „preteèenia“ typov.Obr. 2 Nastavenie atribútového programovania pre projekt v C++Najväèší rozdiel oproti C++ nájdete v spracovanípolí. Polia v C# patria medzi CLR spravovanétypy, èo z<strong>na</strong>mená, e udriavajú referencie,nie hodnoty a aj <strong>na</strong> ne platí garbage collection.Dajú sa deklarova s rôznymi rozmermi vrátanemultidimenzionálnych polí a aj ako polia polí.Keïe polia sú objekty, sú tak aj spracúvané. Ichzákladom je trieda System.Array, take s nimipracujete ako s collection objektom (<strong>na</strong>pr. <strong>na</strong> zisteniedåky po¾a môete poui vlastnosLength).V práci s C# sa môete stretnú aj s pojmamiboxing a unboxing. Ich výz<strong>na</strong>m spoèíva v tom,e v C# je moné priradi hodnotový typ objektovémutypu (boxing) a spätne potom môete„zaškatu¾kovaný“ hodnotový typ z objektovéhotypu aj zí<strong>sk</strong>a (unboxing).Väèšie projekty v C++ trpia èasto pouívanímnekompatibilných hlavièkových súborov. C# pouitieheader files zamieòa kombináciou deklaráciía definícií typov. Ak vytvárate ve¾ký projektv C#, môete ho rozbi <strong>na</strong> menšie zdrojové súbory.Pri kompilácii projektu sa zdrojové súboryspoja a <strong>sk</strong>ompilujú sa do jedného ve¾kého súboru.Vïaka tomu sa nemusíte stara o to, ktoré hlavièkypatria do ktorého zdrojového súboru.C# je dizajnovaný <strong>na</strong> u¾ahèenie správy verziítried udriavaním binárnej kompatibility s existujúcimiodvodenými triedami. Keï <strong>na</strong>pr. vloítedo bázovej triedy novú metódu, prièom taká uexistuje v odvodenej triede, nespôsobí to chybu.Musíte však urèi, èi je metóda chápaná ako„preaená“ alebo nová, keï sa <strong>sk</strong>ryje metódazdedená z bázovej triedy.S oh¾adom <strong>na</strong> poadovanú kompatibilitu C#s inými, u existujúcimi rozhraniami podporujeC# rozhrania <strong>na</strong> staré C-èkové programy,N/Direct COM+ <strong>na</strong> volanie C-èkových API, rozhraniek štandardným COM a OLE AutomationAPI, dátové typy cez COM+ runtime a komponentyCLR. C# vytvára spravované, typovozabezpeèené programy. Niektoré reálne aplikáciepotrebujú niekedy aj èas kódu <strong>na</strong> <strong>na</strong>tívnejúrovni (z dôvodu výkonnosti alebo <strong>na</strong> pouitiestarých API z iných programov). C# umoòujedeklarova aj nezabezpeèené triedy a metódyz <strong>na</strong>tívnych volaní.ZLEPŠENIA C++Domi<strong>na</strong>ntné zlepšenia C++ prinášajú spravovanérozšírenia jazyka, atribútové programovaniea ATL Server.Spravované rozšírenia C++ pomôu vývojáromv Microsoft Visual C++ písa aplikácie preplatformu Microsoft .NET. S ich pomocou jemoné zavola triedu C++ z ¾ubovo¾ného .NETjazyka. Pouitím spomí<strong>na</strong>ných rozšírení treba<strong>na</strong>písa jednoduchú triedu (tzv. wrapper), ktorázverejní vašu triedu C++ a jej metódy ako spravovanútriedu. Trieda wrappera je mapovacouvrstvou medzi spravovanou triedou a nespravovanoutriedou C++. Najèastejšie sa pouíva <strong>na</strong>volanie <strong>na</strong>tívnych DLL.Atribútové programovanie je zdoko<strong>na</strong>lenímC++, ktoré redukuje mnostvo programátor<strong>sk</strong>éhokódu. Prínosom tejto technológie jehlavne záme<strong>na</strong> ve¾kej èasti kódu nieko¾kýmijednoduchými deklaráciami. Atribúty je monévklada do projektov manuálnealebo pouitím „wizarda“(obr. 2).(Atribútové programovaniesom si <strong>sk</strong>úsil <strong>na</strong> jednoduchompríklade pozostávajúcom zo131 riadkov kódu. Po pouitíatribútov sa kód zjednodušil <strong>na</strong>42 riadkov.)Visual Studio .NET obsahujeaplikáciu pre programátorovC++ <strong>na</strong>zvanú ATL Server,ktorá zjednodušuje vývoj výkonnýcha škálovate¾ných webovýchaplikácií. ATL Server ponúkasúbor tried rozširujúciActive Template Library (ATL)<strong>na</strong> sprístupòovanie funkcio<strong>na</strong>lityIIS cez ISAPI. Triedy ATL Serveraumoòujú programátorom¾ahšie spracúva také aspektyservera, ako sú caching, thread-pooling a sessionstate. K¾úèovou èasou architektúry ATL Serveraje dizajn spracúvania poiadaviek cez XMLwebovú slubu. ATL Server ISAPI DLL pracujeako rozšírenie IIS, ktoré umoní, aby sa URLadresy so súbormi .srf spracúvali v ISAPI DLL.ISAPI DLL je registrovaná v IIS ako pred<strong>na</strong>stavenýspracúvaè súborov .srf. (SRF súbory sú vo formáterozšíreného HTML a definujú, ako budedy<strong>na</strong>mický obsah generovaný cez ATL Serverpouitý aplikaènou DLL.)Visual Studio .NET odráa poiadavky vývojárovvo Visual Basicu <strong>na</strong> výkonnejšie programovaciekonštrukcie jazyka, poiadavky vývojárovv C++ <strong>na</strong> doplnenie vlastností RAD do IDE, ktorévyvrcholili jazykom C#. NET IDE je schopnézvýši produktivitu tvorby aplikácií pre .NETFramework. Visual Studio .NET BETA 2 by maloprejs u len testami <strong>na</strong> stabilitu a po akceptovanínových poiadaviek beta testerov by malo byk dispozícii vývojár<strong>sk</strong>ej komunite. Dôkazom toho,e Visual Studio .NET by malo by domov<strong>sk</strong>ýmprístavom všetkých vývojárov pre Windows, je ajv októbri ohlásená beta verzia jazyka J#, pokraèovate¾aJ++ pre prostredie MS .NET.Miroslav Kubovèík1/2002 PC REVUE 89