Summary
When Prism Systems, Inc. implemented a vending machine controller containing a cellular modem; it was apparent that a vending management system would be necessary for facilitating communication with the vending machine. Initially, a vending management system was implemented for the vending machine controller that consisted of a website, iOS application, and several Windows services for supporting the communication with the vending machines. This first pass was admirable, but the website and Windows services were unstable and buggy. It was obvious to Prism Systems, Inc. that a revision was needed to the vending management system.
Solutions
The Windows services needed to be completely redesigned in order to design out the issues with the first version. The combination of multiple connections to the database and poor thread management caused numerous memory leaks and eventually caused the service to crash. The solution to these issues was fairly straightforward:
Serialize the database interface and only maintain one or two connections to the database.
Implement a better thread management system, ensuring all threads were created and disposed correctly.
The website was also completely redesigned using ASP.NET MVC. This new website was designed around the owners of the vending machines and their needs. The following is a list of the various features that were implemented in the new website to better server owner's needs.
Comprehensive reporting system, including charts and tabular data
User dashboard for quickly assessing sales data for each machine
User friendly interface
Support ticketing system for direct interfacing between owners and support technicians
Additional machine details displayed to the user
Full documentation on how to use the website
Finally, the iOS application was revised to present the user with additional data now available in the database.
Customer Benefits
System stability and up-time
Owners can now access more data on their machines
Sales data is readily accessible
iOS application presents a similar interface to the user
Technologies
C#/.NET
ASP .NET MVC
jQuery
Bootstrap
Objective C with xCode