TAMPEREEN TEKNILLINEN KORKEAKOULU Automaatiotekniikan koulutusohjelma



Samankaltaiset tiedostot
.NET ajoympäristö. Juha Järvensivu 2007

in condition monitoring

.NET ja C# Virtuaalikone. Common Language Infrastructure (CLI) Periaate. Etuja. Haittoja. Mikä on CLI. CLI standardin merkitys (CLS, Ecma)

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Common Language Runtime

HOJ J2EE & EJB & SOAP &...

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Directory Information Tree

6 XML-työkalut 1. 6 XML-työkalut

HSMT J2EE & EJB & SOAP &...

Tikon Ostolaskujenkäsittely versio SP1

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

Visma Software Oy

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

TIETOKONEYLIASENTAJAN ERIKOISAMMATTITUTKINTO

Visma Nova Webservice Versio 1.1 /

Sovellusarkkitehtuurit

Järjestelmäarkkitehtuuri (TK081702)

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Järjestelmäarkkitehtuuri (TK081702) SOA, Service-oriented architecture SOA,

Sisällys. Valtion tietotekniikan rajapintasuosituksia. XML:n rooleja sähköisen asioinnin tavoitearkkitehtuurissa. dbroker - asiointialusta

Verkottunut suunnittelu

Javan asennus ja ohjeita ongelmatilanteisiin

FuturaPlan. Järjestelmävaatimukset

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

erasmartcardkortinlukijaohjelmiston

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

Ohje Hosted.fi SharePoint

Microsoft.NET. Juha Ahola-Olli. Tietojärjestelmätieteen Kandidaatintutkielma

Tuotantokoneen langaton etädiagnostiikka

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

DIPLOMITYÖ ARI KORHONEN

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Visual Basic -sovelluskehitin Juha Vitikka

4. Lausekielinen ohjelmointi 4.1

MS Aamubrunssi Aktiivihakemiston uutuudet

Tutkimus web-palveluista (1996)

Helpottuuko sovellusten välinen integraatio XML:n avulla - kokemuksia ja ratkaisuja, teknologiajohtaja Sauli Tujunen, atbusiness Communications Oyj

WINE API ja Virtualisointiohjelmistot

Johdatus rakenteisiin dokumentteihin

Luento 8: XML-tuki ohjelmointikielissä & Web-palvelut

P e d a c o d e ohjelmointikoulutus verkossa

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

StanForD-XML. Juha-Antti Sorsa, Tapio Räsänen, Vesa Imponen

HTML & CSS. HTML (HyperText Markup Language) Antti Koivisto. ! HTML on sivujen kuvauskieli.

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

Käyttäjähallinta liiketoiminnan selkärankana. Ratkaisuna LDAP-hakemistot

Tiedonsiirto- ja rajapintastandardit

Tikon Ostolaskujenkäsittely versio 6.2.0

Tietojärjestelmien yhteensovittaminen turvallisesti älykkäisiin koneisiin

Action Request System

J2EE vs..net Olli Sakari

M. Merikanto 2012 XML. Merkkauskieli, osa 2

Selvitysraportti. MySQL serverin asennus Windows ympäristöön

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

KEMI-TORNIONLAAKSON KOULUTUSKUNTAYHTYMÄ LAPPIA LANGATON VIERAILIJAVERKKO 2(7) VERKKOYHTEYDEN MÄÄRITTELY WINDOWS XP:LLE (WINDOWS XP SP3)

Käyttöjärjestelmät: prosessit

Kaikki analogiset järjestelmät digitaalisiksi ja verkkokäyttöisiksi - jo tänään Kustannustekkuutta ja joustavuutta työskentelyyn

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Dokumentin nimi LOGO:) Tampereen teknillinen yliopisto. Ryhmä XXX: Projektiryhmän nimi Projektin nimi

C# ja.net. Juha Järvensivu 2007

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Turvallinen etäkäyttö Aaltoyliopistossa

Integrointi. Ohjelmistotekniikka kevät 2003

ASCOM MIRATEL YHDESSÄ VAHVEMPI

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

Tulostimen hallintaohjelmisto MarkVision

Risto Pelin Microsoft Project 2002 projekti- ja yritystason järjestelmänä

Valppaan asennus- ja käyttöohje

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

TUTKI OMAT TIETOTURVA-AUKKOSI. ENNEN KUIN JOKU MUU TEKEE SEN PUOLESTASI. F-Secure Radar Ville Korhonen

W3C-teknologiat ja yhteensopivuus

Office ohjelmiston asennusohje

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pilvi 9.0. Arkkitehtuuri. Esimerkki arkkitehtuurit

Vaasan yliopiston toimintaa tukevat informaatiopalvelut ovat käytettävissä WWW:n kautta.

Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Tietokanta (database)

SMART BUSINESS ARCHITECTURE

Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

-Yhdistetty viestintä osana uutta tehokkuutta. Petri Palmén Järjestelmäarkkitehti

Konesali ilman rajoja Kongressi A

Laitteessa tulee olla ohjelmisto tai uudempi, tarvittaessa päivitä laite

DXL Library ja DXL-kielen olemus. Pekka Mäkinen SoftQA Oy http/


ZENworks Application Virtualization 11

XML johdanto, uusimmat standardit ja kehitys

3 Verkkosaavutettavuuden tekniset perusteet

KIURU Tietotekniikan sovellusprojekti

Transkriptio:

TAMPEREEN TEKNILLINEN KORKEAKOULU Automaatiotekniikan koulutusohjelma HENRI HAAVISTO.NET-VIESTINVÄLITYSTEKNIIKAT JÄRJESTELMÄN TOTEUTUKSESSA KUNNONVALVONTA- DIPLOMITYÖ AIHE HYVÄKSYTTY AUTOMAATIOTEKNIIKAN OSASTONEUVOSTON KOKOUKSESSA 14.11.2001 TARKASTAJA: PROFESSORI HANNU KOIVISTO

ALKUSANAT Olen tehnyt diplomityöni Tampereen teknillisessä korkeakoulussa. Haluan kiittää professori Hannu Koivistoa työni tarkastamisesta ja saamistani neuvoista sekä ohjeista. Työtovereitani ja projektin väkeä korkeakoululla ja Metso Automation:ssa haluan kiittää saamastani ohjauksesta. Erityisesti haluan kiittää Mikko Salmenperää, Jari Keroa, Jari Seppälää ja Joona Nikusta saamistani neuvoista ja kommenteista. Lisäksi esitän kiitokset perheelleni kaikenlaisesta tuesta ja kannustuksesta. Tampereella 28.11.2001 Henri Haavisto Ruovedenkatu 9 C 51 33720 TAMPERE 2

TIIVISTELMÄ TAMPEREEN TEKNILLINEN KORKEAKOULU Automaatiotekniikan koulutusohjelma Automaatio- ja säätötekniikan laitos Haavisto, Henri:.NET-viestinvälitystekniikat kunnonvalvontajärjestelmän toteutuksessa. Diplomityö, 86 s. Tarkastaja: prof. Hannu Koivisto Rahoittajat: Metso Automation Field Systems Division, Metso Automation Networks Division, Timberjack Plustech Oy, Sonera ja TEKES. Joulukuu 2001 Tämän työn lähtökohtana on ollut tutkia ja pohtia, miten viestinvälitysjärjestelmä olisi mahdollista toteuttaa.net-tekniikan avulla ja miten valittu.net-tekniikka yleensä ottaen soveltuisi tällaiseen käyttöön. Työ on tehty osana isompaa Etäteknologioiden automaatiosovellukset tutkimushanketta, jossa on tutkittu erilaisia saatavilla olevia tekniikoita ja vertailtu niiden etuja ja heikkouksia. Tässä diplomityössä on tarkastelun kohteeksi otettu Microsoftin.NET-konsepti, joka sisältää avoimia kommunikointitekniikoita hyödyntävän uuden kehitys- ja suoritusympäristön, uusia palvelimia ja sovelluksia. Uusi kehitysympäristö työkaluineen tarkoittaa uutta ohjelmointikieltä vanhojen lisäksi, vianmääritystyökaluja, valmiita luokkakirjastoja, useille ohjelmointikielille yhteistä ajoympäristöä (CLR), referenssikirjastoja jne. Työssä esitellään aluksi pääpiirteissään.net:n toimintaa, erityispiirteitä ja etenkin CLR:n ja C#-kielen ominaisuuksia. Myös tutkimusaiheeseen liittyviä palvelinsovelluksia esitellään (BizTalk Server, SQL Server). Viestinvälitys on tärkeä osa kunnonvalvontajärjestelmää, joten myös käytettävien viestien rakenteita ja taustalla olevia tekniikoita (XML, skeemat, CSS, DTD, XSL) selvitetään omassa luvussaan. Varsinaisten.NET-viestinvälitystekniikoiden esittelyyn on varattu oma kappale, jossa on kerrotaan muun muassa sellaisista käsitteistä, kuin BizTalk, SOAP, ASP.NET, ADO.NET ja Web Services. Tietoturvaa käsittelevässä luvussa kerrotaan verkkotekniikoiden käytössä piilevistä uhista sekä esitellään yleisimpiä tekniikoita verkkoliikenteen turvaamiseksi, ja pohditaan.net:n tietoturvatekniikoita. Kunnonvalvontajärjestelmän yleisarkkitehtuurin suunnitteluluvussa kerrotaan, millaisista osista järjestelmän tulisi koostua, miten viestinvälitykset, datan talletukset, oikeuksien hallinnointi ym. seikat periaatteellisella tasolla toimisivat. Testitoteutusluvussa on edellä kerrottuja teoriaosuuksia kokeiltu käytännössä, eli miten viestinvälitysjärjestelmän tärkeimmät osiot on mahdollista toteuttaa NET:n mahdollistamin keinoin. Tutkimuksessa on perehdytty muun muassa järjestelmän toteutuksen helppouteen, ylläpidettävyyteen ja modulaarisuuteen. 3

