API Management

Het is voor leveranciers van producten bijna onmogelijk om voor ieder platform mobiele applicaties te maken. Natuurlijk kun je dan als leverancier zorgen voor een goede responsieve mobiele website. Het nadeel van deze manier is dat je de capaciteiten en mogelijkheden van een mobiel device niet volledig uit nut.

Daarom zijn er ook leveranciers die hun backoffice via API’s beschikbaar stellen aan de wereld. Meestal wil je dat niet zonder pardon doen en wil je er als leverancier wellicht geld aan verdienen. Dus je wil een Developer portal maken met verschillende groepen, help pagina’s, voorbeeldcode, monitoring, issue lijst, FAQ, maar ook malafide gebruikers/applicaties blacklisten. Kortom het vergt meer dan even het beschikbaar stellen van een paar webservicesje.

Enige tijd geleden had ik ook zo’n droom. Ik wilde voor de SDN een evaluatie app maken. Bezoekers van een SDN event kunnen dan mobiel een evaluatie formulier invullen. Deze evaluatie data wordt in een data store op Azure bewaard. Uiteraard wil ik niet mijn tokens/connectionstrings/passwords etc in mijn mobiele apps opslaan. En aangezien ik niet voor elk device zelf een applicatie kan schrijven, deze gegevens delen met wildvreemde developers.

Screenshot (1)

Dus bedacht ik dat ik een aantal Webapi services beschikbaar moest stellen. Maar zoals hierboven genoemd, had ik behoefte aan eer developers portal om mijn services uit te leggen en wat ze opleveren. Dat is veel werk voor zo’n API als dit. Dit is mijn landingspagina nu; http://sdnevalapp.azurewebsites.net/.

1-7-2015 4-34-32 PM

Gelukkig is daar een oplossing voor op het Azure platform. De API management service (documentatie site).

1-7-2015 4-40-33 PM

1-5-2015 9-53-21 AM

