The Keyhole team has had recent engagements that involve applying HTML5 technology to create rich client web applications. In order to explore and validate application architecture design patterns and best practices in this area, and as they say “eat our own dogfood,” we have gone through the process to rewrite our existing internal timesheet tracking system. The old, legacy system …
The Data Access Layer, Part 2 – Using the Criteria API
In Part One of this series, I reviewed the basic design goals of a Data Access Layer (DAL), those being: Contain all of the information about the persistence mechanism; and Contain none of the business logic. I then discussed what can happen if your application needs to operate on large volumes of data: performance may demand running more sophisticated queries; …
The Data Access Layer, Part 1 – The Basics (And When Things Aren’t So Basic)
Today, I’d like to talk about the data access layer (DAL). I’ll start with a brief review: the motivation behind the DAL, the design principles that define a theoretically “good” DAL, and the relationship between the DAL and modern persistence technologies. Then, I’ll look at how simple DAL designs might start to break down under some workloads. I’ll outline a …
Mobile HTML5 Enterprise Application Architecture
If you’re thinking that you can prevent end-user demand for mobility, just remember this: when PCs were first introduced, IT attempted to hold them at bay. How did that work out? Mobile device proliferation is causing (some say forcing) IT departments to change. They must now support mobile devices, which further extends to IT having to develop mobile-friendly applications. Simply accessing …
Code Design Decision – Protecting Delegate Access?
I ran into a design decision on one my engagements. Consider an abstract class implementation that references another (delegate) object. Convenience methods are in the primary class that are called by concrete classes. This pattern can also exist in a concrete that delegates to another implementation. This is a common idiom applied to the service/dao pattern, where a DAO delegate would never …