ABSTRACT TAMPERE UNIVERSITY OF TECHNOLOGY Automation degree Program Automation and Control Institute Haavisto, Henri:.NET messaging techniques in condition monitoring network. Master of Science thesis, 86p. Examiner: prof. Hannu Koivisto Financiers: Metso Automation Field Systems Division, Metso Automation Networks Division, Timberjack Plustech Oy, Sonera and TEKES. December 2001 The main target in this Master of Science thesis has been to research and study what kind of possibilities there are to carry out the.net messaging techniques in condition monitoring network. This thesis is a part of the project, which is dedicated to studying and developing remote techniques in automation. Microsoft s new infrastructure for using and developing software applications is called.net. This.NET platform includes all the necessities needed in software developing and debugging process and main use. Platform includes e.g..net Framework, Common Language Runtime (CLR), Visual Studio.NET and group of servers for various purposes. First of all, there is a chapter 2 describing.net, it s features and components, especially CLR and new programming language C#. Messaging techniques is an important part of the condition monitoring network and the structure of the messages is also essential. Because of that, chapter 3 includes the specification of structured document model XML and related techniques. Chapter 4 consists of various kind of messaging techniques included in.net platform, like ASP.NET, Web Services, ADO.NET, SOAP, BizTalk and Message Queue. Chapter 5 is dedicated to network security considerations. Chapter includes general security techniques and furthermore.net security possibilities are dealt with. The architecture of condition monitoring network is described and handled in details in chapter 6. After that, in chapter 7 there is explained how the testing network could be established. The summary is that there is quite good messaging techniques in.net although the platform is still a Beta 2 version. Building a large scale conditioning monitoring network is not an easy project, but with.net there are good tools and framework to build with. In addition, open Internet standards like HTTP, XML and SOAP will help applications to communicate with each other platform independently. 4

KÄYTETYT LYHENTEET ACL Access Control List AD Active Directory ATL Active Template Library CA Certificate Authority CLR Common Language Runtime CSS Cascading Style Sheet DES Data Encryption Standard DOM Document Object Model DTD Document Type Definition HTML HyperText Mark-up Language HTTP HyperText Transfer Protocol IETF Internet Engineering Task Force ITU-T Telecommunication Standardization Sector of International Telecommunication Union JIT Just In Time (Compiler) LDAP Lightweight Directory Access Protocol MAC Message Authentication Code MD5 Message Digest 5 MFC Microsoft Foundation Classes MSIL Microsoft Intermediate Language NDS Novell Directory Services OPC OLE for Process Control PGP Pretty Good Privacy PKI Public Key Infrastructure PPP Point to Point Protocol RPC Remote Procedure Call RCW Runtime Callable Wrapper RSA Rivest, Shamir and Adelman encryption algorithm SAX Simple API for XML SET Secure Electronic Transaction SGML Standard Generalized Markup Language SHA Secure Hash Algorithm S/MIME Secure Multi-Purpose Internet Mail Extensions SMTP Simple Mail Transfer Protocol SOAP Simple Object Access Protocol SQL Structured Query Language SSL Secure Sockets Layer STL Standard Template Library UDDI Universal Description, Discovery and Integration WSDL Web Service Description Language XML extensible Mark-up Language XSL extensible Stylesheet Language XSLT extensible Stylesheet Language Transformations 5

SISÄLLYSLUETTELO TIIVISTELMÄ...3 ABSTRACT...4 KÄYTETYT LYHENTEET...5 1. JOHDANTO...9 2..NET...11 2.1.NET -ympäristö ( Framework )... 12 Ohjelmointikielten yhteinen ajoympäristö ( CLR )... 14 Luokkakirjastot (unified class libraries)... 17 C# -ohjelmointikieli... 18 2.2 Visual Studio.NET... 19 2.3 Windows- ja Microsoft.NET Enterprise Servers- palvelimet... 19 2.4.NET -palvelut ( Foundation Services)... 21 2.5 Laiteohjelmisto ja käyttöjärjestelmät... 21 Windows 2000 ja Aktiivihakemisto... 22 Aktiivihakemiston hallinta ja turvallisuus... 22 Globaali luettelo... 22 Automaattinen päivitys palvelimesta toiseen ( Replication)... 23 ADSI (Active Directory Service Interface)... 23 2.6.NET yhteensopivat sovellukset... 23 3. XML JA LIITÄNNÄISTEKNIIKAT...24 3.1 XML ( sisällön kuvauskieli )... 24 3.2 DTD ( XML -dokumentin määrite )... 28 3.3 XSD eli Skeema ( Uudempi XML -dokumentin määrite )... 28 3.4 CSS ( XML -dokumentin muotoilukieli )... 29 3.5 XSL ( XML -dokumentin ulkoasun muokkauskieli )... 29 3.6 XSLT ( Muunnoskieli )... 30 3.7 Jäsentimet DOM ja SAX... 30 6

4. VIESTINVÄLITYSTEKNIIKAT...32 4.1 Active Server Pages (ASP.NET)... 32 4.2 Web-palvelut (Web Services)... 36 4.3 SOAP ( yksinkertainen viestinvälitysprotokolla )... 40 4.4 ADO.NET... 43 4.5 BizTalk Server... 44 4.6 Message Queue... 45 5. TIETOTURVA...47 5.1 Tietoturvavaatimukset verkkosovelluksissa... 47 5.2 Tietoturvatekniikoita... 48 Salaisen avaimen menetelmä... 49 Julkisen avaimen menetelmä... 49 Autentikointi ja digitaalinen allekirjoitus... 50 Varmenteet...50 Palomuurit...50 VPN... 51 VPN tunnelointi... 51 5.3.NET:n tarjoama tietoturva... 53 SSL... 53.NET:n salausalgoritmit ja kryptografia... 54 5.4 Windows 2000:n tietoturva... 55 Kerberos-autentikointi... 55 Windows IPSec... 56 6. KUNNONVALVONTAJÄRJESTELMÄN ARKKITEHTUURI...57 6.1 Yleisnäkemys yritysverkosta... 57 6.2 Reunaehtoja ja kriteereitä... 58 Suorituskyky ja vasteajat... 58 Käytettävyys, toipuminen, turvallisuus... 58 Ylläpidettävyys... 59 Yhteensopivuus... 59 6.3 Globaalin kunnonvalvontaverkon rakenne... 59 6.4 Yhden tehdasjärjestelmän rakenne valvontajärjestelmässä... 60 Järjestelmän hallinta ja konfigurointi... 60 Resurssit, tietokannat ja laitteet... 61 6.5 Oppivat agentit... 62 7

6.6 Analysointiagentit... 62 6.7 Hakemisto ja oikeushallintapuu... 62 Hakemiston hallinta ja turvallisuus... 63 Vikasietoisuus... 63 Lightweight Directory Access Protocol (LDAP)... 63 7. KOEJÄRJESTELMÄN TOTEUTUKSESTA...64 7.1 Laitteisto, ohjelmisto, tietoliikenneliittymät... 64 7.2 Oikeuksien hallinta ja LDAP-puu... 64 NDS -hakemiston käyttö oikeushallinnassa... 64 7.3 OPC -palvelimen kanssa kommunikointi... 65 COM ja.net... 65 7.4 Viestin välitys... 66 ASP.NET ja käyttöliittymä... 66 Sessioiden hallinta... 66 Sarjallistaminen ( Serialization )... 67 SOAP-viestintä... 67 XML-viestien skeemat ja validointi... 68 Viestin esitystavan muokkaus käyttöliittymään... 68 Socket-palvelin... 68 7.5 Web-palvelut... 68 7.6 Tietokantarajapinnat... 69 Liityntä SQL-palvelimen tietokantoihin... 69 Tietokannan käyttö ohjelmakomponentissa... 70 7.7 Koejärjestelmä... 70 7.8 Jatkokehitysmahdollisuuksia... 72 8. YHTEENVETO...73 9. LÄHDELUETTELO...75 LIITTEET 1-4...78 8

