Convenzione di denominazione per la classe C # che accede a un servizio web

2

Mi scuso se questo è un po 'vago, ma sono curioso di sapere cosa la maggior parte delle persone usa per le convenzioni di denominazione per le classi che accedono a un webservice. Tipicamente nel mio team creiamo progetti separati per BLL (regole aziendali), Model (DTO e classi di modelli ASP.NET) e Data (tipicamente Db e WS I / O).

La mia domanda riguarda ciò che i team fanno per le classi che accedono ai servizi. Tipicamente nel nostro progetto di dati, postiamo 'Dao' al nome della classe che interroga gli oggetti nel Db. Quindi, per esempio, una classe che fa operazioni CRUD in un oggetto Db su Foo viene in genere chiamata FooDao.cs e sembra esserci un consenso generale sulla squadra per quel modello. Ma cosa fanno i team per le classi che interrogano i webservices? A volte li chiamiamo FooFacade.cs, FooSvcClient o anche FooSvc.

Capisco che probabilmente non c'è una vera risposta giusta o sbagliata qui, ma voglio sapere cosa fanno gli altri, e se c'è uno slancio verso un particolare approccio.

    
posta cobolstinks 16.02.2017 - 17:28
fonte

3 risposte

2

Il codice che accede a un servizio viene generalmente chiamato "Client".

Poiché i nomi delle classi dovrebbero essere descrittivi, il nome della classe dovrebbe probabilmente includere la parola "client", poiché questo è ciò che è la classe. Puoi rendere quel moniker descrittivo come preferisci: JsonWebServiceClient , ad esempio.

Inoltre, penso che sarebbe utile se il nome della classe includesse anche il nome del tipo da recuperare o una descrizione dell'operazione eseguita. Quindi, ad esempio, se stai recuperando un oggetto Cliente da un servizio web di JSON, il nome della tua classe potrebbe essere

CustomerClient
CustomerWebServiceClient

o anche

CustomerXmlWebServiceClient

Per aggiungere un po 'di peso a queste asserzioni, ecco un esempio di ServiceStack.Client , una libreria che ti permette di scrivere client generici contro XML e servizi web JSON:

Si noti che il nome della classe client è XmlServiceClient e il metodo Post accetta il tipo di ritorno previsto come parametro.

Qualunque cosa tu decida, assicurati che la convenzione di denominazione su cui ti basi sia concordata dal team e seguita rigorosamente. Il costo di qualsiasi convenzione tu adotti è di 2 minuti con ogni nuovo sviluppatore che spiega come funziona, o la documentazione in tal senso.

    
risposta data 16.02.2017 - 21:24
fonte
0

Due termini che vedo spesso sono "client" e "proxy".

Per me, un proxy è solo una DLL molto semplice (a volte autogenerata) che aderisce a un WSDL o altro contratto. I membri del proxy mappano uno-a-uno con i membri del servizio stesso, quindi non c'è astrazione. Permette al chiamante di accedere al servizio senza preoccuparsi di creare un HttpClient o WebClient o qualsiasi cosa relativa al trasporto.

Un client invece ha più probabilità di contenere un po 'più di logica a valore aggiunto per rendere il servizio più facile da usare. Ad esempio, può occuparsi dei dettagli dell'autenticazione e della gestione delle sessioni oppure può includere diversi servizi che devono essere coordinati. Ma questo non è sempre il caso, a volte è solo un proxy.

    
risposta data 16.02.2017 - 22:33
fonte
0

Tendo ad usare Gateway. Questo è conforme al modello Gateway descritto da Martin Fowler link

    
risposta data 17.02.2017 - 15:52
fonte

Leggi altre domande sui tag