For anyone interested I also maintain another technology blog over at daxaar.github.io. It started primarily as a playground for understanding GitHub pages and Jekyll and a desire to jump ship from WordPress. I’m still undecided on where I’ll eventually end up but feel free to have a read.
We recently received a proposal from a supplier for their integration into our backend stock control system. A requirement of the solution is asynchronous communication in both directions so MSMQ was recommended as expected. However, I was surprised to see the implementation their side for processing messages was a Windows Service. The platform is entirely Windows Server 2008 and .NET 4.0 so the choice of a Windows Service which carries with it all of the responsibilities of appropriate application management is in my opinion the wrong choice.
The “better” solution in the absence of a full Service Bus (Biztalk etc) would be implemented using Windows Activation Service (WAS) hosted WCF/WF Services enriched by AppFabric. This feature set provides so many functional and operational benefits; I struggle to see where a valid use case exists for implementing any messaging solution via a Windows Service. That’s a broad statement that can’t hold true for all requirements but I believe architecturally when the discussion turns to a Windows Service we should be asking the question “Why shouldn’t we do this in IIS/WAS and AppFabric?” rather than “Why should we?”
Below are some of the benefits (not just limited to message queuing) of WAS and AppFabric you can leverage without writing a line of additional code
- Leverage common deployment practices through MSDeploy
- WAS alone (via the IIS Process Model) will provide significantly enhanced Process Management through built in and easily configurable:
- Scalability (shared worker process where appropriate)
- AppFabric will provide (again through easy configuration):
- IIS Management Console integration giving visibility into configurable searchable metrics via the AppFabric dashboard.
- Workflow Persistence including idle time management
- Caching Services (additional install)
- Configurable Service Auto Start (requires Server 2008 R2)
- WCF Endpoint Management
- Easy configuration of WCF/WF Event Tracing
- Easier integration of custom monitoring services (i.e. a custom system reporting website)
- Pluggable tracking/tracing profiles
- Easier integration for reporting into SCOM (additional install pack)
Significantly, AppFabric Server will also provide you with a head start (albeit a small one) into the runtime framework of Azure AppFabric as the two offerings begin to converge over the next few years.
I hope this post has proven useful to someone looking at delivering application services that might otherwise have considered a Windows Service to be their only option. AppFabric is available through the Web Platform Installer and further information on Windows Server AppFabric can be found here.
This post is based on my interest recently in current mobile development offerings. Not the specifics of implementation but more around what options are available to us as developers. In this post I won’t be going to go into any specifics as I’m just putting this post out there as a starter for where my current thinking lies. Over the next few months I’m hoping to expand on this with more specifics on the choices available.
In an entirely fictitious scenario let’s imagine our Business User proclaims “We need an app!” This invariably leads to a conversation with the development/design team along the lines of:
Dev/Design: “App? What kind of app?”
Business User: “An iPhone app of course! What else could I possibly mean!?”
An iPhone app
An Android app
A Windows Phone 7 app
A Blackberry app
A web app published on the app store/marketplace, i.e Appcelerator or PhoneGap
A mobile version of our current content site
A mobile version for a specific new product offering”
Skip ahead 12 months…a Windows 8 Metro style app
Business User: “Ah…”
As a developer (.NET in particular) we’ve now got a plethora or choices at our disposal for the provision of a mobile offering. The technology and platform choices we make are broader than that for our typical LOB applications. Whilst it’s ultimately down to the client’s time and budgetary constraints, in the mobile world it’s rarely an option for us to target a specific platform.
We need to consider the two ends of the mobile spectrum – given limitless time and budget we’ll write native apps for each platform and excel at providing a compelling experience on each device. Whilst at the other end of the spectrum we’ll provide a modicum of time to prettify our content/services for the most common mobile platform. For now let’s ignore the psychology of an app on the App Store / Marketplace, there has to be a middle ground for those of us that aren’t writing the next Angry Birds but do understand the significance of mobile going forward and therefore want to embrace it.
Given the above I think it’s valuable for us as LOB developers to have a clear understanding of our options for getting the job done when mobile isn’t (currently) our core target. I believe these options lie in the capabilities of CSS3 and HTML5 and when a need for accessing device features such as the camera or accelerometer arise we can extend this through the use of frameworks such as PhoneGap, Appcelerator and to some degree MonoTouch. Having just confirmed the link to PhoneGap for this post I can’t help but feel disappointment at learning of their acquisition by Adobe. Good luck!
If you’re just dipping your toes into the mobile waters I’d also highly recommend looking at what are commonly known as Web Apps. These are typically mobile versions of a current desktop content/service offering but served up in a very mobile centric way through frameworks such as jQuery Mobile. These tend to go beyond that which can be achieved with a mobile skinning of existing content.
I produced this quick and fairly flippant flowchart whilst thinking about this post and figured I’d add it here. Some of these technologies can of course be intermixed in your mobile solution. For example, jQuery Mobile can work quite nicely with the PhoneGap and Appcelerator frameworks.
Are you about to embark on a new website (re)design? Do yourself a favour and embrace HTML5.
“But I need to support older browsers and this HTML5 stuff won’t be getting a ratified spec until 2022. That’s no use for me! Damn you IE6!”
When it comes to your markup, if you’re still using the div tag for anything other than a styling placeholder you’re doing it wro…in a less than ideal way. HTML5 introduces a significant number of more semantic tags such as <header>, <section>, <article> and <footer> to name a few, but where you’ll run into problems is in styling these tags or even getting them to display within old IE.
BTW apologies for the insanely cheesy title, despite not being an SW fan at all I strangely couldn’t resist.
I attended a Windows Phone Camp training course on Saturday and wanted to give some feedback on how I think the day went.
This was a free Microsoft UK Tech Days course that I came across by following @ukmsdn (I highly recommend you put them in your followed list). Although free it was on a Saturday and I was paying for the train ticket myself so I wasn’t just turning up for a “free lunch”. There were no course prerequisites beyond .NET development experience and a laptop with the latest SDK installed. I therefore wasn’t expecting a deep dive and that’s fine but the SDK requirement made me think there was going to be a lot of hands on labs and that’s also fine. My current appreciation of the platform is pretty weak which was the main premise for attending. If I could take away from it a better appreciation of where the platform currently is and where it’s going I’d be happy.
Now just to throw a little spanner in the works the week prior was the Microsoft Build Event. Here they announced Windows 8 but more significantly introduced the new Metro Style UI and the developer experience that surrounds it. This throws a major question for me over the future direction of Win Phone 7 and I knew there was no way we’d get any clarification on that from an unrelated event so soon after. My assumption was correct but that didn’t stop us asking the questions! 🙂
Back to the event. Overall it felt a little too free form with all the sessions being optional and the area outside to be used for collaboration and cracking on with writing our apps. Hang on, I don’t have one to write yet! But if I had, none of the organisers were easily available for feedback. There’s a balance to be struck between sitting attendees in a room and talking them to death all day and allowing them to get hands on. I think this event went a little too far in the opposite direction without a clear objective. Realistically the prerequisite should have been – Already have an app in development. Overall it felt much more like a user group event rather than targeted sessions with a clear objective. The former is fine and has a definite place in the community but I’d like to have been made more aware of the format up front because if I’m honest I probably wouldn’t have attended.
The sessions themselves with the exception of the first (which started earlier so we missed the intro) were sub par at best with too much time being spent explaining fundamentals that any competent developer could pickup. For example, did we really need 20 minutes of discussion on the Silverlight control Toolkit and each control therein? How about just a pointer to it’s existence on Codeplex? Let’s get into the best practices of using these controls and the real world challenges the presenters have faced in their use. These are the kinds of things you get real benefit from at these types of event.
My minimum requirement of any offsite event needs to be that I’ve gained more from the day than I would have by spending that time sat watching video content from my Pluralsight subscription or Channel 9. Unfortunately on this occasion I can’t say I did.
I’ve also signed up for the Windows Azure Bootcamp training on the 30th September so let’s hope that one provides a little more tangible content.
TLDR: Not what I was expecting as there was little structure to the day. I would have liked to see more hands on labs offered for those of us that don’t have an existing app in development. The quality of the presentations was below that which I’ve come to expect from Microsoft. I thoroughly enjoyed chatting with a couple of other delegates about Windows 8 and the overall future of the platform.
Whilst Mix 2011 gave us a taster, the Build Conference now seems to be playing out as I hoped with a heavy developer focus on HTML 5 and the creation of rich web design. My first port of call in the new space will be with the release of a new sku of Expression Blend for HTML development.
I can’t help but become somewhat exasperated with the pace of technology today but I also can’t wait to get stuck into the new developer tooling so I guess I’m as much a part of the problem as the next dev. 🙂
Oh and before I go I’m extremely jealous of anyone attending Build as they all got their hands on a free Samsung tablet device running Windows 8 Preview. I guess I need to work harder on scoring some training budget!
In conversation with my peers I often find myself citing references to information picked up from my common list of community sources (blogs, websites, podcasts, video training etc). All too often I’m asked “What’s dot net rocks?” or “Who’s Phil Haack?”. Well here’s my starter for ten of essential community reading, listening and watching.
.NET Rocks – The original (seriously) audio talk show for .NET developers.
Hanselminutes – Scott Hanselman as below. Produced by Carl Franklin who also hosts .NET Rocks.
This Developers Life – A simply excellent perspective on the experiences and stories of real developers.
Scott Hanselman – Microsoft Community Manager (I think) who’s a great speaker and has a.
Phil Haack – Program Manager on the ASP.NET MVC team.
Ayende Rahien – The man when it comes to OSS frameworks on the .NET stack (NHibernate, EFProfiler, RavenDB)
Willy-Peter Schaub – Team Foundation Server Ranger
www.stackoverflow.com – Technical Q and A forum done properly.
Online Video Training
TekPub (Paid)- Slightly different style of video training. Their pair programmed jQuery series is simple superb.
Pluralsight (Paid)- Been with these for a number of years now. Awesome and now very extensive Microsoft training library.
Channel 9 – Video training side of MSDN. Quality has increased immensely over the last 18 months.
DNRTV – Excellent series by Carl Franklin who brings us .NET Rocks.
Tech people (amongst many others) I follow on Twitter:
More to come…