1. JOHDANTO Ihmisillä on käytössään nykyään yhä enemmän tietoa ympärillään tapahtuvista muutoksista ja tilanteista. Hyödynnettäväksi soveltuu kuitenkin vain osa tästä valtavasta tiedon määrästä. Tietoa pitää lisäksi usein muokata ihmisaisteille ymmärrettävään muotoon. Automaatioteollisuudessa tietomäärien kasvu ja tuotantokustannuksien optimointi on painostanut myös automaatioverkkojen kehitykseen ja rationalisointiin. Lisäämällä ennaltaehkäisevää valvontaa prosesseissa ja tuotannossa, voidaan säästyä monilta tuotannonkeskeytyksiltä, jotka saattaisivat johtua rikkoontuneista toimilaitteista, joiden tilaa ei olisi tarkkailtu käytössä. Tietotekniikan kehitys tuo markkinoille kiihtyvällä syklillä yhä tehokkaampia laitteita ja samalla ohjelmistokehittäjät ja muut organisaatiot tuottavat kilpaa uusia ohjelmia ja protokollia entisten sekaan. Automaation ja tietotekniikan sanasto viliseekin nykyään akronyymejä, joiden kaikkien opettelemiseen menisi ikä ja terveys. Aihepiiri on siis laaja ja sekava, ja usein teollisuudessa pidetäänkin turvallisempana pysytellä vanhassa järjestelmässä ja parannella sitä, kuin siirtyä kokonaan uuteen. Tutkimusprojektin lähtökohtana on ollut tutkia saatavilla olevia tekniikoita ja vertailla niiden etuja, heikkouksia ja soveltuvuutta verkoitettuun laitteiden kunnonvalvontaan. Tutkimushankkeesta on tehty jo kaksi diplomityötä, joista toisessa perehdyttiin lähemmin Hewlett Packard:n e-speak-tekniikan käyttöön kunnonvalvontajärjestelmän toteutuksessa [25] ja toisessa tietoturvatekniikoihin verkkoratkaisuissa [18]. Valittaessa tutkittavaa aihealuetta tälle työlle, oli vaihtoehtoja useita. Sitä, miksi päädyttiin Microsoftin.NET-teknologiaan, voidaan perustella vaikka seuraavasti. Tietotekniikan nopeutuva kehitys asettaa ohjelmistojen kehittäjille yhä eneneviä suorituspaineita konetehojen ja ohjelmakokojen alati kasvaessa. Tällöin tarvitaan myös parempia työkaluja ja kehitysympäristöjä, missä ohjelmasovelluksia voidaan tehdä ja muokata. Tutkimusta aloitettaessa oli Microsoft tuonut julkisuuteen uuden ja kehitysvaiheessa olevan, omien sanojensa mukaan, mullistavan ja käänteentekevän teknologian, jota kuvattiin lyhyesti nimellä.net..net tarkoittaa kokonaisvaltaisempaa muutosta, eli siirtymistä avoimempaan ja entistä integroidumpaan asioiden ja tietojen hallintaan. Yhtenä piirteenä voidaan mainita siirtyminen binääriarkkitehtuurista ei-binääriseen arkkitehtuuriin, jossa XML-kielellä on merkittävä osa. Microsoft onkin ilmoittanut, että.net on Microsoftin strategia tuottaa seuraavan sukupolven tietotekniikkaratkaisuja XMLpohjaisten Web-palveluiden avulla. Avoimen PC-pohjaisen teknologian ja ohjelmistokomponenttien käyttö automaatiosovellusten tekemisessä on monessa suhteessa houkuttelevaa ja tuo mukanaan erilaisia hyötyjä loppukäyttäjän kannalta. Toisaalta, jos halutaan usean 9

eri toimittajan ohjelmistokomponenteista koottujen sovellusten toimivan yhteen, on siinäkin omat ongelmansa. Avoimien viestinvälitystekniikoiden käyttö syö resursseja ja suhteellisen pieni hyötykuorma tekee suuresta järjestelmästä hitaan. Se, miten avoimuus ja yhteensopivuus varsinkin muiden alan tekniikoiden kanssa tulee toimimaan, jää nähtäväksi..net-konsepti on yleisnimitys laajalle kokonaisuudelle, jossa voisi sanoa olevan jokaiselle jotakin. Microsoftin uuden.net lanseerauksen alle kuuluvat niin sovellusten kehitystyökalut ja ympäristöt, kuin ajoympäristöt, palvelinperheet ja käyttöjärjestelmät eri ohjelmineen. Yksi osa.net-kokonaisuutta on Visual Studio.NET-kehitysympäristö, jonka pitäisi valmiiksi tultuaan sisältää kaikki ohjelmiston kehityksessä ja ylläpidossa tarvittavat työkalut, sisältäen useita ohjelmointikieliä, vianmääritystyökaluja, luokkakirjastoja, ohjelmointikielille yhteisen ajoympäristön, referenssikirjastoja jne. Kehitystyöhön kuuluu olennaisesti myös joukko.net-palvelimia ja.netkäyttäjäpalveluita, joista kerrotaan tuonnempana. Tämän diplomityön tarkoituksena on opinnäytteelliseltä kannalta tutkia ja selvittää miten viestinvälitysjärjestelmän toteuttaminen.net-tekniikan avulla olisi mahdollista ja kuinka hyvin tekniikka soveltuu sellaiseen. Diplomityö liittyy isompaan tutkimushankkeeseen, jossa tutkitaan erilaisten tekniikoiden soveltuvuutta teollisuuskäyttöön, esimerkiksi suunniteltaessa globaalia kunnonvalvontajärjestelmää. Tutkimuksen kohteena on siis Microsoftin uusi.net-konsepti, mutta tarkempi tutkimustyö keskittyy lähinnä sovelluskehitystyökaluihin, viestinvälitykseen, tiedon tallentamiseen ja esittämiseen, sekä näihin liittyviin oheistekniikoihin. Tutkimustyössä on perehdytty lisäksi ohjelmien toteutuksen helppouteen, ylläpidettävyyteen, modulaarisuuteen sekä tietoturvaan, joka onkin erittäin tärkeä asia nykyajan turvattomassa verkkoyhteiskunnassa. Kokonaiskonseptina.NET ei ole vielä valmis, eikä kerralla valmistukaan. Tämänkin tutkimustyön edetessä on käytetty esimerkiksi sovelluskehittimistä.net:n erinäisiä Beta-versioita. Verkkotekniikoiden näkökulmasta katsottuna tutkimus on rajattu langallisiin verkkoihin, koska langattomien ratkaisujen mukaanottaminen olisi kasvattanut työmäärää melko paljon ja toisaalta suppeammalla tutkimussektorilla voidaan paneutua käsiteltäviin asioihin syvällisemmin. 10

