Sono un po 'confuso su come la logica aziendale dovrebbe essere implementata usando i servizi web. Ad esempio, pensa a un'applicazione di gestione dell'istruzione. Ci sono semplicemente studenti, insegnanti e corsi. Ora, il lato server dell'applicazione può fornire l'operazione getStudents
tramite un'interfaccia WSDL. Questa operazione restituisce l'elenco di Student
elementi.
Secondo il paradigma orientato agli oggetti, una classe dovrebbe avere una certa responsabilità. Dovrebbe nascondere il suo stato interno e uno può raggiungere i suoi dati solo usando le sue operazioni. Ma sul lato client una classe Student
è solo una borsa dati. Non c'è logica quindi nessuna responsabilità qui.
Un altro problema è che non esiste una semantica di riferimento sul lato client. Normalmente, uno studente è associated with
di corsi. Ma nell'implementazione un Student
object has
lista di Course
oggetti o potrebbe contenere qualche identificatore per i corsi.
Infine, l'utilizzo di servizi Web (tramite WSDL) sembra conveniente per accedere ai dati remoti ma non per eseguire la logica aziendale da remoto. Ho ragione, o mi manca qualcosa di importante sui servizi web?
Modifica
Il mio intento è implementare la logica di business sul lato server. Ad esempio, supponiamo che abbia una classe sul lato server come quella:
class Student
{
//some properties like name, courses, etc.
double calculateGPA(); //calculates average grade using course credits.
//other operations like getName()
}
class SchoolRepository
{
List<Student> getStudents();
List<Course> getCourses();
//other operations
}
Ora, posso creare WSDL che fornisce l'interfaccia SchoolRepository
. Quindi, il cliente ottiene la lista degli studenti. Ma non possono raggiungere direttamente la logica aziendale implementata in calculateGPA()
. Posso fornire un'altra interfaccia WSDL per questo. Ma rompe l'incapsulamento dei dati e del comportamento.