IIS (Internet Information Services) remains a widely used web server for hosting websites, FTP (File Transfer Protocol) sites, and other applications on Windows servers. While the graphical IIS Manager interface is great for setting things up initially and for providing a visual overview of your web configuration, there are also some great use cases for…
Category: Programming
Implementing the Repository pattern in conjunction with the Unit of Work pattern is a best practice for data access that can bring a number of benefits to your application codebase when implemented correctly. Given the ease of use and scalability advantages that async .NET code offers, it makes sense to ensure that your data access…
Once your applications are running in a production environment, it is important to be able to monitor what is happening under the hood. Quite often this is achieved by logging output to a file, to a database, or to some other medium. However, it is also possible to intercept live debug and trace output using…
While developing a Windows Service, it is important to be able to debug it like you would a regular desktop or web application. Debugging Windows Services isn’t quite as straightforward as debugging standard Windows, Console, or Web applications. However, when developing a .NET Windows Service it isn’t difficult to set up your project to support…
Have you ever come across the need to use more than one version of an assembly within the same .NET application? Assembly loading can be a somewhat tricky subject when there are multiple versions of the same assembly for a .NET application to choose from. This can result in problems for both static assembly references…
Downloading files programmatically is a common task that most programming languages expose different APIs for. I believe it is useful to have examples to refer to for how to accomplish this in your language of choice, both synchronously and asynchronously. This article covers how to download files with C# using the classes and methods that…
Many apps today need to store data locally on the device they are running on in order to allow the user to continue to perform useful functions while offline or when network connectivity is unreliable. SQLite is an ideal solution for both simple and complex local data storage requirements. Whether you are storing small sets…
From time to time it can be very useful to debug applications running on remote machines. This is particularly true when the machine you are debugging your code on features specialised built-in hardware devices, or when your application is behaving differently compared to when it is running on your development machine. Many developers know that…
MSI packages remain a popular means of distributing applications for installation on Windows devices. On occasion, you may find the need to install or uninstall an MSI package programmatically, for example, whenever you need to automate a software installation or update. In this article, I’m going to show you how you can silently install and…
The Request-Response pattern seems somewhat simple on the surface; send a request, then wait for and receive a response that matches up with the original request. However, implementing this pattern in an efficient manner is something that is easy to get wrong. I’ve found that much of the material online regarding this topic tends to…