2..NET Microsoft.NET ilmentää hyvin sitä tosiasiaa, että kehitys on menossa kohti hajautettua tietojenkäsittelyä. Viime vuosina on asennettu uusia laajakaistayhteyden yhdyskaapeleita niin paljon, että Internetin perusrungon kaistanleveyttä on käytettävissä paljon enemmän kuin aiemmin. Tämä yhdessä kasvavien tiedonkäsittelytehojen ja halventuvien kustannukset kanssa johtaa siihen, että todellinen hajautettu tietojenkäsittely on nyt mahdollista. Koska kaistanleveyttä on saatavilla entistä helpommin ja se on hinnaltaan edullista, tietojenkäsittely voidaan tehdä missä tahansa sopivassa verkon kohdassa. Hajautetuista sovelluksista on jo useita esimerkkejä. Suurta kohua aiheuttanut Napster käyttää tekniikkaa, jossa Internet-asiakaskoneet voivat olla monipuolisessa vuorovaikutuksessa hakemistopalveluun, jolloin kaikki tapahtumaan osallistuvat tietokoneet toimivat palvelimina. MSN Messenger Service -palvelua käyttävä asiakas ottaa yhteyden Internetissä olevaan "tuttavaluetteloon" ja kommunikoi verkon kautta suoraan muiden asiakaskoneiden kanssa vertaisyhteyttä käyttäen. Nämä hajautetut sovellukset käyttävät verkon päätepisteissä eli asiakaskoneissa olevia tiedonkäsittelyresursseja, mutta tarjoavat keskitetysti verkon kautta saatavia palveluita. Laveasti ilmaistuna.net:n tarkoituksena on vauhdittaa tämän uudenlaisen hajautetun tietojenkäsittelytekniikan kehitystä. Uudenlaisen hajautetun tietojenkäsittelytekniikan toteuttamisella on kuitenkin kolme vaatimusta: 1. Kaiken materiaalin on oltava Web-palvelun muodossa, jotta sitä voidaan käyttää verkossa. Tämä koskee sekä sovelluksia että resursseja, kuten levytilaa. 2. Web-palvelujen on oltava helposti yhdisteltävissä ja integroitavissa, jotta sovellusten kehittäminen olisi nopeaa ja tehokasta. 3. Käyttäjien on saatava vaivaton ja myönteinen vaikutelma Webpalvelujen käytöstä, jotta he ovat valmiita ottamaan käyttöön uudet sovellukset ja palvelut. Puhutaan ns. yksilöllisestä käyttäjäkokemuksesta. Yllämainitut Web-palvelut ovat itsenäisiä modulaarisia sovelluksia, jotka kommunikoivat avoimien standardirajapintojen kautta. Web-palvelut ovat löyhästi kytkettyjä ja kommunikoivat toisten Web-palveluiden kanssa verkon kautta standardipohjaisilla tekniikoilla (esimerkiksi HTTP, SMTP). Standardipohjainen kommunikointi mahdollistaa Web-palveluiden käytön riippumatta laitteistosta, käyttöjärjestelmästä tai jopa ohjelmointiympäristöstä. Tämä on tosin vasta teoreettista monilta osin. 11

Edellä mainittujen ehtojen täyttämiseksi ja kehityksen vauhdittamiseksi kohti hajautettua tietojenkäsittelyä Microsoft on perustanut.net-tekniikan viidelle perusosiolle. Ensimmäiset neljä kuvatuista elementeistä eli.net Framework- ja Visual Studio.NET-kehitystyökalut, Windows- ja.net Enterprise Servers -palvelimet, NET Foundation Services sekä Microsoftin laiteohjelmisto muodostavat yhdessä.net alustan (platform). Viides elementti, eli kehitteillä olevat.netyhteensopivat sovellukset, on tarkoitettu tällä.net -alustalla käytettäviksi (kuva 2.1). Visual Studio.NET Omat Sovellukset ja Web-palvelut Omat sisäiset palvelut Sovellukset, jotka käyttävät minun palveluita Orchestration.NET Framework Operaatiot.NET Enterprise Servers Building Block Services Toisten tekemät Webpalvelut Loppukäyttäjät Windows CE,ME,2000,XP Internet protokollat SOAP,HTTP,SMTP, XML Kuva 2.1.NET-konsepti Seuraavaksi on esitelty nämä.net:n viisi osa-aluetta painottaen esittelyä sovelluskehittäjän näkökulmasta, eli.net Framework:iin ja Visual Studio.NET:iin sekä palvelininfrastruktuuriin on kiinnitetty erityistä huomiota. 2.1.NET -ympäristö ( Framework ) Kuvan 2.1 keskellä sijaitseva.net Framework on eräänlainen ohjelmistotukipaketti, Middleware Operating System, joka pitää olla koneella asennettuna, kun käytetään muita.net-toimintoja. Win32API -rajapinnan korvaava.net Framework eli.net-ympäristö on käyttöjärjestelmän päällä sijaitseva järjestelmäsovellus, joka tarjoaa.net-sovelluksille rajapinnan alempiin kerroksiin ja käyttöjärjestelmän palveluihin..net-ympäristön ytimen muodostavat standardiluokkakirjastot (Framework base classes) ja Common Language Runtime ajoympäristö (kuva 2.2). Ajoympäristön ja perusluokkien 12

yläpuolella on useammassa tasossa muita luokkia, jotka käyttävät alemman tason palveluita, tarjotakseen vastaavasti hierarkiassa ylöspäin kehittyneempiä palveluita. CLR:sta ja luokkakirjastoista on kerrottu tarkemmin seuraavissa kappaleissa. Lisäksi viestinvälityskappaleessa kerrotaan tarkemmin Webpalveluiden ja ASP.NET:n toiminnasta..net Framework Web Services Web Forms Windows Forms Data and XML classes (ADO.NET, SQL, XSLT, Xpath, XML, jne) Framework Base Classes (IO, string, net, security, threading, text, reflection, collections, jne) Common Language Runtime (debug, exception, type checking, JIT compilers) Windows Platform Kuva 2.2.NET-ympäristö..NET-ympäristö tarjoaa kaksi erilaista rajapintaa koodien käsittelyyn. Reflection API-rajapintaa.NET-ympäristö käyttää Managed Code-koodin käsittelyyn, kun taas Unmanaged Code-koodin käsittely hoidetaan alemman tason COMrajapinnoilla. Managed Codella tarkoitetaan koodia, joka vaatii suoritukseensa Common Language Runtimen kun taas Unmanaged Code ei sitä tarvitse..net Framework on tarkoitettu ensisijaisesti Windowsin käyttöjärjestelmiin Microsoftin tapojen mukaisesti. On kuitenkin periaatteessa mahdollista sovittaa.net-ympäristö mihin tahansa käyttöjärjestelmään CLR-arkkitehtuurin ansiosta. Microsoft on lohkonut CLR:sta erillisen toimivan CLI (Common Language Infrastructure) -paketin, jonka sisältämillä komponenteilla muut kehittäjät voivat rakentaa omaa.net-ajoympäristöä. Jo nyt on meneillään erillisiä kehitysprojekteja, joissa kehitetään.net-ympäristöä sopimaan GNU/linux ympäristöön [26], [36] sekä.net-palveluja pocketpc-laitteisiin [14]. Nämä antavat viitteitä siitä, että ohjelmistojen kehittäjät ovat havainneet uuden.net:n ja pyrkivät tutkimaan sen mahdollisuuksia. 13

Ohjelmointikielten yhteinen ajoympäristö ( CLR ) Tärkein osa.net Framework:ssa on ajonaikainen ympäristö Common Language Runtime (CLR). Se on vastuussa muistin varauksesta, prosessien ja säikeiden hallinnasta, komponenttien tietoturvan toteuttamisesta (secure policy) ja komponenttien välisistä riippuvuuksista ohjelmaa ajettaessa samaan tapaan kuin Java Virtual Machine Javassa. Ajoympäristö sinällään ei ole uusi asia, mutta poikkeuksellista.net:n CLR:ssä on, että siinä on yhdistetty ympäristö monelle ohjelmointikielelle. Kääntäjät löytyvät tällä hetkellä Microsoftin C++, C#, VB, Jscript, sekä muiden osapuolien APL, CAML, Cobol, Eiffel#, Haskell, Mercury, Mondrian, ML, Oberon, Oz, Pascal, Perl, Python, RPG, Scheme, Smalltalk, Standard ML ja TMT Pascal ohjelmointikielille. Näiltä eri kieliltä lähdekoodi käännetään aluksi kielikohtaisella kääntäjällä MSIL (Microsoft Intermediate Language) -kielelle. CLR ajoympäristössä eri kieliltä MSIL-kielelle esikäännetty koodi suoritetaan. Runtime engine tutkii MSIL-välikieltä, jolloin sillä on paremmat virhe- ja tyyppitarkistusmahdollisuudet ja vasta JIT (Just-In-Time) - kääntäjä kääntää koodin metadataa hyödyntäen juuri ennen suoritusta konekieliseksi (kuva 2.3). Eli välikielen koodi käännetään konekielelle, toisin kuin Javassa, joka on tulkattava kieli (tosin Javaankin on JIT ja HOTSPOT kääntäjät). Source Code Compiler EXE/DLL (IL&Metadata) Class Libraries (IL&Metadata) Class Loader Trusted PreJITed Code only JIT Compiler (optional verification) Managed Native Code Call to uncompiled method Runtime Engine Execution Security Checks Kuva 2.3 Runtime engine. CLR tarjoaa ohjelmakehittäjille kiinteän alustan rakentaa erityyppisiä sovelluksia useilla ohjelmointikielillä ja sovellukset voivat olla ASP.NET, Windows Forms, Web-services, Mobiilikoodia tai jotain hajautetun järjestelmäsovelluksen koodia 14

