Click here to Skip to main content
13,453,725 members (45,150 online)

Dominic Burford - Professional Profile



Follow on Twitter Google+ LinkedIn      Blog RSS
I am a professional software engineer and architect with over eighteen years commercial development experience with a strong focus on the design and development of web and mobile applications.

I have experience of architecting scalable, distributed, high volume web applications that are accessible from multiple devices due to their responsive web design, including architecting enterprise service-oriented solutions. I have also developed enterprise mobile applications using Xamarin and Telerik Platform.

I have extensive experience using .NET, ASP.NET, Windows and Web Services, WCF, SQL Server, LINQ and other Microsoft technologies. I am also familiar with HTML, Bootstrap, Javascript (inc. JQuery and Node.js), CSS, XML, JSON, Apache Cordova, KendoUI and many other web and mobile related technologies.

I am enthusiastic about Continuous Integration, Continuous Delivery and Application Life-cycle Management having configured such environments using CruiseControl.NET, TeamCity and Team Foundation Services. I enjoy working in Agile and Test Driven Development (TDD) environments.

Outside of work I have two beautiful daughters. I enjoy cycling, running and taking the dog for long walks. I love listening to music and am a fan of Rush and the Red Hot Chilli Peppers to name a few.



For more information on Reputation please see the FAQ.


Members need to achieve at least one of the given member levels in the given reputation categories in order to perform a given action. For example, to store personal files in your account area you will need to achieve Platinum level in either the Author or Authority category. The "If Owner" column means that owners of an item automatically have the privilege. The member types column lists member types who gain the privilege regardless of their reputation level.

ActionAuthorAuthorityDebatorEditorEnquirerOrganiserParticipantIf OwnerMember Types
Have no restrictions on voting frequencysilversilversilversilverAdmin
Bypass spam checks when posting contentsilversilversilversilversilversilversilverSitebuilder, Subeditor, Mentor, Protector, Editor, Staff, Admin
Store personal files in your account areaplatinumplatinumSitebuilder, Subeditor, Supporter, Editor, Staff
Have live hyperlinks in your profilebronzebronzebronzebronzebronzebronzesilverSubeditor, Protector, Editor, Staff, Admin
Have the ability to include a biography in your profilebronzebronzebronzebronzebronzebronzesilverSubeditor, Protector, Editor, Staff, Admin
Edit a Question in Q&AsilversilversilversilverYesSubeditor, Protector, Editor, Admin
Edit an Answer in Q&AsilversilversilversilverYesSubeditor, Protector, Editor, Admin
Delete a Question in Q&AYesSubeditor, Protector, Editor, Admin
Delete an Answer in Q&AYesSubeditor, Protector, Editor, Admin
Report an ArticlesilversilversilversilverSubeditor, Mentor, Protector, Editor, Staff, Admin
Approve/Disapprove a pending ArticlegoldgoldgoldgoldSubeditor, Mentor, Protector, Editor, Staff, Admin
Edit other members' articlesSubeditor, Protector, Editor, Admin
Create an article without requiring moderationplatinumSubeditor, Mentor, Protector, Editor, Staff, Admin
Approve/Disapprove a pending QuestionProtector, Admin
Approve/Disapprove a pending AnswerProtector, Admin
Report a forum messagesilversilverbronzeProtector, Editor, Admin
Approve/Disapprove a pending Forum MessageProtector, Admin
Create a new tagsilversilversilversilverAdmin
Modify a tagsilversilversilversilverAdmin

Actions with a green tick can be performed by this member.

GeneralCoding Standards Pin
Dominic Burford24-Feb-17 6:02
professionalDominic Burford24-Feb-17 6:02 
GeneralSoftware Architecture Challenges Pin
Dominic Burford17-Feb-17 1:31
professionalDominic Burford17-Feb-17 1:31 
GeneralGetting the Most Out of Your Unit Tests Pin
Dominic Burford9-Feb-17 9:21
professionalDominic Burford9-Feb-17 9:21 
GeneralBuilding a strong development team Pin
Dominic Burford8-Feb-17 6:31
professionalDominic Burford8-Feb-17 6:31 
GeneralLast pieces of the mobile app in the Web API puzzle Pin
Dominic Burford27-Jan-17 5:03
professionalDominic Burford27-Jan-17 5:03 
GeneralSerializing .NET types that contain DateTime Pin
Dominic Burford22-Jan-17 18:53
professionalDominic Burford22-Jan-17 18:53 
GeneralClearing the Dead Letter Queue on an Azure Service Bus Queue Pin
Dominic Burford16-Jan-17 8:57
professionalDominic Burford16-Jan-17 8:57 
GeneralMigrating ASP.NET Web API services to the Azure platform Pin
Dominic Burford10-Jan-17 2:45
professionalDominic Burford10-Jan-17 2:45 
Several of my previous posts have documented some of the challenges and proposed solutions that I've encountered whilst migrating our ASP.NET Web API services over to Azure. Here is a summary of the entire journey thus far.

As part of the work involved in delivering the new version of a mobile app to the market, we decided that we wanted to migrate the underlying infrastructure to the Azure platform as it would provide newer, faster infrastructure. This involved two primary objectives.

- hosting the ASP.NET Web API services on Azure
- implementing a service bus architecture with Azure Service Bus

