Asp Identity jako kontekst DDD poddziedziny generycznej

Asp Identity jako kontekst DDD poddziedziny generycznej
0

Jak zachować porządek w projekcie?. Jak powinna wyglądać implementacja? Gdzie i jak trzymacie szczegóły dotyczące identyfikacji, roli użytkownika.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:3 dni
  • Lokalizacja:Wrocław
1

Uwierzytelnianie i autoryzacja to infrastruktura, a nie dziedzina aplikacji.

0
somekind napisał(a):

Uwierzytelnianie i autoryzacja to infrastruktura, a nie dziedzina aplikacji.

Zależy, to może być również warstwa odpowiedzialności. Głównie spotykam się z traktowaniem Dostępu, ról użytkownika jako wspólny mechanizm zwykle trzymany w projekcje Common. Idąc w stronę rdzenia oddzielonego, zaleca się wydzielenie autoryzacji, ról i tp. do osobnej pod dziedziny.

Jestem ciekawy, jak to wygląda w waszych projektach.

SL
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Bydgoszcz
2

Warstwa odpowiedzialności ? Jeśli już to jest właśnie część infrastruktury.
Common to już infrastruktura. Usługi, klasy bazowe wspólne dla całej aplikacji, rozszerzenie frameworka - to jest infra.
Autoryzacja nie jest częścią dziedziny no chyba że robić aplikację do zabezpieczeń.
Role z reguły też nie są częścią domeny.

Użytkownicy jak jak pojmujesz to mechanizm zapewniający obsługę, zabezpieczenie, to jest użytkownik w pojęciu domenowym. W domenie może być Pracownik, Klient, Człowiek a nie nie Użytkownik. Jasne że te dwa 'modele' mogą być ze sobą powiązane, ale to nie jest to samo.


Bydgoszcz, Senior .Net Developer
edytowany 1x, ostatnio: Slepiec
0

Rozumiem, że dla was każda aplikacja posiada jedną dziedzinę oraz jeden kontekst... A ta konkretna część infrastruktury czego jest częścią.?

0

Przepraszam nie wyraziłem się jasno. Asp Identity jako część kontekstu DDD poddziedziny generyczne.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:3 dni
  • Lokalizacja:Wrocław
0

Jak dla mnie to używasz jakiejś dziwnej nomenklatury, możesz wyrazić jakoś tak bardziej opisowo o co Ci chodzi?

Bo dla mnie sprawa jest jasna - nieważne ile jest dziedzin i kontekstów, uwierzytelnianie to nadal infrastruktura. Model biznesowy jest wirtualnym odpowiednikiem jakichś rzeczywistych procesów. A to, że w aplikacji jest jakieś uwierzytelnianie nie wynika z modelowania biznesu lecz z tego, że aplikacja jest aplikacją i nie możemy po prostu jak w fizycznym sklepie powiedzieć komuś "pan tu nie stał".

0
[somekind napisał(a)]:

Jak dla mnie to używasz jakiejś dziwnej nomenklatury, możesz wyrazić jakoś tak bardziej opisowo o co Ci chodzi?

Bo dla mnie sprawa jest jasna - nieważne ile jest dziedzin i kontekstów, uwierzytelnianie to nadal infrastruktura. Model biznesowy jest wirtualnym odpowiednikiem jakichś rzeczywistych procesów. A to, że w aplikacji jest jakieś uwierzytelnianie nie wynika z modelowania biznesu lecz z tego, że aplikacja jest aplikacją i nie możemy po prostu jak w fizycznym sklepie powiedzieć komuś "pan tu nie stał".

No widzisz, ale to zależy czy jesteśmy w sklepie, czy w przychodni oraz w jakim kraju, bo w niektórych nie ma kolejek do lekarzy.

Dlaczego starasz się dalej udowodnić mi, że infrastruktura czy zarządzanie tożsamością użytkownika to jakiś niezależny byt względem dziedziny, czy kontekstu.

0

Którą z opcji wybierasz.

Kontekst Sklep
application
domain
infra ask for authentication difference context

Kontekst System ER
application
domain
infra ask for authentication difference context

Kontekst Autoryzacja
application
domain all manage Access
infra ask for authentication

Lub

Kontekst Sklep
application
domain with manage Access
infra with authentication

