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.
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.
- 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
- ASP .NET MVC
- Objective C with xCode