Desktop Application Development
UWP Applications can run on a variety of devices, including Windows 10 and Microsoft Surface tablets and portables. I can also develop for other systems using Windows Forms or MacOS libraries and templates to meet your needs.
UWP and Windows 10
Universal Windows Platform (UWP) applications run on a wide variety of devices and computers, including computers running Windows 10. We use the Xamarin UWP platform to develop UWP applications for computers running Windows 10 or higher.
Xamarin tools also provides the libraries necessary to build and run desktop applications for MacOS. Although not requested as often as other platforms, we can build desktop applications to run natively on MacOS.
Data Driven Applications
Desktop Applications can work with and store data locally, or through the use of REST API connections to other system services or external, third-party web services.
Data is vital to most if not all Desktop Applications we develop and support. There are a variety of data storage options available to Desktop Application and which one to use depends on several factors.
With database storage, Entity Framework and Entity Framework Core offer great software integration with existing company databases and applications.
Almost every application we develop is connected to a database representing objects within the application. While Entity Framework provides the ability to shift some work off to the database in the form of stored procedures, it’s really better, and easier to follow in code, when all logic is in once place. We prefer using Linq and C# to structure our data queries over Stored Procedures, when we think of adding new logic and flow to an application and database, but there’s nothing wrong with integrating existing Stored Procedures into new applications using Entity Framework.
We write code that is testable, mostly. Not all code lends itself to great unit testing due to several factors, but more often than not, the restrictions are based on one or more dependencies directly referenced or even hard-coded into a class.
We use Inversion of Control and other methods of abstraction to isolate code as much as possible and increase the testable footprint of new and existing code. You can read more about our Unit Tests here.