예제 #1
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            var estore = new EventStore();
            var dstore = new DocumentStore();

            Action<Command> future = cmd => DiContainer.Current.CommandBus.Submit(cmd);

            DiContainer.Current = new DiContainer
                                      {
                                          Store = estore,
                                          DocumentStore = dstore,
                                          CommandBus = new CommandDispatcher(
                                              estore,
                                              e => estore.Store(e),
                                              future
                                              ),
                                          Projektor = new Projektor(estore, dstore)
                                      };

            if (!estore.All.Any()) GenerateDemoData(estore);
        }
예제 #2
0
 /* Der Projektor benötigt etwas Erläuterung:
  *
  * Für diese Demo ist es am einfachsten, die Readmodels erst auf Anfrage aus dem Eventstore zu projizieren.
  *
  * Für ein Produktivsystem würde man die Projektionen ggf sofort bei Änerung selektiv (re)-generieren
  * und in einem Key-Value-Store und in Ausnahmefällen in einer RDB speichern.
  *
  * Diese vorberechneten Projektionen sind unproblematisch und lassen sich jederzeit vollständig löschen und regenerieren.
  */
 public Projektor(EventStore eventstore, DocumentStore docstore)
 {
     _eventstore = eventstore;
     _docstore = docstore;
 }
예제 #3
0
 private void GenerateDemoData(EventStore store)
 {
 }