Permalink
Browse files

Update links

  • Loading branch information...
krasserm committed Oct 25, 2012
1 parent 67c6b3b commit 965ec75a9158602c9d0d33ec4c47858e121d78fb
Showing with 9 additions and 9 deletions.
  1. +9 −9 README.md
View
@@ -10,22 +10,22 @@ Compared to the [old implementation](https://github.com/krasserm/eventsourcing-e
The example web application uses the [Eventsourced](https://github.com/eligosource/eventsourced) library for both event-sourcing and command-sourcing. Furthermore, it implements the [CQRS](http://martinfowler.com/bliki/CQRS.html) pattern and follows [domain-driven design](http://domaindrivendesign.org/resources/what_is_ddd) principles.
![Architecture](https://raw.github.com/eligosource/eventsourced-example/wip-es-trait/doc/images/architecture.png)
![Architecture](https://raw.github.com/eligosource/eventsourced-example/master/doc/images/architecture.png)
Legend:
![Legend](https://raw.github.com/eligosource/eventsourced/wip-es-trait/doc/images/legend.png)
![Legend](https://raw.github.com/eligosource/eventsourced/master/doc/images/legend.png)
- The [domain model](https://github.com/eligosource/eventsourced-example/blob/wip-es-trait/src/main/scala/org/eligosource/eventsourced/example/domain/Invoice.scala) is a rich, immutable domain model. It is annotated with [JAXB](http://jcp.org/en/jsr/detail?id=222) annotations for XML and JSON binding.
- The [service layer](https://github.com/eligosource/eventsourced-example/tree/wip-es-trait/src/main/scala/org/eligosource/eventsourced/example/service) implements the event-sourced and command-sourced actors (processors) together with service facades for asynchronous writes and synchronous, non-blocking reads of application state.
- The [domain model](https://github.com/eligosource/eventsourced-example/blob/master/src/main/scala/org/eligosource/eventsourced/example/domain/Invoice.scala) is a rich, immutable domain model. It is annotated with [JAXB](http://jcp.org/en/jsr/detail?id=222) annotations for XML and JSON binding.
- The [service layer](https://github.com/eligosource/eventsourced-example/tree/master/src/main/scala/org/eligosource/eventsourced/example/service) implements the event-sourced and command-sourced actors (processors) together with service facades for asynchronous writes and synchronous, non-blocking reads of application state.
- Processors manage application state via [STM](http://nbronson.github.com/scala-stm/) references.
- For reading current state, services facades access STM references directly (concurrent reads).
- For updating current state, services facades access STM references via processors where a single STM reference is updated by a single processor ([single-writer-principle](http://mechanical-sympathy.blogspot.de/2011/09/single-writer-principle.html))
- On the command-side of the implemented CQRS pattern is the [InvoiceService](https://github.com/eligosource/eventsourced-example/blob/wip-es-trait/src/main/scala/org/eligosource/eventsourced/example/service/InvoiceService.scala) that manages application state and serves consistent reads of invoices.
- On the query side of the implemented CQRS pattern is the [StatisticsService](https://github.com/eligosource/eventsourced-example/blob/wip-es-trait/src/main/scala/org/eligosource/eventsourced/example/service/StatisticsService.scala), a read model that serves eventually consistent reads about invoice update statistics.
- The [PaymentProcess](https://github.com/eligosource/eventsourced-example/blob/wip-es-trait/src/main/scala/org/eligosource/eventsourced/example/service/PaymentGateway.scala) is an example of a stateful, potentially long-running and event-sourced business process.
- The [web layer](https://github.com/eligosource/eventsourced-example/tree/wip-es-trait/src/main/scala/org/eligosource/eventsourced/example/web) provides a RESTful service interface to application resources and supports HTML, XML and JSON representation formats. It is built on top of [Jersey](http://jersey.java.net/) and [Scalate](http://scalate.fusesource.org/). A [Play](http://www.playframework.org/)-based version will follow (which supports asynchronous responses in contrast to Jersey).
- The [application configuration](https://github.com/eligosource/eventsourced-example/blob/wip-es-trait/src/main/scala/org/eligosource/eventsourced/example/server/Appserver.scala) wires the pieces together.
- On the command-side of the implemented CQRS pattern is the [InvoiceService](https://github.com/eligosource/eventsourced-example/blob/master/src/main/scala/org/eligosource/eventsourced/example/service/InvoiceService.scala) that manages application state and serves consistent reads of invoices.
- On the query side of the implemented CQRS pattern is the [StatisticsService](https://github.com/eligosource/eventsourced-example/blob/master/src/main/scala/org/eligosource/eventsourced/example/service/StatisticsService.scala), a read model that serves eventually consistent reads about invoice update statistics.
- The [PaymentProcess](https://github.com/eligosource/eventsourced-example/blob/master/src/main/scala/org/eligosource/eventsourced/example/service/PaymentGateway.scala) is an example of a stateful, potentially long-running and event-sourced business process.
- The [web layer](https://github.com/eligosource/eventsourced-example/tree/master/src/main/scala/org/eligosource/eventsourced/example/web) provides a RESTful service interface to application resources and supports HTML, XML and JSON representation formats. It is built on top of [Jersey](http://jersey.java.net/) and [Scalate](http://scalate.fusesource.org/). A [Play](http://www.playframework.org/)-based version will follow (which supports asynchronous responses in contrast to Jersey).
- The [application configuration](https://github.com/eligosource/eventsourced-example/blob/master/src/main/scala/org/eligosource/eventsourced/example/server/Appserver.scala) wires the pieces together.
Build
-----

0 comments on commit 965ec75

Please sign in to comment.