tai niiden sekoituksia. CLR:n eduiksi voidaan lukea muun muassa yksinkertaistettu kehittäminen ja yhtenäinen tapa luoda eri ohjelmointikielillä kirjoitetuista koodeista yhteensopivia luokkakirjastoja. Helpotusta ohjelmointiin tuo myös se, että COM-komponenteista tutut rekisteröinnit, GUID, IDL, Uinterface ja AddRef/Release vaiheet voidaan unohtaa, sillä ympäristö huolehtii käyttöönotoista (deployment). Vanhoja COMkomponentteja voidaan kuitenkin käyttää ympäristössä viittauksilla (reference) ja.net-objektista voidaan helposti luoda COM-komponentti yleiskäyttöisen apuohjelman avulla. Tavallaan.NET:ssa on säilytetty nykyisten COMkomponenttien hyvät ominaisuudet ja yhdistetty ne löysästi kytkettyihin verkkokomponentteihin [10]. Entistä tiiviimpi oliomaisuus ilmenee luokista ja periytyvyyksistä, eli yhdellä kielellä tehdystä luokasta voidaan periyttää uusi luokka toisella ohjelmointikielellä. Uudelleenkäytettävät komponentit voidaan versioida ja olioiden kuvaus ja elinkaaren hallinta ovat yksinkertaisempia. Hallittavuutta tuo myös se ominaisuus, että ladatun ohjelmakoodin pääsyä koneen resursseihin voidaan rajoittaa. Sovelluskehittäjän näkökulmasta CLR kuvailee ajonaikaisen ympäristön, jonka kanssa kehittäjä on tekemisissä. Tämä tarkoittaa yksityisiä ja jaettuja komponentteja, suorituksenaikaista koodin lataamista ja cache-muistia, natiivialustan vuorovaikutusta, COM-komponenttien saumatonta integrointia, dynaamista tarkistusta sekä hallinnointia ja konfigurointia. Käyttäjän ei edes tarvitse tietää kaikkea CLR:n toiminnallisuutta, riittää että työkalut ja ympäristö tarjoavat senhetkiseen sovelluskehitykseen sopivat ja riittävät toiminnallisuudet. Mikäli työskentelee paljon erilaisten sovellusten kanssa, niin suunnitteluympäristön infrastruktuurin hallinnasta on hyötyä. Pienimpiä ohjelmakokonaisuuksia CLR:n päällä ovat CLR Executable:t (Portable Executables, PE). Windowsissa suoritettavat ohjelmat (.EXE tai.dll päätteiset) ovat sisältäneet normaalistikin PE-muotoista dataa, koostuen otsikko-osiosta (PE/COFF headers) ja natiiviosiosta (.data,.rdata,.rsrc,.text). Käyttöjärjestelmä on osannut tulkita näitä tarkasti määriteltyjä PE-tiedostoja. Microsoftin C/C++ kääntäjä antaa kuitenkin lisätä uusia osioita PE-tiedostoihin. CLR:n perustoiminnallisuus on saatukin toteutettua lisäämällä PE-tiedostoon CLR Header- ja CLR Data-osiot. Nämä uudet osiot sisältävät otsikko-osassaan tiedon.net käännettävyydestään ja Dataosassa metadataa ja IL-koodia, joita CLRympäristö osaa sitten hyödyntää [29, s.17]. Metadata on konekielistä tietoa resursseista, eli tyyppimäärittelyistä, versiotiedoista, ulkoisista viitteistä sekä muista standardoiduista tiedoista [29, s.18]. 15

Assembly ja Manifest Assembly on pienin suoritettava käskykokonaisuus CLR-ympäristössä. Se on looginen DLL tai EXE, joka voi viitata moniin tyyppeihin ja tiedostoihin (kuten esimerkiksi bitmap:iin, PE:hen). Manifest taas on tarkka kuvaus assembly:sta sisältäen versioinnin, assemblyn käyttämät tiedostot jne. Uusi käsite on myös turvallinen lähdekoodi. Koska assembly sisältää identifoidun koodin, CLR voi päätellä siitä, saako assembly käyttää järjestelmän resursseja tai muita assemblyita. Näin voidaan siis hallita ohjelman pienien yksittäissuoritusten toimintaa [29, s.26-29]. CTS ja CLS Common Type System määrittelee.net-kielille yhteiset tyypit, joilla on sama käsitteellinen merkitys. Common Language Specification määrittää.net:iin sovitettaville kielille joukon perussääntöjä. Näin pyritään tarjoamaan kielille täysi hyöty periyttämisestä, polymorfismista, poikkeuskäsitteistä ja monista muista piirteistä, vaikkakin eri kielillä on tietenkin omat vahvuutensa ja heikkoutensa. CLS:n sääntöjen avulla kääntäjien tekijät voivat varmistua käännöstuotosten sopimisesta.net:iin. CLR Compiler Writers Overview tarjoaa tietoa käännöskirjoittajille, jotka ovat kiinnostuneita IL-käännöskielen rakenteesta, tiedostotyypeistä, metadata APIrajapinnoista, reflection emit:stä ja muista työkaluista. Nopeudesta puhuttaessa on totta, että tällä hetkellä managed code on hieman hitaampaa kuin valmiiksi käännetty unmanaged code. Tulevaisuudessa tilanne voi kuitenkin muuttua, jos keksitään erilaisia parannuksia. Esimerkiksi JIT-kääntäjä tietää enemmän ajoympäristöstä kuin esikääntäjä ja voi tulevaisuudessa ajonaikaisesti tutkia ajoympäristöä ja optimoida MSIL-koodin konekielelle huomioiden vaikkapa prosessoritehon ja muistin määrän. Lisäksi JIT-kääntäjä voi tuottaa koodia, joka hyödyntää CPU:n sellaisia rekisterialueita, joita normaalikääntäjä ei hyödyntäisi. Nopeutta lisää myös työkalu PreJit.exe, jolla koko ohjelmapaketti käännetään muistiin valmiiksi, ja näinollen ohjelman käynnistys seuraavilla kerroilla tapahtuu nopeasti muistista. Seuraavilla kerroilla ohjelma vain tarkistaa onko uusia päivityksiä tullut [24]. Muiden työkalujen kehittäjät voivat löytää lisäinformaatiota CLR Tool Developers Overview:sta. Lisäksi CLR Hosting Overview kertoo tietoa, miten sovittaa CLR:ää johonkin muuhun ympäristöön. 16

Luokkakirjastot (unified class libraries) Luokat, joita on valmiina useita satoja, on jaettu hierarkisesti nimiavaruuksiin. Puumaista luokkarakennetta voidaan tarkastella helpoiten kuvasta 2.4. Suurin osa luokista kuuluu System-luokan alle ja kaikki luokat periytyvät Objectpääluokasta. Näin tapahtuu myös luokille jotka kehittäjä itse määrittelee ja jakaa nimiavaruuksiin. Standardiluokkakirjastot (alin lohko kuvassa 2.4) tarjoavat perustoimintoja kuten esimerkiksi I/O toiminnallisuus, säikeiden hallinta, tekstin hallinta jne. Nämä luokat vastaavat sellaisia vanhempia luokkia kuten esimerkiksi STL (Standard Template Library), MFC (Microsoft Foundation Classes), ATL (Active Template Library) sekä Javan perustoimintoluokat. Perusluokkien päällä on data ja XML-luokat (Data and XML classes), jotka perusluokkien avulla huolehtivat tiedon hallitsemisesta ja XML:n muokkauksesta. Myös tietokantojen käyttöluokat kuuluvat tähän lohkoon. Ylimpänä.NET Framework:ssa on kuvattu varsinaisia sovelluksien tekemiseen tarkoitettuja luokkia. Näistä (Web Services, ASP.NET, ADO.NET) kerrotaan enemmän viestinvälityskappaleessa. System.W eb System.WinForms Services -Description -Discovery -Protocols UI -HTMLControls -W eb Controls Design Component Model Caching C onfiguration Security Session State System.Drawing Drawing 2D Printing Imaging Text System.Data System.XML ADO SQL XSLT Serialization Design SQLTypes XPath System Collections C onfiguration Diagnostics Globalization IO Net Reflection Resources Security ServiceProcess Text Threading Runtime Interopservices Remoting Serialization Kuva 2.4.NET-standardiluokkakirjastot 17