Hosting the ASP.NET Web API services on Azure involved creating an Azure Web Site which would host the services. I subsequently made the necessary changes to the Team Foundation Server 2015 deployments by creating a new release / deployment for Azure. Each time a build is triggered, we deploy the new version to our Azure endpoint. Using Azure for hosting our services ensures maximum levels of availability and scalability, ensuring we can meet not just current demand but future demand too.

Configuring Application Insights to monitor our services is simple. Although our services don't need to be hosted on Azure to use Application Insights, it is easier if they are. So we have constant monitoring of our services, giving us regular metrics on the health and diagnostics of our services.

Implementing a service bus architecture using Azure Service Bus proved challenging as it requires a mental shift in how you think about services. In traditional service architecture, one service synchronously invokes another service. In a service bus arthitecture, services do not communicate directly with each other. Instead, all requests for services are added to a service bus queue, where they will be picked up and processed by a separate out-of-band service.

All data submitted from mobile devices through the app would be routed to an ASP.NET Web API service that would simply add the request onto the Azure Service Bus queue. This ensured all service requests would be highly responsive as the service was doing nothing more than adding a message to a queue and would be available to service further requests almost immediately. The actual processing of the request was fulfilled by a separate service.

Due to the disconnected nature of service bus architectures, whereby the recipient and client applications communicate via a service bus rather than directly with each other, it is impossible for the recipient application to know when a client application has submitted a request. What is needed is a polling mechanism that will constantly poll the Azure Service Bus looking for new messages. I achieved this using an Azure Function which is bound to the Azure Service Bus listening for incoming messages.

Upon receiving a new message from the Azure Service Bus, the message is processed by a routing service that routes the request to the appropriate ASP.NET Web API. The querystring parameter is used to indicate to the routing service what destination service it needs to be routed to. This ensures that the routing service forwards requests onto the appropriate service endpoints where the necessary business logic is implemented. The routing service also adds a high degree of flexibility for future development.

Using a combination of Azure's web hosting, Service Bus and Functions I have successfully delivered an end-to-end solution for processing requests from a mobile app which adds significant levels of scalability, resilience and responsiveness. As the chief architect on the project, and deeply involved in the majority of the implementation, as well as all aspects that involved Azure, I feel proud and excited by the results of the project. It has forced me to learn new ideas and technologies and has been a lot of fun.
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare

Home | LinkedIn | Google+ | Twitter

GeneralProcessing Azure Service Bus messages using an Azure Function Pin
Dominic Burford4-Jan-17 9:10
professionalDominic Burford4-Jan-17 9:10 
GeneralThe Structure of an Azure Service Bus message Pin
Dominic Burford30-Dec-16 3:11
professionalDominic Burford30-Dec-16 3:11 
GeneralMy Introduction into Service Bus Architecture Pin
Dominic Burford21-Dec-16 6:40
professionalDominic Burford21-Dec-16 6:40 
GeneralAdding resilience to your services by implementng a retry pattern Pin
Dominic Burford19-Dec-16 1:10
professionalDominic Burford19-Dec-16 1:10 
GeneralAuthenticating Web API services with JSON Web Token Pin
Dominic Burford13-Dec-16 2:26
professionalDominic Burford13-Dec-16 2:26 
GeneralDeploying to Azure with Team Foundation Server 2015 Pin
Dominic Burford9-Dec-16 2:29
professionalDominic Burford9-Dec-16 2:29 
GeneralCatch me over on Medium for my latest blog posts Pin
Dominic Burford7-Dec-16 1:15
professionalDominic Burford7-Dec-16 1:15 
GeneralWeb application metrics with Application Insight Pin
Dominic Burford25-Nov-16 10:03
professionalDominic Burford25-Nov-16 10:03 
GeneralHow to Pick Your Battles on a Software Team Pin
Dominic Burford16-Nov-16 2:33
professionalDominic Burford16-Nov-16 2:33 
GeneralComplete 360 Testing Pin
Dominic Burford27-Oct-16 2:49
professionalDominic Burford27-Oct-16 2:49 
GeneralCompleted the ASP.NET Web API build pipeline Pin
Dominic Burford24-Oct-16 1:18
professionalDominic Burford24-Oct-16 1:18 
GeneralOne code-base for all mobile platforms is a pipe dream Pin
Dominic Burford12-Oct-16 18:42
professionalDominic Burford12-Oct-16 18:42 
GeneralRe: One code-base for all mobile platforms is a pipe dream Pin
Member 1280340119-Oct-16 9:29
memberMember 1280340119-Oct-16 9:29 
GeneralRe: One code-base for all mobile platforms is a pipe dream Pin
Dominic Burford19-Oct-16 21:26
professionalDominic Burford19-Oct-16 21:26 
GeneralOur apps have gone live Pin
Dominic Burford11-Oct-16 18:54
professionalDominic Burford11-Oct-16 18:54 
GeneralFive truths about software development Part IV Pin
Dominic Burford13-Sep-16 2:44
professionalDominic Burford13-Sep-16 2:44 
GeneralIsolating unit tests using Dependency Injection Pin
Dominic Burford11-Aug-16 22:01
professionalDominic Burford11-Aug-16 22:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Advertise | Privacy |
Web02 | 2.8.180318.3 | Last Updated 21 Mar 2018
Copyright © CodeProject, 1999-2018
All Rights Reserved. Terms of Service
Layout: fixed | fluid