Archívum - Jan 6, 2020
DDD terén tudnátok segíteni?
Sok dolog nem világos DDD-vel kapcsolatban, és nem találok rá választ, bárhogyan keresem. Általános dolgokra persze van válasz, hogy aggregate root-ot hogyan kell választani, meg hogy mi entity, mi value object, mekkora egy bounded context, ilyesmik. Nem tudom, hogy ennyire specifikus a problémám, vagy egyszerűen a DDD nem foglalkozik a kérdéssel, és oldjam e meg, ahogy tudom. Nyilván a problémát meg tudom oldani, de szeretnék fejlődni DDD-ben is. Az egész cucc egy nodejs daemonban futna egyelőre, később talán szétskáláznám földrészenként, ha szükséges.
Nagyjából arról van szó, hogy van egy előrejelző szolgáltatás (ForecastingService), amitől bizonyos időközönként elkérem a friss előrejelzéseket (Forecast). A felhasználók (User) feliratkoznak (Subscription) értesítésekre (Notification) ezekkel kapcsolatban. Az, hogy valaki kap e értesítést függ a tartózkodási helytől (Location), az arra a helyre vonatkozó előrejelzéstől (LocalForecast(Forecast, Location)), a felhasználó beállításaitól (NotificationSettings), és egy viszonylag bonyolult algoritmustól, ami ezek alapján dönt. Igy első körben azt mondanám, hogy értesítő szolgáltatást nyújtok (NotificationService), ami a fent említett algoritmust magába foglalja.
Ami mentésre kerül az a User, a Settings és a Subscription. A Forecast-et is menteni szeretném, de csak azért, hogy egy másik alkalmazással kielemezzem később, tehát ennél az alkalmazásnál nem olvasnám vissza, de jó lenne, ha bekerülne az event storage-be. A Notification-t is jó lenne menteni, mert jó lenne, ha nem menne el sorozatban egy tucatszor ugyanaz az értesítés.
1.
Itt azt hiszem egyértelmű, hogy szükség van legalább egy setInterval-ra, hogy tudjam folyamatosan frissíteni az előrejelzéseket. Ami nem világos DDD-vel kapcsolatban, hogy ennek a setInterval-nek hol a helye. Mármint valószínűnek tartom, hogy csinálnom kell egy NotificationService példányt az elején, ami elindítja az egészet, és felügyeli a frissítést.
Nagyjából arról van szó, hogy van egy előrejelző szolgáltatás (ForecastingService), amitől bizonyos időközönként elkérem a friss előrejelzéseket (Forecast). A felhasználók (User) feliratkoznak (Subscription) értesítésekre (Notification) ezekkel kapcsolatban. Az, hogy valaki kap e értesítést függ a tartózkodási helytől (Location), az arra a helyre vonatkozó előrejelzéstől (LocalForecast(Forecast, Location)), a felhasználó beállításaitól (NotificationSettings), és egy viszonylag bonyolult algoritmustól, ami ezek alapján dönt. Igy első körben azt mondanám, hogy értesítő szolgáltatást nyújtok (NotificationService), ami a fent említett algoritmust magába foglalja.
Ami mentésre kerül az a User, a Settings és a Subscription. A Forecast-et is menteni szeretném, de csak azért, hogy egy másik alkalmazással kielemezzem később, tehát ennél az alkalmazásnál nem olvasnám vissza, de jó lenne, ha bekerülne az event storage-be. A Notification-t is jó lenne menteni, mert jó lenne, ha nem menne el sorozatban egy tucatszor ugyanaz az értesítés.
1.
Itt azt hiszem egyértelmű, hogy szükség van legalább egy setInterval-ra, hogy tudjam folyamatosan frissíteni az előrejelzéseket. Ami nem világos DDD-vel kapcsolatban, hogy ennek a setInterval-nek hol a helye. Mármint valószínűnek tartom, hogy csinálnom kell egy NotificationService példányt az elején, ami elindítja az egészet, és felügyeli a frissítést.