C# -ohjelmointikieli C# on komponenttiorientoitunut kieli, jossa kaikki perustuu olioihin. Javan tavoin C#:n todellinen vahvuus perustuu sen alla toimiviin apuohjelmiin (satoihin uudelleenkäytettäviin komponentteihin ja API-rajapintoihin), jotka kuuluvat Microsoftin.NET Framework:iin. Näistä piirteistä onkin sanottu, että C# on Microsoftin vastine Sun Microsystemsin Java-kielelle [5]. C#-kielen piirteisiin kuuluu nimiavaruudet (namespaces), joilla ohjelmakoodiin sisällytetään tarvittuja tyyppejä tai toisia nimiavaruuksia. Nykyiseen Java 2 Enterprise Edition:iin (J2EE) sisältyy jo yli 2000 luokkaa ja yli 24000 ominaisuutta ja metodia. Microsoftin.NET Framework on yhä työn alla, mutta siitä näyttää jo nyt tulevan yhtä monimutkainen. Odotettavissa on tuhteja olio- ja API-paketteja, jotka tulevat kasvamaan entisestään. C#-kielessä olioita voidaan käyttää niiden metodien (methods), ominaisuuksien (property) tai tapahtumien (event) avulla. Muuttujat alustetaan myös automaattisesti, eikä vääräntyyppisiä muuttujia voida käyttää (type safety tarkistus). Roskienkeruu tapahtuu C#:ssa automaattisesti, eli ohjelmoijan ei tarvitse enää huolehtia muistin vapautuksista. Myös taulukkoviittaukset tarkistetaan automaattisesti, etteivät ne vuoda yli. C#:ssa on myös piirre, joka estää metodikutsun kuormittamisen (overloading), ellei koodissa ole ilmaistu täsmällisesti, että näin halutaan tehdä. Kielessä on monenlaisia tyyppejä primitiivien lisäksi, muun muassa enum, struct, class, interface, arrays ja delegates. Kielessä ei myöskään tarvita mitään esittelytiedostoja, kuten esimerkiksi C tai C++ -kielessä. C#-kielessä voidaan lähdekoodin sekaan sisällyttää myös erikoiskommentteja, joista voidaan sitten Tools-valikon kautta luoda kommentti Web-sivut. Erikoiskommenttirivit alkavat ///-merkinnällä, jota seuraa XML-tyyppinen tagipari, minkä sisään varsinainen kommentointi on laitettu. C#:ää ja Javaa yhdistää myös virtuaalikone. C# ja Visual Basic.NET luovat koodia, joka ajetaan Windows-käyttöjärjestelmän alla toimivalla eräänlaisella virtuaalikoneella. C#-koodi käännetään välikielelle (MSIL), jota runtime engine tulkitsee ja optimoi. Eli C#-kielessä on yritetty hyödyntää sekä käännetyn että tulkattavan kielen hyviä puolia, ja oppimiskynnys kieleen on melko matala. Aika näyttää miten ohjelmoijat ottavat uuden kielen vastaan. 18

