Mobiele applicaties ontwikkelen met .NET
Door Michiel van Otegem
7 december 2006
De .NET strategie moet mensen verbinden en ten alle tijde toegang geven tot informatie. Mobiele
apparaten zoals PDA's en mobiele telefoons spelen hierin een belangrijke rol. Het is dan ook
logisch dat .NET het makkelijker maakt om applicaties te ontwikkelen voor deze apparaten.
Wie applicaties wil maken voor mobiele apparaten heeft binnen .NET twee mogelijkheden. Ten eerste
kun je gebruik maken van ASP.NET om web based applicaties te maken die gericht zijn op mobiele
apparaten. Je kunt daarbij denken aan sites die je via een mobiele telefoon met WAP kunt benaderen,
maar ook aan meer geavanceerde sites die je kunt gebruiken vanaf een PDA. Ten tweede kun je applicaties
maken op basis van het Compact Framework. Hiermee kun je client applicaties maken voor de Pocket PC
en andere apparaten die Windows CE .NET gebruiken. Welke van de twee mogelijkheden het beste is,
hangt af van de situatie en het soort applicatie.
ASP.NET
ASP.NET is in eerste instantie ontwikkeld om web applicaties te maken voor browsers op een gewone
PC. De "normale" controls die binnen ASP.NET beschikbaar zijn genereren dan ook HTML die over het
algemeen alleen geschikt is voor die browsers. Browsers op mobiele telefoons en PDA's ondersteunen
echter vaak WML of CHTML, en geen HTML, waardoor de betreffende controls dus niet bruikbaar zijn
voor die apparaten. Om dit probleem op te lossen heeft Microsoft ook een hele verzameling controls
ontwikkeld speciaal voor mobiele apparaten: de mobile controls. Vanaf versie 1.1 maken deze controls
standaard deel uit van het .NET Framework, en dus ASP.NET. Voor versie 1.0 kun je de Mobile Internet
Toolkit downloaden via http://www.asp.net/mobile. Het aantal mobiele controls is beperkter dan
de reguliere ASP.NET controls, maar bieden onder andere functionaliteit voor het weergeven van
tekst, het invoeren van tekst, en het weergeven van een lijst met keuzes. De controls genereren
HTML, CHTML, of WML, afhankelijk van welk apparaat gebruikt wordt om de web applicatie te benaderen.
ASP.NET identificeert het gebruikte apparaat, en zoekt in de lijst met bekend apparaten naar het
soort resultaat dat het moet genereren. De controls zijn hierin zo flexibel dat ze ook anders
weergegeven worden indien dit nodig is. Een goed voorbeeld is een keuzelijst die in een Nokia
telefoon wordt weergegeven zoals te zien in afbeelding 1. Het dichte rondje naast mijn naam geeft
aan dat dat de huidige selectie is. Door een keer te drukken op het groene pijltje verplaats je
de "cursor" naar Bill Gates, die je vervolgens kunt selecteren door op de toets onder "Select" te
drukken. Als je dezelfde pagina opvraagt in een browser op de Pocket PC, krijg je een keuzelijst
te zien zoals in afbeelding 2. In dit geval is er al op het pijltje naar beneden geklikt om alle
mogelijke selecties weer te geven.

Afbeelding 1, Weergave van een keuzelijst in een Nokia telefoon (emulator)

