DDD con applicazione web - Come evitare la duplicazione delle regole?

3

Immagina di avere una semplice regola:

A member must be at least 18 years old to join.

Immagina di avere una classe C # per Member ed è il nostro modello di dominio. La regola è applicata in questa classe.

Ora creiamo un'app Web con l'obiettivo di creare un nuovo membro. Questa vista ha un datapicker per inserire una data per la data di nascita. Non ha senso consentire all'utente di selezionare una data che non è valida, vale a dire l'anno scorso. Per far rispettare questo, abbiamo bisogno di scrivere JavaScript. Tuttavia, ora la regola aziendale è stata duplicata.

Questo è un semplice esempio per illustrare la domanda, ma in un'applicazione reale, ci saranno molte di queste duplicazioni.

C'è un modo per evitarlo?

    
posta CodingYoshi 12.09.2018 - 20:17
fonte

1 risposta

3

No, la duplicazione della convalida dell'input è inevitabile in un'applicazione suddivisa in un front-end e un back-end e in cui il front-end e il back-end comunicano su un canale di comunicazione non affidabile come una rete.

Non eseguire la convalida due volte significa che offrite all'utente UX molto brutto dando feedback molto tardi sugli errori di convalida, oppure aprite il back-end per ricevere dati non validi da attori che non usano il fronte ufficiale -end (e quegli attori saranno esistenti).

L'unico modo per evitare di dover scrivere la logica di convalida più volte è scriverlo in una lingua utilizzata sia dal front-end che dal back-end. Per le applicazioni web, in questo caso, vieni limitato a utilizzare JavaScript o lingue che possono essere compilate in JavaScript per entrambe le estremità.

    
risposta data 13.09.2018 - 08:33
fonte

Leggi altre domande sui tag