A recent chat with Ken Levy from Code magazine, inspired me to write this multi-part blog on Tagging.
Microsoft Tag is Microsoft’s answer on the growing adoption and use of QR codes. While QR codes are a common technology in Asia, the people in Europe (and as I understood also in the US) are getting up to speed with the technology right now.
For the people who don’t know what a QR code is, a small introduction can be helpful to understand it’s potential. Microsoft describes a Tag as: “a new kind of bar code that connects almost anything in the real world to information, entertainment, and interactive experiences on your mobile phone. Tags are free to create and use. You can add them to your ads, posters, product packages, display it on your website, billboards, clothing…” (source: http://tag.microsoft.com )
To be able to use the Tags, people need to download the Microsoft Tag reader app by downloading it from http://gettag.mobi (browse to this site using your mobile phone). When a tag is scanned, the phone will open a webpage, download a v-card, receive a text message, or dial a number. Microsoft provides a ready to use Tag manager, but in some cases you would like to create Tags programmatically.
Microsoft lets you register for the tag manager and you can get access to their API, which is actually a WCF service. Although this is great, some things need to be overcome to work efficiently with the API. The API lets you create, manipulate and retrieve single tags. It is however, not possible to search or delete a Tag using the API. Although this might sound as a big disadvantage we can turn it around and make it into an opportunity.
The “missing” functionality in the API forces developers to create local storage to make the tags searchable. By choosing the right Architecture and technologies we can develop a flexible implementation of the API which can connect to any Storage with minimal effort. This blog consists of four parts, where every part will present a solution or approach to work with the API.
Part 1. Harnessing the power of IExtensibleDataObject
Part 2. Wrapping the service in the Repository Pattern
Part 3. Reading the .Tag format
Part 4. Decouple the Persistor with Dependency Injection