Kontekst System ER
application
domain with manage Access
infra with authentication

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:3 dni
  • Lokalizacja:Wrocław
0

Zadałeś pytanie, więc odpowiedziałem zgodnie z prawdą, poza tym nie mam zamiaru niczego udowadniać ani do niczego przekonywać.
Jeśli chcesz sobie myśleć i robić po swojemu oraz dalej nie odróżniać użytkownika od klienta oraz aplikacji od biznesu to tak rób, IDE wszystko przyjmie.

edytowany 1x, ostatnio: somekind
0
Chory Młot napisał(a):

Którą z opcji wybierasz.

Kontekst Sklep
application
domain
infra ask for authentication difference context

Kontekst System ER
application
domain
infra ask for authentication difference context

Kontekst Autoryzacja
application
domain all manage Access
infra ask for authentication

Lub

Kontekst Sklep
application
domain with manage Access
infra with authentication

Kontekst System ER
application
domain with manage Access
infra with authentication

Kontekst Sklep
application
domain
infra ask for authentication difference context

Kontekst System ER
application
domain
infra ask for authentication difference context

Kontekst Autoryzacja
application
domain all manage Access
infra with authentication

Lub

Kontekst Sklep
application
domain with manage Access
infra with authentication

Kontekst System ER
application
domain with manage Access
infra with authentication

0
somekind napisał(a):

Zadałeś pytanie, więc odpowiedziałem zgodnie z prawdą, poza tym nie mam zamiaru niczego udowadniać ani do niczego przekonywać.
Jeśli chcesz sobie myśleć i robić po swojemu oraz dalej nie odróżniać użytkownika od klienta oraz aplikacji od biznesu to tak rób, IDE wszystko przyjmie.

Że co...? Jak na razie to ty nie odróżniasz warstw aplikacji od pod dziedziny czy kontekstu.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:3 dni
  • Lokalizacja:Wrocław
1

Niewątpliwie masz rację.
Pewnie dlatego ja tworzę systemy, a Ty pytasz jak to robić. :)

0
somekind napisał(a):

Niewątpliwie masz rację.
Pewnie dlatego ja tworzę systemy, a Ty pytasz jak to robić. :)

Tak, pewnie dalej klepiesz te swoje procedury na trzech warstwach stąd te twoje pojęcie o kontekstach aplikacji.

0

Proszę książkowy przykład. github.com/VaughnVernon/IDDD_Samples/tree/master/iddd_identityaccess/src/main/java/com/saasovation/identityaccess
Jakbyś dalej nie odróżniał infra od kontekstu czy dziedziny.

SL
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Bydgoszcz
2

ok, ale spójrz do czego służy przytoczony przez ciebie przykład - ta aplikacja po za autoryzacją nie robi nic. Taki jest jej cel, główne/jedyne zadanie.
Czyli że jej dziedziną jest zapewnienie autoryzacji użytkowników.
Dlatego modele nawet powinny odnosić się do Użytkowników, Rol i Grup Użytkowników.


Bydgoszcz, Senior .Net Developer
0
Slepiec napisał(a):

ok, ale spójrz do czego służy przytoczony przez ciebie przykład - ta aplikacja po za autoryzacją nie robi nic. Taki jest jej cel, główne/jedyne zadanie.
Czyli że jej dziedziną jest zapewnienie autoryzacji użytkowników.
Dlatego modele nawet powinny odnosić się do Użytkowników, Rol i Grup Użytkowników.

To jest Kontekst Ograniczony, zawierający oprócz warstwy infrastruktury oraz aplikacji warstwę domeny, której kontekst ograniczony jest rozwiązanie problemu dziedziny. Gdybyś się bliżej przyjrzał temu kontekstowi autoryzacji to byś zauważył, że korzysta on usługi otwartego hosta, czyli komunikuje się za pomocą języka opublikowanego z innymi kontekstami.

0
Krwawy Orzeł napisał(a):
Slepiec napisał(a):

ok, ale spójrz do czego służy przytoczony przez ciebie przykład - ta aplikacja po za autoryzacją nie robi nic. Taki jest jej cel, główne/jedyne zadanie.
Czyli że jej dziedziną jest zapewnienie autoryzacji użytkowników.
Dlatego modele nawet powinny odnosić się do Użytkowników, Rol i Grup Użytkowników.

