Logica aziendale vs livello di servizio


9

Ho letto questa risposta: https://softwareengineering.stackexchange.com/a/234254/173318, per favore, correggi la mia comprensione.

Le regole aziendali si riferiscono all'elenco delle fasi dell'attività nel mondo reale (nessun codice).

Business Logic si riferisce al processo di conversione delle regole aziendali in codici e questi gruppi / tipi di codici indirizzati come "Logica aziendale".

E a cosa serve il livello di servizio? se leggo questa risposta, non sembra diverso con la logica aziendale https://stackoverflow.com/a/4817935/4190539

Il livello di servizio è un luogo in cui la logica aziendale e il repository si incontrano?


1
"livello di servizio" è un termine generico, può essere o contenere qualsiasi cosa tu voglia. Quella domanda SO che hai citato parlava del "livello di servizio in ASP.NET MVC", che dà al termine un focus più specifico. Stai parlando intenzionalmente di quest'ultimo? O ti sei semplicemente perso la differenza?
Doc Brown

questo è quello che ho ottenuto finora. ma mi piacerebbe sentire la tua spiegazione su tutti.
Kakashi

Risposte:


11

"Livello di servizio" è un termine architettonico. Si riferisce a una parte del sistema che si trova da qualche parte nel mezzo di un'architettura a più livelli , sotto il livello di interazione dell'utente ma sopra il livello di accesso ai dati.

La logica aziendale può essere implementata nel livello di servizio, applicando in tal modo le regole aziendali.

Si noti tuttavia che ci sono casi in cui la logica aziendale finisce in altri livelli. Ad esempio, alcune regole aziendali vengono applicate nel livello di interazione dell'utente al fine di migliorare l'esperienza dell'utente (ad es. Validatori scritti in Javascript in modo da poterli controllare senza un round trip al server). In tal caso, il livello di servizio duplicherà di solito l'applicazione.

Altre regole aziendali possono essere applicate solo a livello di database, ad esempio in presenza di problemi di concorrenza (immagina un'applicazione in cui è possibile consultare un libro della biblioteca) o problemi di prestazioni (immagina un programma che calcola la commissione annuale di un venditore impegnato, sulla base di un struttura tariffaria complessa).


va bene se ho una directory di servizio e contiene classi come luoghi in cui inserisco la logica di bussiness e inserisco un repository, un altro servizio, la convalida lì?
Kakashi

Sì, è naturale iniettare altri servizi, incluso l'accesso ai dati, in un livello di servizio: deve in qualche modo archiviare i dati e, se scritto correttamente, non sa come farlo da solo.
John Wu

repository non deve contenere alcun codice aziendale giusto? vuol dire che il repository deve essere chiaro dalla convalida, dal filtro o da qualsiasi altra manipolazione del strijg come ad esempio strtolower?
Kakashi

Non necessariamente (ti ho già dato due esempi nel mio post) ma è una buona pratica spostare quanta più logica di business nel livello di servizio che puoi.
John Wu

oh va bene, tra l'altro hai un codice modello di repository che posso vedere?
Kakashi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.