Stiamo costruendo un'interfaccia web per un sistema di appartenenza a più livelli, che si interfaccia con un servizio web CRM di terze parti per la creazione e la gestione di account. Il servizio web, purtroppo, non è ancora stato costruito; tuttavia, dobbiamo iniziare a lavorare.
Ho creato un'interfaccia, IMembershipService
, in cui sto iniziando a definire i prototipi "best-guess", quindi possiamo iniziare a costruire i nostri controlli utente. La maggior parte di questi metodi restituirà alcuni dati raggruppati in un oggetto Model, ad esempio:
ContactModel GetContact (string userId);
Quando i metodi del servizio web diventano disponibili, creerò un'implementazione concreta di IMembershipService
che collegherà i controlli al servizio web.
Il problema che ho è che non so ancora se il servizio web sarà composto da:
- chiama la restituzione di oggetti complessi; per esempio. un oggetto
User
con un oggetto nidificatoMembership
, che, a sua volta, ha un oggetto nidificatoPaymentMethod
- semplici richieste di informazioni specifiche; per esempio. %codice%
Questo mi ha causato problemi a specificare la struttura dei modelli e dell'interfaccia, il che sta causando problemi agli sviluppatori che iniziano a lavorare sui controlli utente:
- Se il servizio restituisce oggetti complessi, non voglio che i miei metodi
String GetUserMembershipType (string userId);
siano troppo semplici, costringendomi a utilizzare più chiamate al servizio web laddove non è necessario. - Se il servizio è costituito da semplici chiamate, non voglio avere un carico di modelli complessi definiti che non posso quindi implementare, quindi dover eseguire un carico di refactoring.
In teoria, la creazione di IMembershipService
dovrebbe consentirmi di astrarre dalla natura effettiva del servizio web, ma il fatto che ogni chiamata a un metodo in IMembershipService
, in definitiva, si tradurrà in una chiamata al servizio web, quindi aggiungendo sovraccarico, rende difficile questo spec.
Come posso progettare i miei modelli e IMembershipService
per ridurre al minimo la quantità di refactoring che devo fare quando la natura del servizio web diventa meno elusiva?