To jest Kontekst Ograniczony, zawierający oprócz warstwy infrastruktury oraz aplikacji warstwę domeny, której kontekst ograniczony jest rozwiązanie problemu dziedziny. Gdybyś się bliżej przyjrzał temu kontekstowi autoryzacji to byś zauważył, że korzysta on usługi otwartego hosta, czyli komunikuje się za pomocą języka opublikowanego z innymi kontekstami.

Niemożliwe ktoś przeczytał tę książkę brawo Ty.

SL
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Bydgoszcz
0

Tej książki nie czytałem (notabene zamówiłem ją kilka dni temu), mam za to dość na świeżo książkę Evansa.
To co pisz jest prawdą, ale nie zmienia to faktu że to jest jedyny BC tej aplikacji i jest to aplikacja do autoryzacji użytkowników - taki jest BC i taka jest cała domena.
A to czym się komunikuje... może nawet wysyłać listy pocztą polską czy używać RFC 1149, to nie ważne.
ps: Kod przeglądałem na komórce w tramwaju :P


Bydgoszcz, Senior .Net Developer
edytowany 1x, ostatnio: Slepiec
0
Slepiec napisał(a):

Tej książki nie czytałem (notabene zamówiłem ją kilka dni temu), mam za to dość na świeżo książkę Evansa.
To co pisz jest prawdą, ale nie zmienia to faktu że to jest jedyny BC tej aplikacji i jest to aplikacja do autoryzacji użytkowników - taki jest BC i taka jest cała domena.
A to czym się komunikuje... może nawet wysyłać listy pocztą polską czy używać RFC 1149, to nie ważne.
ps: Kod przeglądałem na komórce w tramwaju :P

No to otwórz ją na stronie 386 mapy kontekstów, następnie na stronie 474 rdzeń oddzielony, 469 spójne mechanizmy, na koniec 417.

Jeśli na pytanie związane z tytułem Asp Identity jako część kontekstu DDD poddziedziny generycznej. Wy mi odpowiadacie, że autoryzacja to nie jest część dziedziny tylko infrastruktury. To nie rozumiecie w ogóle, o czym mówię, ponieważ nie przeczytaliście tej książki ze zrozumieniem lub w ogóle jej nie czytaliście.

Powinienem również zapytać co technologia użyta do komunikacji ma się do języka opublikowanego czy usługi otwartego hosta.

Niech to zdanie da wam do myślenia.

To jest Kontekst Ograniczony, zawierający oprócz warstwy infrastruktury oraz aplikacji warstwę domeny, której kontekst ograniczony jest rozwiązanie problemu dziedziny.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:3 dni
  • Lokalizacja:Wrocław
0

Ej, ale to w tej magicznej książce pełnej mądrych słów i wybitnych teorii, nie ma odpowiedzi na to jak zachować porządek w projekcie?
Jakoś wierzyć mi się nie chce.

0
[Slepiec napisał(a)]:

ok, ale spójrz do czego służy przytoczony przez ciebie przykład - ta aplikacja po za autoryzacją nie robi nic. Taki jest jej cel, główne/jedyne zadanie.
Czyli że jej dziedziną jest zapewnienie autoryzacji użytkowników.
Dlatego modele nawet powinny odnosić się do Użytkowników, Rol i Grup Użytkowników.

Czyli istnienie tej aplikacji nie ma sensu bez dziedziny głównie. Wiec jest to poddziedzina pomocnicza, a zarazem generyczna ponieważ jest powtarzalna w wielu podobnych systemach.

A dziedzina główna może mieć wiele tych pod dziedzin.

0
[somekind napisał(a)]:

Ej, ale to w tej magicznej książce pełnej mądrych słów i wybitnych teorii, nie ma odpowiedzi na to jak zachować porządek w projekcie?
Jakoś wierzyć mi się nie chce.

Wydaje mi się, że już wystarczająco dużo na temat tej magicznej książki powiedziałeś.

0

No to otwórz ją na stronie 386 mapy kontekstów, następnie na stronie 474 rdzeń oddzielony, 469 spójne mechanizmy, na koniec 417.

Zamówiłem tę książkę, od wczoraj czeka w Paczkomaty

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)