47. Business Services Communicating Asynchronously over a Bus Persistence of Hips Client Contacting Service - Services can only communicate over the bus. No Point to point communication (why). - Communication via neutral protocol
55. Aside – Bob’s Website Client Application Layer DB Javascipt Calculation Which way is best?? Client Application Layer DB Server Calculation
56. Layered Architecture HIP UI HIP Service Message Bus Data Layer Transformation Layer Business Layer Application Layer Presentation Layer The presentation layer is for pixel-painting. All logic should be delegated elsewhere. The application layer is the glue between presentation and business. It is where MVC controllers live. Logic here is very light – simple field-level validation is as clever as it gets (e.g. “is it a date?”, “is it a number?”) The business layer is a simulation of the business problem. It has no dependencies on the UI or on other technologies. Most importantly, it is isolated from persistence! (Similar to the Service Layer in RM+) The transformation layer is the glue between business logic and non-UI technologies. It maps information between the business logic and some underlying tech. e.g. It maps HIPs into messages for the bus and into records for the database. The data layer is represented by infrastructural tech. The RDBMS, and code to connect to the WebMethods bus sit here. Web Pages Controllers Domain Model Technology Abstraction & Mapping Tech infrastructure HIP DB
57. What is the point of having layers? Separation of Technical Concerns
58. Example: Is a transformation layer a good idea? Application Layer Transformation Layer Persistence Layer Database Domain Object Table ORM Domain Object Record Object Table Mapper ORM
59. UI Layer Application Layer Technical Decomposition into layering Trade Service Data Service Pricing Service Functional Decomposition into Services Domain Model, Utilities etc Reuse across services and potentially layers Application separation and crosscutting
60.
61. 3. Use of frameworks to enforce design principals
77. Service Duplication Problem UI Layer Application Layer Technical Decomposition into layering Trade Service Data Service Pricing Service Functional Decomposition into Services Domain Model, Utilities etc
79. Solution Be wary of functional decomposition and its tendency to push you away from reuse
80.
81. And finally… Never listen to an architect who does not write code. Conversely if you are an architect, make sure you get your hands dirty.
Hinweis der Redaktion
Your design is always tested Encapsulate different concerns so that changes can be independent of one another
The subtle point here is that you must direct the applications progress through others. This
(b) Is closer to the typical architect’s role.
In an agile team we use stand-ups as a good opportunity to establish vision. e.g. broad patterns such as layered separation or finer grained patterns/components such as a centralised workflow engine.
Services can only communicate over the bus. No Point to point communication (why)
Bob build’s a website that does some funky calculations. Bob asks Fred if he thinks embedding the funky calculations in javascript on the client is a good idea?
Mapper prevents the domain layer being coupled to persistence. Qu: what happens when you split
What is wrong with static fields? If a class fun
Because changes to the superclass can affect all subclasses This tends to arise when the superclass is not a clean abstraction. That is to say that it is not doing something common to all its children.