EvaArchitecture or Eva is based on model–view–viewmodel (MVVM) pattern and is the implementation of the message broker or event bus pattern. It is designed to use SOLID (object-oriented design).EvaArchitecture implements Observer or Publish/subscribe pattern.Publisher creates an event and subscribers listen and reacts on itEva also allows the publisher to get results from subscribers. This results are in form of List. Subscribers do their work and add data to those results. The publisher waits for all subscribers to finish their work and receive results.Eva also allows you not to wait for results and subscribers. This is known as FireAndForget.Eva also allows you to Publish events using async await, coroutine or parallel (multi-threaded).Eva includes its own:UiService: with often used components EvaButton, EvaText, EvaImage, etc.Reference and Event usages finderEva does not create objects in memory for each new instance of event. It works very smartly and doesn't waste heap memory. All events are lightweight. You also don't need to care about the size of the stack segment.Especially created for Unity3d engine, Eva has excellent optimization for slow mobile phones and devices.Created for use in large projects, Eva works great with a large number of publishers and subscribers.Eva Features:Publish & Subscribe Parallel eventsAsync await eventsCoroutine IEnumerator eventsUsual eventsAll in one event type: publish event and subscibe in Usual, Coroutine, Async, Parallel at the same timePublish events with any model type or without itWait and receive result in List from subscribersLiteweight events, no event instances creation, no extra use of heap or stackUiService included with often used components EvaButton, EvaText, EvaImage, etc.Fast Reference Finder included with additional mechanics to find events usages in the scenes, prefabs, components, and objects in event models.Log included which avoids overhead of string values calculations.Entity Component Service makes it easy to parallelize and speed up calculations, without using Burst and unmanaged memoryEva does not use code generation and is compatible with a lot of frameworks.Eva itself does not increase the compilation time.Note: Eva is reference based implementation and does not serialize events when they are published or received. This significantly increases execution speed and also minimizes overhead.Important: Eva does not store event class names in string format in asset files. Instead, it uses Unity's built-in mechanics to store references. This way you can move events from one namespace to another or change the event name and it won't cause errors, unlike other frameworks that store class names in files as serialized strings.Details:https://telegra.ph/EvaArchitecture-03-04