2.2 Visual Studio.NET Visual Studio.NET on ohjelmistotyökalu, jolla voidaan tehdä sovelluksia moniin käyttötarkoituksiin. Luotaessa uutta projektia, voidaan valita haluttu projektityyppi (template) ohjelmointikielikansioista (VB, C#, C++) tai muista tarjolla olevista kansioista (Setup and Deployment, Database, Extensibility). Lisäksi voidaan valita haluttu sovellustyyppi tarjolla olevista valmiista malleista. Mallit vaihtelevat kansoittain, mutta esimerkiksi C#-kansiosta löytyy seuraavanlaisia sovelluksia: Console Application, ASP.NET Web Application, ASP.NET Web Service, Class Library, Windows Application, Empty project. Eli valikoimaa on konsolisovelluksesta luokkakirjastoihin ja web-sovelluksiin. Visual Studio.NET sisältää lisäksi paljon erilaisia aputyökaluja, jotka helpottavat työskentelyä. Tällaisia ovat esimerkiksi Solution Explorer, jolla voi selata projektin tiedostoja ja viittauskirjastoja (references), sekä Dynamic Help, jolla saa apua ja tietoja ohjelman toiminnallisuuksista. ToolBox on työkalupakki, josta voi raahata työpöytään tarvitsemiaan valmiita objekteja. Kätevä työkalu on myös Server Explorer, jonka valikossa voi tarkastella, mitä erilaisia palveluja on tarjolla omassa tai jossakin verkon koneessa. Esimerkiksi tietokantapalvelimia ja niiden tauluja pystyy katselemaan ja muokkaamaan valikosta käsin. Myös Webpalveluita on mahdollista etsiä tämän toiminnon avulla. 2.3 Windows- ja Microsoft.NET Enterprise Servers- palvelimet Windows ja.net Enterprise Servers -palvelimet on suunniteltu Web-palvelujen tuottamiseen ja jakeluun. Monet näistä palvelimista (esimerkiksi Windows 2000 Server -perhe, Microsoft SQL Server 2000 ja Microsoft Exchange 2000) käyttävät perustoiminnoissaan XML-kieltä (extensible Markup Language). XML:n ansiosta rakenteisista tiedoista voidaan tehdä yhdenmukaiset, vaikka sovelluksia ja toimittajia olisi paljon, mikä on erittäin tärkeää Web-palvelujen yhteiskäytön kannalta. Näin esimerkiksi viestinvälitys, tietokantasovellukset, sähköisen kaupankäynnin hoitaminen tai mobiiliasiakkaiden palveleminen helpottuvat. Eräissä palvelimissa on myös lisäominaisuuksia, jotka entisestään helpottavat yhteiskäyttö- ja liitäntäominaisuuksia. Seuraavaksi on esitelty tärkeimmät palvelimet. BizTalk Server BizTalk palvelimen avulla tehdään XML-pohjaisia sovelluksia Enterprise Application Integration ja Business-to-Business-dokumenttien vaihtoon, eli sillä voidaan toteuttaa sekä organisaation sisäisten että organisaatioiden välisten järjestelmien integraatio ja toteutus tapahtuu BizTalk:n XLANG-kielellä. Palvelimen avulla voidaan välittää ja hallita XML-pohjaista tietoa eri sovellusten ja palveluiden välillä, esimerkiksi datavuokaavioita, tapahtumalaukaisijoita ja niiden toimintoja kuten vaikkapa automaattinen sähköpostin lähetys. Ohjelmistossa on graafiset työkalut skeemojen sekä XSL-muunnosten tekemiseen (Microsoft Visio). 19

SQL Server SQL Server on tietokantapalvelin, jonka avulla voidaan hakea ja tallentaa tietokantaan esimerkiksi XML-pohjaista tietoa. SQL-palvelimesta on eri versioita tarjolla käyttötarkoituksen mukaan. Suurin versio sisältää kaikki tarvittavat muokkaus ja hallintatyökalut palvelinpaketissa, kun taas esimerkiksi MSDE (MicroSoft Desktop Engine) -versio on pelkkä tietokantamoottori hakuja ja talletuksia varten, mutta senkin käyttö ainakin testailumielessä on aivan luontevaa esimerkiksi Visual Studio.NET:n kanssa. IIS Server IIS (Internet Information Server) eli Web-palvelin on tarpeellinen esimerkiksi pidettäessä yllä tavanomaisia Web-sivuja. Myös Visual Studio.NET:llä tehdyt Web-palvelut päivittyvät käännöksen jälkeen suoraan tälle palvelimelle, eli palvelujen tekeminen vaatii tietokoneelle IIS-palvelimen. HIS Server Microsoft Host Integration Server 2000 on palvelin, jonka avulla voidaan käyttää keskuskoneissa olevia tietoja ja sovelluksia ja integroida vanhempia järjestelmiä mukaan toimintaan (esimerkiksi SNA). Exchange Server Microsoft Exchange 2000 on viestintä- ja yhteistyöratkaisuihin kehitetty palvelin. Commerce Server Microsoft Commerce Server 2000:n avulla voidaan nopeasti rakentaa online liiketoimintaa. Kaupankäyntiin soveltuva palvelin sisältää valmiita työkaluja esimerkiksi palaute- ja analysointi- sekä asiakkaiden-, tuotteiden- ja palveluidenhallintatehtäviin. Application Server ( Center ) Microsoft Application Center 2000 on palvelin, joka on tarkoitettu websovellusten levitykseen ja hallintaan ja jonka avulla voidaan rakentaa skaalautuvia palvelinratkaisuja ja hallita niitä. Käyttäjät voivat muodostaa loogisia ryhmityksiä sovellusten sisällöstä, komponenteista ja konfiguroinnista. Ryhmitelmiä voidaan hallita klusterin avulla, mikä vähentää monimutkaisuutta. Monen palvelimen kokonaisuuksissa, yhdessä koneessa tehdyt muutokset päivittyvät automaattisesti myös muille koneille. 20

Internet Security and Acceleration (ISA) Server Internet Security and Acceleration (ISA) Server 2000-palvelin tarjoaa yrityskäyttöön palomuuri ja Web cache-palvelut, joilla järjestelmänhoitajat voivat valvoa ja tarjota suojatut verkkoyhteydet organisaatiolleen. Mobile Information 2001 Server Microsoft Mobile Information 2001 Server on palvelin langattomien ratkaisujen tuottamiseen. 2.4.NET -palvelut ( Foundation Services) Microsoft on kehittämässä erilaisia pienpalveluita kuten tunnistus- ja ilmoituskäytäntöjä (esimerkiksi Passport) sekä tallennuskäytäntöjä, joiden avulla käyttäjien on helppoa siirtyä palvelusta toiseen, sovelluksesta toiseen tai jopa käyttöjärjestelmästä toiseen..net Foundation Services-palveluilla pyritään ennen kaikkea tekemään.net-käyttäjäkokemuksesta helppoa. Nykyisin käyttäjä voi joskus joutua kirjautumaan useisiin Web-sivustoihin ja useisiin sovelluksiin yhden istunnon aikana. Yhdenmukaisen tunnistuskäytännön puuttuminen estää sovelluksia välittämästä toisilleen käyttäjää ja hänen käyttäjätietojaan koskevaa informaatiota. Helppokäyttöisyys on siis ensiarvoisen tärkeä ominaisuus hajautetun tietojenkäsittelyn onnistumisen kannalta. Tällä on tietenkin myös kääntöpuolensa. Antamalla kerran tietojaan yhdelle sovellukselle, käyttäjä voi varautua siihen, että hänen tietojaan on leviteltynä ympäriinsä eri sovelluksille. Tämä herättää tietenkin käyttäjissä epäluuloja antaa tietojaan koneelle. Ja toisaalta tiettyjä palveluja ei pääse käyttämään ellei kirjaudu sovelluksiin käyttäjätunnuksilla. Palvelujen tarjoajien pitäisi siis olla ehdottoman luotettavia käyttäjätietojen talletusten ja luovutusten kanssa..net Foundation Services-palveluista pitäisi olla hyötyä myös sovellusten kehittäjille. Nämä palvelut muistuttavat Windowsin muistinhallintaa ja tiedostojärjestelmää siinä, että niitä ei tarvitse toistaa uudelleen jokaisen sovelluksen yhteydessä. Koska nämä ovat Internetistä saatavia peruspalveluita, sovelluskehittäjät voivat hyödyntää niitä ja keskittyä niihin sovelluksen osaalueisiin, jotka vaativat sovelluskehitystä. 2.5 Laiteohjelmisto ja käyttöjärjestelmät Käyttöjärjestelminä Windows 2000 palvelinperheessä on Server, Advanced Server, sekä Datacenter Server. Näillä voidaan käyttää uusia.net:n tarjoamia kehitysympäristöjä kuten esimerkiksi Visual Studio.NET:iä. Muitakin Windows käyttöjärjestelmiä voi käyttää.net-ympäristön toteuttamiseen, mutta tällöin esimerkiksi ASP.NET:n vaatima Web-palvelin pitää hankkia jostain erikseen. 21

Windows XP on uusi Windows-työpöytäkoneiden käyttöjärjestelmä. Windows XP tarjoaa monipuolisia verkkotoimintoja sisältävän käyttöympäristön.netsovelluksille. Windows 2000 ja Aktiivihakemisto Windows-verkon objekteilla on perinteisesti ollut yhteisenä puitteena toimialue (domain), jossa erilaiset toiminnot on ollut saatavilla. Suuremmat verkot on kuitenkin pitänyt jakaa useampiin toimialueisiin, luottamussuhteita hyödyntäen. Windows 2000 palvelimessa toimialueisiin perustuvat toiminnot on korvattu aktiivihakemistolla (Active Directory ), joka on aikaisempaa tehokkaampi tapa suorittaa käyttäjien ja toimintojen hallintaa sekä verkon kohteiden etsintää [19]. Aktiivihakemisto voidaan replikoida usean toimialueen ohjauspalvelimelle, joten verkko ei ole riippuvainen yhdestä järjestelmästä. Tällöin vikatilanteissakaan aktiivihakemistossa olevat tiedot eivät jää piiloon ja samalla verkon kuormitus tasaantuu, kun koneita on useita. Aktiivihakemistoon tallennetaan tietoja verkon objekteista ja hakemistossa luetteloidut asiat ovat kaikki objekteja. Ne voivat olla käyttäjiä, järjestelmiä tai palveluita. Objektit sisältävät attribuutteja, jotka kertovat objektista tietoja esimerkiksi käyttäjäobjekti sisältää käyttäjänimen, koko nimen ja kuvauksen. Jokaisella Aktiivihakemiston objektilla täytyy olla LDAP (Lightweight Directory Access Protocol) -määrityksen mukainen nimi. Nimet ovat monimutkaisia, mutta näin taataan niiden yksikäsitteisyys. Aktiivihakemiston hallinta ja turvallisuus Aktiivihakemistoa hallitaan erillisen hallintakomponentin avulla, joka löytyy Administrative Tools-hakemiston alta. Aktiivihakemiston jokaisella säiliöllä, objektilla ja attribuutilla on käyttöoikeuslista (Access Control List, ACL). Käyttäjille ja käyttäjäryhmille voidaan antaa erilaisia oikeuksia ja toiset tiedot voidaan estää näkymästä joillekin käyttäjille. Jaettu järjestelmänhoito tarkoittaa sitä, että järjestelmänhoidon tehtäviä delegoidaan käyttäjille, mutta käyttöoikeuksia annetaan vain sen verran kuin tehtävän suorittamiseen vaaditaan. Käyttöoikeuslistat periytyvät eli uudet objektit saavat käyttöoikeudet säiliöltä, johon ne luodaan. Globaali luettelo Aktiivihakemisto sisältää globaalin luettelon (Global Catalog, GC), johon voidaan sijoittaa tiedot kaikista organisaation objekteista. Globaali luettelo on palvelu, jonka avulla käyttäjä löytää kaikki ne objektit, joihin hänelle on annettu käyttöoikeus. Vaikeasti muistettavia LDAP-nimiä ei tarvitse tietää, sillä objektien hakutoiminnossa objekteja voidaan etsiä hakukriteereillä. Globaali luettelo on indeksitiedosto, joka sijaitsee Aktiivihakemistopalvelimilla, ja sisältää kaikki Aktiivihakemiston palvelimeen tallennetut nimet riippumatta siitä, kuinka palvelimet on ositettu. 22

Automaattinen päivitys palvelimesta toiseen ( Replication) Koska verkon toiminnot ovat riippuvaisia Aktiivihakemistosta, sen tulisi toimia mahdollisimman virheettömästi. Parempi vikasietoisuus voidaan toteuttaa jakamalla Aktiivihakemisto useiden palvelimien kesken, jolloin yhden palvelimen pettäessä jäljellä olevat pystyvät käsittelemään vikaantuneen koneen tehtäviä. Windows 2000 palvelimen Aktiivihakemisto sisältää replikointikomponentin, jonka avulla replikointi on helpompaa. Palvelimien replikointi varmistaa, että kaikilla palvelimilla on samaan versioon pohjautuva päivitetty tietosisältö. ADSI (Active Directory Service Interface) ADSI (Active Directory Service Interface) on COM-tekniikkaa käyttävä rajapinta, joka on tarkoitettu aktiivihakemiston käyttämiseen, mutta mahdollistaa myös sovellusohjelmien kommunikoinnin minkä tahansa hakemiston kanssa siten, ettei sovellusohjelmien tarvitse välittää muista kommunikointimekanismeista. ADSI tuo järjestelmään modulaarisuutta. Taustalla olevaa hakemistoa voi vaihtaa käyttörajapinnan pysyessä silti samana. Rajapintaa hyödyntävien skriptien ja ohjelmien avulla on mahdollista lukea esimerkiksi Windows NT4.0 hakemistoja, NetWare NDS (Novell Directory Service) hakemistoja, ja LDAP hakemistoja (jollainen esimerkiksi Aktiivihakemisto on) [16]. ADSI:n avulla voidaan esimerkiksi C++ tai Visual Basic-ohjelmakoodilla lukea tai muokata objektien (eli käyttäjän ja sovelluksien) oikeuksia ja näkyvyyksiä. Käyttöympäristö on sikäli keskeneräinen, että esimerkiksi C#-kielellä ei vielä pysty samoja toimintoja tekemään. 2.6.NET yhteensopivat sovellukset Microsoft ei keskity ainoastaan.net-infrastruktuuriin, vaan se koettaa kehittää myös siinä käytettäviä sovelluksia. Nämä sovellukset integroivat Web-palvelut omiin toimintoihinsa ja mahdollistavat käyttäjilleen yksilöllisen käyttäjäkokemuksen. Microsoftin tarkoituksena on myös kehittää kuluttajille Internet-palvelujen MSN-verkkoa, bcentral -pienyritysportaalia, Officeohjelmistopakettia ja ohjelmistokehittäjille Visual Studio.NET:iä. Tässä voidaan hieman epäillen kuitenkin odotella, että tuleeko kaikki toimimaan niin hienosti kuin pitäisi. Vai tuleeko Microsoftilta tuote, joka ei sovi muiden valmistajien tuotteiden kanssa yhteen kaikesta avoimuudestaan huolimatta. Maltti on valttia, tässäkin tapauksessa. 23

3. XML JA LIITÄNNÄIS- TEKNIIKAT XML (extended Markup Language) on rakenteisen tiedon määrittelykieli. XML on vain standardi tapa esittää puumaiseksi rakenteeksi jäsenneltyä tietoa, mutta mikäli XML-dokumentteja halutaan käyttää johonkin, tarvitaan tueksi muutakin. XML-liitännäistekniikoilla tarkoitetaan XML-standardiperheen jäseniä eli World Wide Web Consortiumin (W3C) ylläpitämiä XML:n liitännäistekniikoita sekä SAX (Simple API for XML) -ohjelmointirajapintaa. Liitännäisstandardit hoitavat XML:n kääntämisen ja tiedon spesifioinnin eri tarpeisiin. Standardien kokonaiskuvaa ja kehittymistä kannattaa seurata W3C:n ylläpitämillä WWWsivuilla [4]. Kunnonvalvontaverkon toteutus nykyaikaisesti vaatii avoimia ja mahdollisimman helppokäyttöisiä sekä tunnettuja tekniikoita tiedon siirtoon, johon XML sopii hyvin. Mutta pelkkä kuvauskieli ei vielä riitä, sillä tietyllä tavalla kuvattu dokumentti pitää voida varmistaa oikein muodostetuksi tai muuttaa toiseen kuvausformaattiin tai siirtää jonnekin toiseen paikkaan. Tällöin tarvitaan avuksi useita muita tekniikoita. Pääasiallisimmat tekniikat on esitelty tässä kappaleessa. 3.1 XML ( sisällön kuvauskieli ) XML-kuvauskielen syntaksi on hyvin yksinkertainen, sisältäen vain muutamia sääntöjä. Hyvin muodostettu (well-formed) dokumentti tukeutuu muutamiin rajoituksiin, jotka on lueteltu XML-spesifikaatiossa [3]. Lisäksi, jos XMLdokumentille on määritelty skeema, niin sen avulla voidaan todeta dokumentin olevan validi. Alla (listaus 3.1) on esimerkki XML-dokumentista ja sen jälkeen on käyty läpi hyvin muodostetun XML-dokumentin säännöt. <?xml version= 1.0 encoding= UTF-8 standalone= no?> <?xml-stylesheet type= text/xsl href= C:\tyylisivu.xsl?> <lista xmlns:xsi=http://www.w3.org/2000/10/xmlschema-instance xsi:nonamespaceschemalocation= C:/skeema.xsd > <hinnat> <bensan_hinta> 6.74 </bensan_hinta> </hinnat> </lista> Listaus 3.1. XML-dokumentti. XML Declaration Dokumentti aloitetaan XML-ilmoituksella (Declaration). Se määrittelee XMLkielellä dokumentin XML-jäsentimelle version ja luomiseen käytettävän merkistön. Oletusarvoisesti dokumentit koodataan Unicode-merkistöllä (joko 8-24

tai 16-bittisellä, eli UTF-8 tai UTF-16). Näitä käytettäessä encoding-attribuuttia ei tarvitse määrittää. Stand-alone ilmoitus, jonka arvo voi olla yes tai no, kertoo jäsentimelle yes -arvollaan, että kaikki oleellinen, mitä dokumentista tarvitsee tietää, on sisällytetty luettavaan streamiin. Arvolla no sen sijaan ilmoitetaan, että sovelluksen pitää mahdollisesti hakea lisäinformaatiota ulkopuolelta jäsentämisen täydentämiseksi. XML-ilmoituksen täytyy olla ensimmäisenä dokumentissa ja muun dokumentin tapaan, se erittelee ISOT ja pienet kirjaimet eri merkeiksi [30]. Aloitus- ja lopetustagit Dokumentti koostuu tekstistä ja tageista. Tagit indikoivat dokumentin rakennetta sitä käsittelevälle sovellukselle. Tagit ovat merkkejä, jotka on eristetty muusta dokumentista kulmanuolilla <>. Elementti on dataobjekti, jota käytetään dokumentissa asioiden ilmaisemiseen. Elementit nimetään kuvastamaan elementin sisältöä. Seuraavassa on esimerkki elementistä. <lausahdus>onpas kaunis ilma</lausahdus> Lausahdus niminen elementti alkaa aloitustagilla <lausahdus>, sitä seuraa elementin sisältö ja lopuksi on elementin lopetustagi </lausahdus>, joka eroaa aloitustagista ainoastaan kauttaviivan (/) osalta. Elementin nimen pitää alkaa kirjaimella tai alaviivalla, ja seuraavat merkit voivat olla kirjaimia, numeroita alaviivoja tai väliviivoja. Juurielementti XML-dokumentilla pitää olla yksi ja uniikki juurielementti (root element), jonka aloitus- ja lopetustagit ovat uloimpana dokumentissa. Eli aloitustagi heti XMLdescription:in perässä ja lopetustagi aivan dokumentin lopussa. Isot ja pienet kirjaimet Kaikki XML-elementit ja -attribuutit ovat kriittisiä isojen ja pienten kirjainten suhteen (case sensitivity). Jos elementti alkaa aloitustagilla <Lista>, niin se pitää tällöin lopettaa vastaavalla lopetustagilla </Lista>. Muunlaiset merkkivariaatiot, kuten esimerkiksi </lista> tai </LISTA> eivät ole tällöin sallittuja. Puumainen rakenne Hyvin muodostetussa dokumentissa elementeillä pitää olla kunnollinen puumainen rakenne. Isäelementin sisällä olevan lapsielementin aloitus- ja lopetustagit täytyy sijaita isäelementin aloitus- ja lopetustagien sisäpuolella. 25

