
“We have worked with Cake solutions for a number of years. They developed a bespoke business critical software system that met our requirements and have provided us with maintenance and development support since then, reacting quickly to our needs and helping to generate ideas for how we can move the system forward. They offer a professional service and understand our environment and the way we work.”
National Union of Student Services
National Union of Students Services Limited (NUSSL) use a system we developed four years ago to process the invoicing and billing processes. The current system, Mercury, is our last active .NET application. It performs complex calculations on the invoices NUSSL deal with as part of their services to the various student unions’ outlets.
Early in 2008, we started work on re-implementation of the system in Java. The reason for the rewrite was two-fold: first, we needed to implement new features that were becoming too difficult to express in the ageing data structures and .NET code. The second reason was that our preferred technology is Java EE.
Just like the UKTI systems, Neptune uses Spring Framework at its core; the middle tier makes heavy use of Spring AOP and Spring remoting. We have chosen Java RMI as our remote call infrastructure, because the clients are Swing-based applications and because at this moment, there are no additional integration requirements.
However, the Spring remoting infrastructure allows us to declaratively add another remote call technology without affecting the system’s code. The system performs substantial amount of transactional processing; we use Microsoft SQL Server 2005 running on Windows 2003 Server. We deploy our application in the JBoss 4.2.2 application server. To achieve optimal performance and to allow us to access all aspects of the physical architecture, all software components are 64bit.
For the first time, we have extensively used Spring AOP and AspectJ to implement some parts of the system. The nature of aspect-oriented programming lends itself to performance and health monitoring and security. The performance monitoring is particularly interesting. We collect statistical information in the integration tests. The integration tests ensure that the system meets the performance requirements, but the statistical information allows us to analyse the behaviour of the system. The system automatically notifies the administrators if its performance starts to degrade.
The client application is a Swing rich client application. We evaluated various client technologies, including .NET; but in the end, we decided that the performance of the Java RMI and our experience in modern Java applications outweighed the offering of the user interface libraries in .NET. Additionally, we felt that the latest user interface controls only increased the user interface friction. In our rich client application, we
tried to keep in mind that users do not wait to see animated rows appearing and disappearing; the users use they application to help them with their work. If the application’s user interface slows the users down, then it is not helping them at all. With this concept in mind, we implemented rich client application.
+44 161 443 2355
enquires@cakesolutions.net
Get a free half day consultation from one of our senior developers or systems architects.
Find out more →Lucky us--OSJ editorial By Jan Machacek on 2010-03-10
Domain driven design By Jan Machacek on 2010-03-02