ASPNL logo (1 kb)
Thursday, March 11, 2010




Microsoft MVP

.NET Codewise Community
<< vorige | overzicht | volgende >>

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)

<< vorige | ^ naar boven | overzicht | volgende >>
copyright 2000-2007 ASPNL