Need some advice on a software engineering project that deals with large amounts of File I/O & file manipulation. Current system is written in Visual FoxPro 9 with a SQL Server 2008 database. The compiled application sits on an application server that is accessed via end users across a LAN. The end users PC have shortcuts to the application which they execute causing severe traffic at night and also causes the app server to be nothing more than a glorified hard drive/file share. Our tech services area is attempting to alleviate the problem by creating virtual machines for end users to allow the program to run from the app server correctly in order for the application to directly talk with SQL Server without bouncing traffic around the LAN. My first instinct is to create a N-Tier solution to replace the current process and I'm fairly new to this design. If this is the best approach to resolve the nightly network latency issues, please point me in the way of best practice approach. My idea is to have WPF or WinForms Presentation Layer, C# windows services as the business logic layer on the app server to handle the File I/O, and finally SQL Server 2008 and a file share on the app server as the Data Layer. Am I correct in my goal of N-Tier architecture or is there something I'm missing or incorrectly handling?