I spent the past couple of weeks in sunny (excruciatingly hot) Paphos, Cyprus. In a similar vein to last year’s Holiday Reading : Lanzarote, I took a lot of reading material with me…
With the exception of Sharp Ends they are all quite old books that I had never got round to reading.
Sharp Ends – Having read all of Joe Abercrombie’s other books this latest collection of short stories was recently released, thankfully in time for my holiday. It didn’t pull me in quite so far as the other books, but such is the nature of the short story beast. It’s always great fun reading about “The Bloody Nine” and the new characters introduced left me wanting more. Hopefully more is in the pipeline.
The Da Vinci Code – I watched the Da Vinci Code film many years back. Aside from vaguely remembering there was a blonde monk who enjoyed whipping himself, all other details had been lost. I read Angels and Demons recently and decided to continue with The Da Vinci Code. It’s fascinating how Dan Brown mixes history with story.
The Moon of Gomrath – This is another old book from the 60s, I read the Owl Service last year, and subsequently Elidor. Fast paced high fantasy, not a long read and won’t be for everyone. If you like Wizards, Cat Armies, Dwarves, Elves, Possession and Witches you’ll like this one.
Adrian Mole – Sparked by a recent conversation in the pub with a couple of friends I decided to revisit Adrian Mole’s Diary. The stories are hilarious and level of detail make it so easy to relate to.
Microsoft have made it extremely easy, almost trivial to deploy your web applications to the Azure cloud from Visual Studio. Cloud capability is incredibly powerful for scalability, particularly in enterprise level applications and affords Developers with the option to make their infrastructure as Agile as their Software.
Web API offers some powerful routing behaviour. Let’s look at how we can use this in our app to avoid needing a new Controller for every Translation we wish to offer (again, ignore the fact our sample is likely only ever to require two way!).
We currently have a single AlphabetToMorseController with our old ITranslator implementation. In the previous tutorial we abstracted our service into an extensible dictionary, this should allow us to take our Translator Key as a routing parameter and our string to translate as a parameter in the URI on our API.
SqlBulkCopyCat is a configurable wrapper around SqlBulkCopy in .NET for SQL Server, born out of a personal frustration at work of being pushed towards using SQL Server Integration Services (SSIS) for copying large amounts of data between databases with no real alternative for anything robust without the baggage of taking on SSIS dependencies and the associated bloat in the Development Environment.
As a drummer, Chris Adler of Lamb of God has always been an idol of mine (his signature sticks are my go to), and I’ve been a huge Lamb of God Fan for a number of years now. The story of their front man, Randy Blythe getting arrested on Manslaughter charges on landing in Prague Airport, Czech Republic two years after the alleged incident was truly shocking. His book, Dark Days, recounts the ordeal and offers an insight into his incredibly strong outlook on life and how he made it through the other side.
There’s a famous quote in the world of Software Development:
“We can solve any problem by introducing an extra level of indirection.”
In my experience, this is almost certainly correct, this post will see us adding in an additional layer of Abstraction to allow us to simplify our Controller(s) and manage our Dependencies in a more straightforward manner.
Last post saw us implement our Translation PCL into our Web API using Dependency Injection. The problem is that our ITranslator Interface only handles a single Translator Implementation, such that when we inject from our Container we can’t currently translate more than one direction. We’ll look into the why’s shortly, but by the end of the post we will have created :
Portable Class Libraries afford great benefit when it comes to sharing code across platforms/usages. We can share a single library across our UWP App where it’ll run locally and on our Web API where it’ll execute behind our endpoint. Dependency Injection has been made very accessible with the latest ASP.NET MVC Web API.
The current MorseCoder.PCL targets only Windows 8.1 as it’s point of API Reference. We’ll need to change that to extend it to the wider .NET Framework (we’re not doing anything prohibitive, so this isn’t a problem). By the end of the post we’ll have updated our PCL to target what we require, and integrated it into the Web API Project using Dependency Injection to pull in an instance of our Translator from the IServiceCollection container.