Domanda

Ho un'app Web con un livello di presentazione e un livello aziendale come singoli progetti. Uno è un'applicazione Web e l'altra è una libreria di classe. Ho aggiunto un riferimento Web all'applicazione Web per utilizzare un servizio Web. Non ho problemi a usare l'API di servizio, ma mi trovo ad aggiungere un sacco di logica di tipo di livello aziendale nel mio livello di presentazione per utilizzare questa API. Mi piacerebbe se potessi semplicemente cambiare parte del mio codice di livello aziendale per lavorare con il servizio Web, ma la configurazione di tali suoni come una grande circolare no no. Comunque mi piacerebbe che i miei oggetti siano in grado di continuare a fare quello che stanno facendo, ma che funzionino anche con un servizio web, ma mi ritrovo a dover creare una lezione di helper/manager nel mio livello di presentazione per lavorare con il web -servizio. Questo mi fa richiedere modifiche al codice ovunque eseguivo le azioni sugli oggetti che volevo aggiungere al servizio. Qual è il modo corretto di attaccare questo problema?

Non sono nemmeno sicuro che ci sia una domanda legittima da nessuna parte in tutto ciò che è sconclusionato, ma se qualcuno potesse offrire parole utili sarei molto riconoscente.

Grazie!!

È stato utile?

Soluzione

Il modo in cui mi sono avvicinato a questo è creare qualcosa in questo effetto:

  • Livello di accesso ai dati
  • Livello logico aziendale
  • Livello di servizio (privo di qualsiasi logica aziendale, solo un'interfaccia)


  • Livello di accesso al servizio (privo di qualsiasi logica aziendale o logica di presentazione)

  • Livello di presentazione (MVC, logica di presentazione, ecc ...)

Il tuo livello di servizio è privo della logica aziendale ora può essere modificato senza influire sulla logica aziendale. Il livello di accesso al servizio sul lato client ti ripara anche dalle modifiche all'interfaccia di servizio.

Altri suggerimenti

Se il livello di servizio espone solo metodi simili al servizio (come forse semplici metodi CRUD come SaveInvoice (Invoiceto)), nella maggior parte dei casi dovresti essere OK. Tuttavia, potremmo usare un po 'di codice dalla tua parte.

Ci sono davvero molti modi per costruire strati di servizio, stato pieno, non stato ecc. Ecc., Quindi prova a spiegare quale ripetizione ottieni nella tua presentazione

Forse dovresti avere anche il tuo servizio incapsulare la logica aziendale? In questo modo, il livello di presentazione accederebbe solo al servizio: il servizio accederebbe al livello della logica aziendale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top