Introduction
I have been working in the field of design and development of applications using Microsoft technologies for over 30 years. I started out with simple MS-BASIC and QuickC applications to Visual FoxPro and later to Visual Basic/ Classic ASP and then into the world of .NET programming. It has been a journey with lots of evolution and learning has been so much fun all the way. In these times of massive information overflow, I see all these different technologies and terms all over the place on social media and other forums. There is so much on AI, Machine Learning, Big Data, Cloud innovations, etc. This makes it very difficult for the new developer to really understand where to start. How do you write your first application? What are the basic types of applications the new developer must understand before moving into these complex technologies?
Where does the new developer start?
In this article and a series of subsequent articles, I intend to give an overview of the most basic types of applications that a new developer can start learning to develop. I will start by presenting the common types of applications, what they are intended for and then in a separate article for each provide a brief introduction on developing each type of them. I will design and develop each application using the latest Microsoft.NET tool and technologies with screenshots and code samples to make it easy for the developers to follow.
What do I need to develop?
Okay. Let’s start. We can broadly divide the different types of applications we normally see into the below categories,
- Desktop applications
- Web applications
- Cloud-based applications
- Mobile applications
Let us take a brief look at each one of the above,
Desktop applications
These can be said to be applications that are installed and run from the user’s machine. A simple example of this can be Microsoft-Word or Excel. These applications do not require a central location for deployment. Although this makes them more independent as there is no dependency on connectivity with other machines there is also a downside. This is that there is no central location of data storage through which data can be shared with other systems. There are certainly ways around this which include moving data to a central location through some sync process etc. Other issues include providing updates on these systems. As they are independently installed, any change requires a separate update on each installation. We will discuss further when we look at the example of this type of application.
Web applications
Probably one of the most common types of applications used around the world is the web application. It is an application that is deployed at a central location on a server mostly called a web server and different users (or clients, as they're mostly called) can access and use this application through a browser application. As it is installed in a single location, updates are easy to make, and data can be stored in a single shared place and hence do not require any sync process to collect the data. However, the downside to this type of application is that it requires a live connection between the client and the server. If this connection is not working, then the application cannot be used.
Cloud-Based applications
This is more of an extension of the web application, but instead of maintaining the central location or server, we move this to a central location maintained by some third party like Microsoft. This frees us from the maintenance activities of the central server and allows us to concentrate on building a better user application. Other services like data storage, scalability, etc. are also available on-demand and hence we have more time on building the user experience. In the article dedicated to this type of application, we will first build a web application and then move it to the cloud and see the process and benefits of doing that.
Mobile applications
Well, the world would not be complete without mobile technologies which we use so frequently these days and hence I decided to add this type of application as well. It is a mix of a desktop and web application where we will deploy the application on our phone and run it from there. However, we will also call a central location to get data and other information too.
The Microsoft Stack
So far, we have looked at the different types of applications we normally see in the workplace these days. Of course, this is not a complete list and there are many variations and combinations which we will look at as we go along. I have also not included the very common “Console Application” as I intend to focus on applications with user interfaces. I will discuss the “Console Application” as well in some subsequent articles. Now, these definitions above are more technology-neutral. As I have worked mostly with Microsoft tools and technologies over my career, my focus will solely be on Microsoft terms and definitions.
I will be providing examples and code samples using the Microsoft.NET framework, Microsoft.NET Core and Xamarin platforms for each type of application and will explain why I chose a platform for an application type. e.g. Why I use the Microsoft.NET Core platform for a web application.
For the development toolm I will be using Microsoft Visual Studio 2019 Community edition and the C#.NET programing language. This is a free edition of the latest development tool by Microsoft for all types of applications.
In the next article, I will provide an overview of the application which we will develop into a desktop, web, cloud and mobile application. I will discuss the design and architecture of the application at a design level and explain the different components of it. After that, we will move into developing the first of the application types, the desktop application. I will not be providing detailed steps or explanations on each feature but more of an introduction and will leave it to the reader to further explore and enhance each type of application.
Summary
In this age of information overflow and social media, there are just too many technologies that are marketed on various platforms. This can be very confusing for the new developer just starting out in the field of programming. My intention in this series of articles is to provide a very easy to understand introduction to the different types of applications and how to design and develop them using the latest Microsoft technologies.