Progettazione di modelli per un livello di servizio generico

3

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 nidificato Membership , che, a sua volta, ha un oggetto nidificato PaymentMethod
  • 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?

    
posta Ant P 21.03.2013 - 19:50
fonte

1 risposta

3

Scegli l'interfaccia più comoda per la tua applicazione e definisci un'interfaccia in base a questa. Di quali informazioni avrai bisogno e in quali unità discrete? Definisci i modelli in base a quelle unità.

Dopo tutto quello che è stato detto e fatto, questa è l'informazione che ti serve. Lascia che l'implementazione in seguito sia un adattatore per il webservice. Non importa se ha bisogno di fare più callstothe webservice o no - questo è solo un dettaglio di implementazione.

    
risposta data 21.03.2013 - 20:55
fonte

Leggi altre domande sui tag