Als je de service gemaakt hebt, dan is er een aparte portal (https://marcelmeijer.portal.azure-api.net/admin) waar je alle instellingen doet, waar je de metrics van je API ziet, de applicaties die aangemeld zijn, welke API het vaakst aangeroepen wordt etc.

1-5-2015 9-53-33 AM

Bij de settings kun je dan de webservices beschikbaar stellen. De verschillende operaties, welke http verb, welke responses er verwacht kunnen worden, welke URL, omschrijving en helpteksten.

1-5-2015 9-56-59 AM

1-5-2015 9-57-15 AM

De URL naar de bron services kan ook on-premises gehost worden. Uiteraard is het dan wel verstandig om de endpoints op deze URL te beveiligen met een Certificaten, UserName/Password combinatie of via OAuth.

Dit is de management portal voor de beheerder van de API(https://marcelmeijer.portal.azure-api.net/admin), voor de ontwikkelaars is er een aparte portal (https://marcelmeijer.portal.azure-api.net/). Deze kan tot op zekere hoogte ook gestyled en aangepast worden.

Deze Developer portal is redelijk compleet. Alle genoemde zaken zijn hier wel te vinden.

1-5-2015 9-53-44 AM

Zo is er een handig overzicht van de beschikbare API’s.

1-5-2015 9-53-59 AM

Van de beschikbare API kun je de beschikbare endpoints zien. Je ziet dan de omschrijving en de  URL om API aan te spreken. Om het endpoint te gebruiken moet je een subscription key meegeven. Het hele idee van deze portal is dan ook om gebruik te reguleren en met behulp van de subscription key is de API per applicatie/ontwikkelaar apart. Aangezien de endpoints aan de basis beveiligd zijn met Certificaten, Username/Passwords of via OAuth, heeft het geen zin om rechtstreeks naar de bron te gaan.

Op deze Developer portal kun je API methode ook uitproberen en de verschillende gedefinieerde HTTP acties uitvoeren. Je krijgt dan de trace en het resultaat te zien.

1-5-2015 9-54-38 AM

1-5-2015 9-54-56 AM

1-5-2015 9-55-30 AM

Helemaal onderaan de pagina kun je per programmeertaal voorbeeldcode krijgen. Alles om de ‘klanten’ van je API te ondersteunen en te helpen.

1-5-2015 9-55-45 AM

Zoals ik in het begin al zei, het beschikbaar stellen van een API is een maar om er een hele developer portal bij te maken is twee. Door deze Azure service kun je je richten op het echte leuke en belangrijkste van de API, de functionaliteit.

Waarom zou je het zelf doen, als je gebruik kunt maken van de expertise van andere. “You can reach further while standing on the shoulders of giants”

Visual Studio 2015 Preview: C# 6

Op 12 en 13 november was er het Connect(); event van Microsoft in New York. De keynote was live te volgen en de gezamenlijke Nederlandse communities (WAZUG, DotNed, VB Central en natuurlijk de SDN) hadden een avond georganiseerd om samen de keynote te bekijken. Als je er niet bij was of de keynote gemist hebt, dan kun je dat op je gemak nakijken op Channel 9. Het waren niet de minste sprekers: Scott Guthrie, S. Somasegar, Brian Harry en Scott Hanselman.

Tijdens dit event liet Microsoft zien dat de woorden van de CEO Satya Nadella, Mobile First, Cloud First, niet zomaar een loze opmerking was. Dit statement gaat door heel Microsoft heen en zit verweven in alles wat zij doen en laten. Dat kwam duidelijk naar voren in de keynote.

Er waren een aantal aankondigingen, een daarvan is dat Microsoft het .NET platform als Open Source beschikbaar stelt op GitHUB. Dat betekent dat iedereen een Pull request kan doen en zo eigenhandig bugs etc. kan oplossen. Deze aanpassingen kun je dan weer terug sturen en Microsoft zal ze (na testen etc.) overnemen. How cool is dat! De eerste pull request kwam binnen het uur dat de spullenboel open stond.

Een andere aankondiging was een preview van Visual Studio 2015. Deze preview bevat ook previews van ASP vNext en C# 6. Hoewel er geen nieuwe taal elementen aan C# zijn toegevoegd, is de taal en tooling wel geoptimaliseerd. Alle aanpassingen die gemaakt zijn, hebben tot doel om het de developer eenvoudiger te maken.

In deze blogpost een paar van de veranderingen.

Code moet niet alleen eenvoudiger maar ook cleaner gemaakt kunnen worden. Zoals bijvoorbeeld een relatief simpele methode als hieronder. De function body is eigenlijk overbodig.

11-22-2014-15-57-00

En het kan korter door gebruik te maken van een Lambda arrow (=>). Deze kende we al, maar nu kan het ook voor deze gebruikt worden. Er komt straks nog een mogelijkheid aan.

11-22-2014-15-57-001

Clean code en duidelijk begrijpbaar en leesbaar.

Nog zo’n mooie toevoeging. De volgende code constructie herkent iedereen wel.

11-22-2014-16-00-57

Met de nieuwe Elvis operator kan dat een stuk korter. De ?. (met een beetje fantasie zie je een kuif met ogen) operator hoef je niet meer te checken of het object NULL is.

11-22-2014-16-01-07

Uiteraard werkt dit ook met methodes is de Class: x?.Calc(1,2); Vind ik iets gevaarlijker, want de Calc methode wordt niet uitgevoerd als x NULL is. Als je niet goed over je tests of structuur let, dan kan dit tot onverwachte situaties leiden.

Nog een veelvoorkomende constructie. We maken strings voor meldingen op en we doen dat natuurlijk netjes met de string.Format methode. Super simpel en redelijk leesbaar, nadeel je moet wel goed tellen en de welke waarde waar komt is niet in een oogopslag duidelijk.

11-22-2014-16-03-39

Dus dat moest anders. Simpel \{<variable>} en de code is gelijk een stuk gedocumenteerd. Natuurlijk kun je ook de formatting regels van string.Format meenemen, volledige vrijheid over de uiteindelijke tekst.

11-22-2014-16-03-391

Bovenstaande is een field van een class/object. Doordat ik hem public heb gemaakt, kun je hem manipuleren. Dat is natuurlijk niet helemaal netjes en eigenlijk zou je properties moeten gebruiken. Nadeel van properties op dit moment is, dat deze zowel een getter als een setter moeten hebben. In C# 6 is die verplichting er niet meer, een property kan alleen een getter hebben.

En als je dan gebruik maakt van de lambda arrow, dan gebeurd dat automatisch voor je. Dat het geen field is, dat zie je door de Code lens referentie teller. Maar ook als je de waarde van de property wilt aanpassen, dan krijg je een compiler waarschuwing.

11-22-2014-16-04-47

11-22-2014-16-01-54

Zo zijn er nog meer aanpassingen en wijzigingen, daarover later meer

IoT (2) Intel Galileo

Op de afgelopen //Build conferentie werd gesproken over een Windows op een Intel moederbordje. Intel heeft daarvoor een chip ontwikkeld en Microsoft heeft daar hun Windows op geinstalleerd. Het bordje is een Intel Galileo bordje. Dat bordje is gewoon een Arduino bordje en dus kunnen ook de Arduino componenten (waarvan er al erg veel zijn) kunnen hierop aangesloten worden.

De Arduino ontwikkelomgeving ziet er zoals onderstaande uit. De code is C / C++. Het onderstaande voorbeel laat het onboard ledje knipperen.

30-8-2014 19-20-31

Ik wilde er natuurlijk Windows op installeren. Daarvoor moest ik eerste een firmware update uitvoeren. De Arduino ontwikkelomgeving is redelijk simpel hoor. Het copy/paste van een directory met alles erin. Daar zit dan ook de Firmware update in.

19-8-2014 22-23-47 

Om over de Windows voor het Galileo bordje te komen, moet je via Microsoft Connect toegang krijgen tot de Windows Embedded Pre-release programma. Via deze pagina’s op GitHub kun je dan de juiste stappen uitvoeren om Windows te installeren.

Onderstaande is het proces van installeren op een SD card.

19-8-2014 21-15-34

WP_20140830_005 - Copy

Als dat allemaal gedaan is, dan ku n je het SD cardje op het G alileo bordje plaatsen. De Galileo watcher app zal hem (mits je het bordje via USB/Ethernet hebt aangesloten) zien.

30-8-2014 13-26-08

Er zit standaard een kleine Webserver op. Dus als je Web browser here doet uit het menu kom je daarop terrecht.

30-8-2014 13-25-48

Je kunt ook een netwerk share openen en dan zie je de bestanden.

30-8-2014 13-26-58

De directory van de webserver. Zoals je zag heb ik de teksten aangepast.

30-8-2014 13-30-57

De directory waarop de delpoyments worden gedaan.

30-8-2014 13-27-17

Oke, nu hebben we Windows draaien op het ding. Maar nu willen we natuurlijk ook iets bouwen. Voor .NET Gadgeteer was het eenvoudig. Hier gaat het iets anders. Er is voor Visual Studio 2013 een project template voor C++.

30-8-2014 13-35-50

Voor deze demo gebruik ik niet de onboard led, maar heb ik een ledje op het bordje gedrukt. Via code zal ik deze dan laten knipperen.

30-8-2014 13-39-06

Niet heel lastig lijkt het. En als je hem runt en debugt, dan zie je dat natuurlijk in je Visual Studio.

30-8-2014 13-39-16      

En het ledje knippert mee. Het rode ledje op de twee foto is feller.

WP_20140830_006WP_20140830_007

Maar het kan natuurlijk ook moeilijker. Zo heb ik net als voor de .NET Gadgeteer een 16×2 display gekocht. Daarop kan ik teksten zetten.

30-8-2014 13-29-40  

Maar dan moet je hem wel aansluiten en dat gaat bij Arduino iets minder elegant dan bij .NET Gadgeteer. Je hebt dan een breadboard en met kabeltjes verbindje contacten.

 WP_20140830_003    

Maar het resultaat van de code is wel zichtbaar. Op het schermpje verschijnt een oplopende waarde (i++).

Gaaf he. Nu nog wat verder experimenteren met die spullen. Je moet daar hele mooie dingen mee kunnen maken. Wel even mijn C++ een beetje oppoetsen.

IoT (1) .NET Gadgeteer

Internet of Things staat de laatste tijd nogal in de belangstelling. Niet zo gek, want de wereld wordt steeds meer connected. Alles er en iedereen staan op elke plek van deze aardbol met elkaar in contact. Als je in vroegere tijden op vakantie was, dan bracht je de achterblijvers via postkaarten op de hoogte. Je was dan ook echt even weg. Heel lang waren er in het buitenland geen Nederlandse kranten te vinden.

Maar dat is tegenwoordig anders. Iedereen heeft wel een mobiel en een tablet. Bijna overal hebben we wel internet en brengen we elkaar op de hoogte via Twitter, FaceBook, mail of andere media.

Niet alleen mensen staan steeds meer in contact met elkaar, ook devices etc staan met elkaar in contact. De meeste auto’s kennen al iets als knop waarmee je de garage kunt signaleren als je een probleem hebt. Je telefoon staat steeds in contact met satelieten om aan te geven waar hij is. Deze toepassingen zullen alleen maar uitbreiden. We hebben bijna allemaal al sensoren in huis om automatisch de verwarming hoger of lager te zetten. We kunnen al via domotica koppelingen van afstand de lampen in huis aanzetten. Onze koelkasten zullen sensoren krijgen en zullen tekorten in de voorraad melden aan een leverancier. Smartwatches zullen naast je hartritme ook je gezondheid in de gaten kunnen houden. Wie weet gaat hij dan zelf de dokter wel bellen als er een wijziging plaats vind in je metingen. Er zullen nog veel meer toepassingen komen.

Al die dingen moeten geprogrammeerd worden. Voorheen waren dat veel electronische schakelingen en low level programmeertalen. Maar tegenwoordig willen we meer eenvoudiger zaken programmeren. Het liefst met talen of omgevingen die we al gebruiken. Dan kan het uiteindelijk ook goedkoper worden.

Er is iets als .NET Gadgeteer. Hiermee kun je met behulp van allerhande modules en een moederbordje een idee uitproberen en maken. Om dit te programmeren kun je dan gebruik maken van .NET Microsoft Framework en gebruik maken van Visual Studio 2010.

WP_20140830_011

De designer is erg WYSIWYG. Je sleept de componenten op het canvas en klikt op het connect en je ziet hoe je het component aan het moederbord moet koppelen.

30-8-2014 17-31-39

In de code kun je dan via intellisense de nodige functies van een component programmeren. Als je erg thuis bent in C#, dan voel je hier helemaal prettig bij. Je kunt het dan deployen en starten op het moederbordje.

30-8-2014 17-32-30 

Je kunt de code debuggen en je oplossing uitproberen.

 WP_20140830_010

Het .NET Micro Framework is al heel oud. De opvolger is Windows Embedded. Daarvoor heb je andere hardware nodig. Op deze hardware moet dan iets als Windows draaien.

In een volgende blogpost vertel ik over het Intel Galileo moederbord waarop Windows draait.

Bing while coding

Iedere developer kent dat wel, tijdens het developen ben je op het internet op zoek naar tips en truuks. Er zijn nogal wat plekken om aan je informatie te komen op het internet. Hulp, tips en codevoorbeelden kunnen gevonden worden op verschillen forums, MSDN, CodeProjectStackOverflow en vele andere. Het is ondoenlijk om ze allemaal te kennen of in een lijstje af te lopen. Dus gebruiken we allemaal onze favoriete zoekmachine om een hulp te vinden. Daarvoor moeten we dan de comfortabele omgeving van Visual Studio verlaten. Je start een browser en zoekt. Sinds kort is er een handige extension voor Visual Studio beschikbaar. Je kunt dan in je development omgeving blijven.

30-8-2014 14-27-33

Moet je dan iets speciaals doen om het tijdens het coderen te gebruiken? Nope, het werkt automatisch. Je begint met typen van je code en de intellisense kicks in (druk op ALT+space als het niet automatisch gaat). De resultaten van de intellisense zijn uitgebreid met Bing search resultaten.

28-8-2014 06-57-38

Hoe handig is dat! Dus naast de standaard documentatie zie je ook de code voorbeelden uit de community.

Als dit je dan nog niet genoeg informatie oplevert of gewoon een zoekactie wilt starten, dan is in de menubalk een zoekbox toegevoegd. Type hier je vraag in en in je Visual Studio verschijnen de resultaten op een handige en overzichtelijke manier.

28-8-2014 06-58-43 28-8-2014 06-58-5328-8-2014 06-59-03

Nu zal het vaak zo zijn, dan niet iedereen volledig toegang heeft tot het internet. Demo en codevoorbeelden kunnen ook op een lokale locatie geplaatst worden en toch dienen als bron van het Bing Visual Studio tool.

30-8-2014 15-36-07

Hoe handig is dat! Op deze manier hoef je als ontwikkelaar niet steeds te contextswitchen. Je kunt dan in de flow blijven.

Happy coding!

Windows Azure tools 2.2

Iedere zoveel tijd komt er een nieuwe versie van de Windows Azure tools for Visual Studio aan. Met de komst van een nieuwe versie van Visual Studio was er een update moment. Deze keer is de update niet zomaar oppoetsen van de vorige, maar zitten er weer juweeltjes van toevoegingen in. Overigens is er ook een 2.2 voor Visual Studio 2012.

Deze keer is het proces om je Windows Azure subscriptions te beheren in je Visual Studio omgeving flink aangepakt. Bij de vorige versies van de Windows Azure Visual Studio tools moest je een .publishsettings xml file downloaden (op https://windows.azure.com/download/publishprofile.aspx). In deze file stonden dan alle gegevens van je subscriptions.

Door dit bestand te importeren in Visual Studio werd de Server explorer gevuld met de juiste subscriptions etc. Het downloaden van de file en importeren was een hele verbetering, maar de gegevens stonden in een bestand en deze vergaten we weer weg te gooien.

Met deze versie (2.2) van de tools is dit proces mooier gestroomlijned.

In de Server explorer kies je uit rechtermuisklik menu voor “connect to Windows Azure” op de Windows Azure node.

28-10-2013 19-58-47

Je krijgt dan een login scherm en je logt in de gebruikersnaam/wachtwoord combinatie van de Windows Azure subscription die wilt gebruiken.

28-10-2013 19-58-07 29-10-2013 16-19-14

Daarna krijg je een overzicht van de subscriptions gekoppeld aan dat ID.

28-10-2013 20-03-58

Visual Studio gaat dan even ratelen en zal alle Windows Azure resources behorend bij deze subscriptions laten zien.

 28-10-2013 20-04-54 28-10-2013 20-05-03

Super handig en veel gebruikers vriendelijker.

Have fun met Windows Azure!

LEAP Motion: another way of touch

Als sinds de eerste computer maken we gebruik van toetsenborden. Oke, de allereerste computers werden bedient met schakelaars. Maar al snel daarna komen toetsenborden en dat ding is dan ook niet meer weg te denken bij een computer. Als de grafische user interfaces haar intrede doet, komt er een nieuw fenomeen om de hoek kijken. Door ene Douglas Engelbert wordt de muis bedacht. De goede man is op 88 jarige leeftijd in 2013 overleden. Ook dat ding is sinds dien niet meer weg te denken uit onze dagelijks gebruik. Er zijn intussen heel veel varianten opgekomen: trackballs, pen muizen, trackpads etc. Tegenwoordig passen ze in de muis van je hand (Wedge mouse) of kun je ze open en dicht klappen.

Nadeel van een toetsenbord en muis is, dat ze nog al wat ruimte nodig hebben. Maar ook dat ze een bepaalde hand-oog coördinatie vereisen, die niet heel dichtbij de menselijke natuur ligt. Iedereen kent wel iemand, die bij het eerste gebruik van een muis hele gekke dingen deed. Zoals bijvoorbeeld Wim Kok in 2007 ons allemaal perfect aanschouwelijk maakte.

Microsoft had al vroeg door, dat deze hand-oog coördinatie anders moest. Volgens mij waren zij dan ook een van de eerste die samen met hardware leveranciers laptops maakte die bediend konden worden met een pen. De pen plaatste je dan niet ver weg van het scherm, maar op het scherm in de buurt van waar je wilde dat iets gebeurde. Uiteindelijk zijn er tablets gekomen die dit concept verder uitwerkte en tot een hype verheven hebben. Een pen was toen niet meer echt nodig. Ik weet niet helemaal zeker of de ‘oude’ Surface tafel (Pixel Sense) eigenlijk niet nog eerder was. Oké, deze was te groot en niet echt bedoeld voor consumenten.

Ander groot nadeel van de muis, het toestenbord en pen/touch computing is, dat het niet goed te gebruiken is op plaatsen waar hygiëne een grote rol speelt. Touch schermen kunnen slecht tegen olie en bijtende stoffen, muizen en toestenbord zijn verzamelaars van bacteriën etc. Plaatsen zoals ziekenhuizen etc waar de computers nog een grote opmars kunnen maken, hebben daar last van.

Voor gaming is er ook een dergelijk verhaal te vertellen. Al sinds de eerste game consoles (Atari Pong console) wordt er gebruik gemaakt van een controller. Uiteraard was de eerste controller redelijk eenvoudig, maar tegenwoordig lijken ze nog steeds op de allereerste. Er zijn wat functies bijgekomen en het ene merk gebruik andere kleuren dan de andere, maar toch de innovatie op dat gebied lijkt niet heel groot.

Groot was ook de verrassing toen Microsoft in 2010 kwam met de Kinect (project Natal). Dit apparaat gaf het gamen en heel andere dimensie. Met zijn drie camera’s en de bijbehorende software konden games op een nog meer natuurlijke wijze gebruikt worden. Niet lang daarna kon de Kinect ook op een gewone PC aangesloten worden en daar gebruikt worden. Wij hebben bij Prodware tools ontwikkeld om Kinect te gebruiken in combinatie met ERP systemen.

IMG_0121

Nadeel in het begin was de precisie van het ding. Hij was alleen in staat om een heel persoon (Skelet) te zien en het was erg lastig om heel gedetailleerd te zijn. Inmiddels is de SDK zo verfijnd, dat de persoon ook zittend gedetecteerd wordt en de zuiverheid is beter is geworden. Volgens mij is het eind nog niet bereikt, nu kan er aan de hardware kant nog verder ontwikkeld worden. XBox One met zijn nieuwe Kinect beloofd dan ook heel veel moois.

Het is dan ook niet zo vreemd dat heel veel nieuwe manieren worden bedacht om de computer te bedienen. En deze oplossingen worden ook gevonden. Zo zijn er oplossingen waarmee je de computer/Game console met spraak kunt bedienen, met je hele lijf of alleen met de touch.

De laatste nieuwe aanwinst aan dit pallet van mogelijkheden is Leap motion. Dit kleine apparaatje leg je voor je en met je handen er boven kun je dingen op het scherm bewegen. Het bevat een aantal infra rood sensoren, die samen een heel gebied kunnen bestrijken. Dit gebied is niet beperkt tot de bovenkant van het ding, maar ook een stuk aan de voorkant en aan de achterkant. Tot een hoogte van meer dan 20 centimeter kan hij bijvoorbeeld vingers detecteren.

IMG_0118IMG_0120

Standaard wordt er een Visualizer meegeleverd, waarmee je je Leap motion kunt testen en uitproberen. Hier zie je hoe eea werkt.

  leapmotion

Er is een hele market aanwezig, waarin verschillende aanbieders van games, applicaties en tools hun producten voor de Leap motion verzameld worden en beschikbaar gesteld worden aan de consumenten en gebruikers. En het gaat niet om paar titels of slappe aftreksels, het gerenommeerde Cut the Rope is aanwezig en nog heel veel meer leuke spullen.

De aanwezig van de store betekend ook nog iets anders. Er is dus ook een SDK beschikbaar om zelf tegen de Leap motion aan te programmeren. En ja ook vanuit C#.

19-8-2013 21-49-39

Je opent een Listener en je connect met de controller. Daarna krijg je een hele stroom van data naar je toe en daarmee kun je dan de juiste dingen doen.

19-8-2013 21-53-03

Uit deze stroom van data of stroom van frames kun je handen, vingers en gestures ontdekken. Deze verbindt je dan weer met de acties in je applicaties en klaar is kees.

19-8-2013 21-47-49 19-8-2013 21-48-16 19-8-2013 21-48-38 19-8-2013 21-49-15  

Dit biedt allerlei mogelijkheden en opportunties. Oké, de detaillering en daarmee de kwaliteit kan nog een stuk beter. Maar ik denk dat met enerzijds betere SDK’s en drivers op te lossen is en anderzijds met nog verfijndere hardware. Maar het is wel de moeite waard om er naar te kijken en mee te spelen.

Zoals Microsoft al zei tijdens de introductie van Kinect voor de Xbox: You are the Controller. Jij bent de muis, maar pas op dat je niet vervangen wordt 😉

VCards and QRCodes

Voor mijn werkgever hebben we visite kaartjes met een QRCode ontwikkeld. Deze QRCode bevat een link naar een website waar de VCard van de medewerker te downloaden is. Een VCard is een standaard http://en.wikipedia.org/wiki/VCard voor electronische Business Cards.

WP_20130417_001

Het idee van de QRCode was dat je VCard van de medewerker kunt downloaden en de Prodware medewerker eenvoudig kunt toevoegen aan je adresboek. We hadden de VCard kunnen opnemen in de QRCode, maar dan zou de QRCode ook moeten veranderen als de medewerker een nieuwe functie krijgt of mobiel nummer etc. Dat leek ons niet handig. Daarom hebben we gekozen om naar een website te gaan, waar je de VCard kunt downloaden.

Voor het maken van de QRCode hebben we gebruik gemaakt van de standaard ZXING barcode library (http://code.google.com/p/zxing/downloads/list). Maar Prodware is een Microsoft georienteerd bedrijf en dus hadden we de C# variant van deze lib nodig. Geen probleem daar is een Nuget package voor (https://nuget.org/packages/ZXing).

De code snippet om de code te maken is relatief simpel.

image

Overigens kun je deze library ook gebruiken om een QRCode/Barcode scanner in je WP8 of Windows 8 app in te bouwen. Ik heb dat nu voor twee demo’s gedaan, daarover later meer.

De VCard standaard is handig, maar heeft een probleem. In de loop der tijd zijn de internet browsers argwanend geworden mbt een VCard. Op je gewone Windows 8/Windows 7 computer kun je de VCard zonder problemen downloaden en de data toevoegen aan je adresboek van Windows of Outlook. Dat werkt ook zo op een Windows Phone 7.x. Maar Windows Phone 8, Android en iPhone behandelen een VCard niet zoals je zou verwachten, er is geen standaard applicatie gekoppeld aan de extensie etc.

Omdat probleem op te lossen moest ik op zoek naar een oplossing. Wat blijkt nu, als de VCard via de mail komt, dan werkt het allemaal wel. Dus wordt de website zo aangepast, dat je de mogelijkheid krijgt om de VCard te mailen. Maar dat willen we natuurlijk wel afhankelijk maken van het device.

Mobile:

wp_ss_20130417_0004 wp_ss_20130417_0001

Desktop:

wp_ss_20130417_0002 wp_ss_20130417_0003

Dit is heel simpel te doen in C# en MVC 4. Sowieso gaat MVC 4 al beter om met het tonen van de site in een mobiele browser. In de view neem je deze code op.

image

image

Probleem opgelost. Nu nog even deployen naar onze on-premise server. De test omgeving draait uiteraard op Windows Azure 😉