<Hinnat> <Bensan_hinta> 6.74 </Bensan_hinta> </Hinnat> Listaus 3.2. Puumainen rakenne. Erikoismerkit Jäsentimen toiminta perustuu muutamaan erikoismerkkiin, joita se etsii XMLdokumentista, ja päättelee näiden merkkien jäsennnyksen avulla, mitkä merkit kuuluvat sisältöön tai rakenteen kuvaukseen. Mikäli halutaan käyttää dokumentin sisällössä näitä erikoismerkkejä, on silloin turvauduttava korvaaviin merkkiyhdistelmiin, jotka jäsennin osaa tulkita halutuksi merkiksi. Seuraavassa on erikoismerkkien vastaavuustaulukko. < > & &apos; " < (pienempi kuin) > (suurempi kuin) & (ampersandi) (heittomerkki) (lainausmerkki) Taulukko 3.1. XML-erikoismerkit. Attribuutit Elementtien informatiivisuutta voidaan lisätä sijoittamalla attribuutteja arvoineen elementin aloitustagiin nimen perään esimerkiksi seuraavasti. <Bensan_hinta pvm= 17-7-2001 > Attribuutin nimi on siis pvm ja arvo 17-7-2001. Lainausmerkkien sijasta arvon ympärillä voidaan käyttää heittomerkkejä, mutta merkkien yhdistely ei ole sallittu (esimerkiksi pvm= 17-7-2001 ). Attribuutteja ei voi sijoittaa lopetustagiin. Erikoismerkkejä voi laittaa attribuutteihin edellisen kappaleen sääntöjen mukaan. Tyhjät elementit Dokumenttiin voi olla tarvetta sijoittaa esimerkiksi elementti, jolla ei sisältöä, mutta muuten merkitystä kyllä, esimerkiksi rivinvaihto HTML-tyylin mukaisesti <HR>. Jotta saataisiin dokumentista validi ilman elementin lopetustagia, pitää elementin aloitustagiin lisätä kauttaviiva siten, että kauttaviiva ja tagin loppusulku ovat yhdessä. <HR/> Tyhjään elementtiin ei voi laittaa sisältöä, mutta attribuutin kylläkin, esimerkiksi <IMG SRC= images/kuva.gif />. Kommentit Kommentteja voi sijoittaa lähes mihin tahansa kohtaan XML-dokumenttia. Kommenttirivi kuvataan seuraavasti: <! kommenttirivi jota parseri ei huomioi--> 26