/ / NLayers Architecture - Je užívateľská relácia súčasťou CrossCutting? Ako sme ju mohli implementovať? - relácia, architektúra, dns, vrstva

NLayers Architecture - Je užívateľská relácia súčasťou CrossCutting? Ako sme ju mohli implementovať? - relácia, architektúra, dns, vrstva

Predpokladáme, že máme N vrstvovú architektúru(Príklad: Prezentácia, Doména, Perzistencia). Prezentačná vrstva je webová aplikácia, ale musíme mať na pamäti, že by sme mohli chcieť znovu použiť doménu a vytrvalosť pre inú prezentačnú vrstvu (podobne ako webová služba alebo aplikácia Window).

Doména musí implementovať všetky obchodné logiky pri zohľadnení oprávnení používateľa. Teraz moja otázka je, ako doména vie o relácii používateľa a ktorý používateľ volá na svoje služby?

Služba My Domain Service (alebo kontrakty) vo všetkých jeho metódach bude obsahovať vstupný parameter UserId poskytovaný Presentation Layer (doména by mala byť dôvera v prezentačnej vrstve):

  • GetProfileInfo (userid)
  • GetUserPendingOrders (userid)

OR .. Mala by užívateľská relácia komponent CrossCutting? Ak áno, doména by vedel, ktorý používateľ volá svoju službu, takže rozhranie bude:

  • GetProfileInfo ()
  • GetUserPendingOrders ()

Ako sme ju mohli implementovať? Existuje nejaký návrhový vzor?

Musíme uložiť reláciu používateľa v aplikácii Storage? alebo existuje iný spôsob, ako to urobiť?

odpovede:

0 pre odpoveď č. 1

Užívateľská relácia v klasickom webovom kontexte je niečím, o čom pozná webový server.

Môžete mať koncept User Session v rámcivaša aplikácia (ako len iný druh doménového objektu, s vlastným úložiskom dát, atď.), ale vy by ste chceli dávať pozor, aby ste neviazali / pevne spájali to, čo sa týka koncepcie webových serverov v relácii.

To isté platí pre iné druhy aplikácií (WinForms, atď.).

Myšlienka UserId nemá vzťah k používateľovirelácie; že používateľ môže používať systém (vytvoriť novú reláciu a možno by ste mohli spojiť obe veci dohromady. (Vaše príklady vyššie ma zarážali, či ste ich zmätili).

Je to prierezový problém?

Ak vytvoríte používateľskú reláciu ako objekt formálnej domény - potom odpoveď je "áno", pretože doménové objekty (alebo koncepty, ktoré reprezentujú) sú prierezové ale nie v tom istom zmysle, ako je zaznamenávanie alebo spracovanie chýb.

V opačnom prípade, ak relácie používateľov nie sú viac ako (napríklad) relácie založené na webovom serveri, potom odpoveď je "nie", ide o koncept špecifický pre prezentačnú vrstvu - bežiacu na webovom serveri.

Potom tu je tretia možnosť, druh polovicedoména: môžete preniesť okolo používateľa SessionID, rovnako ako by ste prešli inými primitívnymi údajmi - ale nikdy vlastne nemali doménový domén User Session. Stačí si byť opatrný, napríklad jeden typ webového servera použite GUID, iný môže použiť int alebo reťazec - preto buďte opatrní, ako idete.