Afbeelding 2, Weergave van een keuzelijst op een Pocket PC (emulator)
Een nog groter verschil is te zien met de Calendar control. Deze geeft in een Pocket PC een klikbare
kalender weer, terwijl in een mobiele telefoon de mogelijkheid bestaat om de datum in te typen,
of een serie schermpjes af te gaan om een datum te selecteren. Desondanks blijf je dezelfde pagina
gebruiken voor de verschillende apparaten, waardoor ontwikkelaars veel minder tijd kwijt zijn met
het aanpassen van applicaties aan verschillende apparaten. Dat neemt niet weg dat er altijd
verschillen zijn tussen de verschillende apparaten die je zul moeten controleren. Ook zal een
applicatie op een wat geavanceerder platform zoals de Pocket PC beperkt worden door de mogelijkheden
van de wat minder geavanceerde apparaten. Je kan met de Pocket PC weliswaar meer kwijt op een
pagina, en gebruik maken van allerlei opmaak, maar als je met de mobile controls werkt word je
daarin beperkt. Als je in Visual Studio .NET een Mobile Web Application project start, wordt deze
beperking je al opgelegd via de ontwikkelomgeving. Pagina's in mobiele applicaties bestaan namelijk
uit één of meerdere forumlieren. Die formulieren zijn niet er groot, en bovendien niet in grootte
te wijzigen. Een mobiele telefoon zal dus altijd in staat zijn om zo'n formulier weer te geven.
Door de acties van de gebruiker kun je van het ene formulier naar het andere gaan. Op die manier
stuur je de gebruiker door je applicatie. Overigens kun pagina's van mobiele applicaties ook gewoon
op een PC bekijken in een browser, omdat de controls ook allemaal gewone HTML kunnen genereren.
Dit is vooral makkelijk als je de functionaliteit van een applicatie de je ontwikkelt wil testen,
omdat je hiervoor dus geen gebruik hoeft te maken van een apart apparaat of een emulator. Je kunt
op die manier dus uitstekend testen of alle code die je geschreven hebt goed werkt. Of de applicatie
op de verschillende apparaten goed werkt moet je natuurlijk wel testen, maar dat kun je doen nadat
je de meeste fouten eruit gehaald hebt via de ontwikkelomgeving. Als je voorbeelden wilt zien van
ASP.NET applicaties voor mobiele apparaten, kun je via http://www.asp.net/mobilee de Quick Starts
bekijken. Via http://www.asp.net/starterkits kun je ook de Portal Stater Kit downloaden. Dit is
een kant en klare applicatie die zowel voor PCs als mobiele apparaten geschikt is.
Zoals gezegd is het nadeel van de mobile controls dat ze zich beperken tot functionaliteit dit in
zowel mobiele telefoons als Pocket PC te gebruiken zijn. Op die manier wordt dus niet het volle
potentieel uit Internet Explorer op Pocket PC gehaald. Wil je applicaties maken die beter gebruik
maken van dat potentieel, dan kun je beter een "gewone" web applicatie maken en de pagina's daarin
aanpassen aan de grote van het scherm van een Pocket PC. Een dergelijke site is dan alleen geschikt
voor Pocket PC of een vergelijkbaar apparaat, dus dit kun je niet doen als je veel verschillende
apparaten moet kunnen gebruiken. Voor een intern netwerk binnen een bedrijf is dit echter een
uitstekend mogelijkheid. Ongeacht welke methode je kiest, is ontwikkelen van web applicaties voor
mobiele apparaten met ASP.NET al enorm veel makkelijker dan voorheen het geval was. Verder kun je
daarbij grotendeels vertrouwen op dezelfde kennis die je nodig hebt bij het maken van applicaties
voor de PC, zowel Windows Forms applicaties als ASP.NET Web Forms applicaties.
Compact Framework
Mobiele web applicaties zijn heel handig als er veel verschillende apparaten ondersteund moeten
worden, en je er niet vanuit kan gaan dat die apparaten meer hebben dan alleen een browser. Echt
uitgebreide applicaties kun je er echter niet mee maken, en bovendien hebben de gebruikers altijd
een internet verbinding nodig om de applicatie te gebruiken. Moet je een applicatie ontwikkelen
die alleen gebruikt wordt vanaf een Pocket PC of een ander apparaat dat Windows CE.NET ondersteunt,
dan kun je veel verder gaan. Dergelijke apparaten zijn ondertussen namelijk uitgegroeid tot
volwaardige computers, die meer zijn dan een uit de kluiten gewassen zakagenda alleen. Op deze
apparaten is het mogelijk om gebruik te maken van het Compact Framework (zie voor meer informatie
.NET Compact Framework Dev Center. Het Compact Framework biedt in grote
lijnen dezelfde functionaliteit als het "gewone" .NET Framework, maar beperkt zich tot de
belangrijkste zaken daaruit. Dit heeft uiteraard te maken met de beperkte ruimte die een mobiel
apparaat over het algemeen heeft. Omdat dergelijke apparaten ook minder processorcapaciteit hebben,
bevat het Compact Framework ook een aangepaste versie van de Common Language Runtime (CLR), die
er voor zorgt dat applicaties ondanks de beperkingen van het apparaat toch nog goed lopen. De CLR
op het Compact Framework is nog steeds verantwoordelijk voor het verifiëren en uitvoeren van de
code, en zorgt er dus voor dat er geen geheugen lekken en dergelijke zijn. Ook heeft het .NET
Framework, en dus het Compact Framework de eigenschap dat de code van applicaties veel kleiner is,
door alle functionaliteit die het framework al levert. De bandbreedte hoeft dus niet gigantisch
te zijn om een applicatie te kunnen downloaden. Hiermee hangt ook samen dat het installeren van
een applicatie veel minder voeten in de aarde heeft, en applicaties makkelijk bijgewerkt kunnen
worden. Er is geen sprake van registratie van onderdelen van de applicatie, dus is het gewoon een
kwestie van bestanden overschrijven. Hierbij is het mogelijk om een applicatie zo te ontwikkelen
dat het zelf bijhoudt of er updates zijn, en die zonodig automatisch ophaalt en installeert. Dit
werkt eigenlijk allemaal vrijwel hetzelfde als in het reguliere .NET Framework, en ook het
ontwikkelen van applicaties is vrijwel hetzelfde. Je kunt met het Compact Framework dus applicaties
maken die behoorlijk overeen komen met applicaties die je op een PC kunt uitvoeren. Het grootste
verschil daarmee is eigenlijk alleen de grootte van het scherm, zoals je kunt zien in afbeelding 3,
waarin gegevens weergegeven worden in een DataGrid. Dat is dus wel iets om rekening mee te houden
als je applicaties ontwikkelt voor apparaten met Windows CE .NET. Het loont echt de moeite om
zoveel mogelijk verschillende apparaten te testen, tenzij je puur voor één apparaat ontwikkeld.
Een emulator zoals gebruikt voor de afbeeldingen is daarbij erg handig. De Pocket PC emulator in
afbeelding 2 en afbeelding 3 maakt deel uit van Visual Studio .NET, en die maakt het mogelijk om
applicaties te debuggen en zelfs stap voor stap uit te voeren. Dit is een onmisbare hulp bij het
maken van dit soort applicaties.

Afbeelding 3, Compact Framework applicatie op Pocket PC (emulator)
Je kunt applicaties lokaal uitvoeren, zonder dat daarbij een server nodig is. Alleen als je gegevens
of functionaliteit van een server nodig hebt, heb je een internet verbinding nodig. Dit betekent
dat je applicaties kunt maken die gegevens opvragen, deze lokaal bewerken, en als er weer verbinding
is de gegevens bijwerken op de server. De mogelijkheden voor mobiele applicaties zijn hierdoor
enorm. Doordat je met het Compact Framework makkelijk applicaties kunt maken die gebruik maken
van web services voor het opvragen en bijwerken van gegevens, kun je applicaties maken voor allerlei
doeleinden. Applicaties die niet mogelijk zijn, of op z'n minst onhandig zijn op een PC of laptop, zoals
applicaties voor een enquêtes in een winkelstraat of voor de transportsector.
De gegevens die je in afbeelding 3 ziet zijn ook opgevraagd via een web service. Dit lijkt
ingewikkeld om voor elkaar te krijgen, maar de code van de web service is heel kort, zoals te
zien in Listing 1. Die code is gemaakt in Visual Studio .NET door een web service aan te maken.
Listing 1 is alle code die daaraan vervolgens toegevoegd is. Listing 2, die de web service gebruikt
(vanuit de mobiele applicatie) is zonodig nog eenvoudiger. Hiervoor is wel eerst een referentie
naar de web service gemaakt, maar daarvoor hoef je zelf geen code te schrijven.
1: string database =
"server=(local)\\NetSdk;database=Northwind;trusted_connection=true;";
2: string sql = "SELECT ProductName, UnitPrice FROM Products";
3:
4: [WebMethod]
5: public DataSet TestDS() {
6: SqlConnection conn = new SqlConnection(database);
7: SqlDataAdapter da = new SqlDataAdapter(sql, conn);
8: DataSet ds = new DataSet();
9: da.Fill(ds);
10:
11: return ds;
12: }
Listing 1, Web service die gegevens ophaalt uit een database
1: [private void button1_Click(object sender, System.EventArgs e) {
2: dataservice service = new dataservice();
3: dataGrid1.DataSource = service.TestDS().Tables[0];
4: dataGrid1.Refresh();
5: }
Listing 2, De web service uit Listing 1 gebruiken om de DataGrid te laden
Conclusie
ASP.NET en het Compact Framework brengen krachtige mobiele applicaties weer een stap dichterbij.
Ze abstraheren de complexiteit van allerlei verschillende apparaten, en geven je mogelijkheden die
op een gewone PC niet misstaan. Met name de Pocket PC komt ook steeds dichterbij de gewone PC, en
doordat ontwikkelaars dezelfde kennis kunnen gebruiken, kunnen er nu veel sneller nieuwe applicaties
gemaakt worden.
Dit artikel is eerder verschenen in Windows & .NET Magazine Benelux, juni 2003 (huidige naam NetOpus)
|