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); }
/* 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; }
private void GenerateDemoData(EventStore store) { }