2009-09-14 14 views
25

Qual è lo scopo della libreria di servizi WCF? Capisco che se si crea un servizio ospitato da IIS si crea un progetto Web, se ospitato autonomamente - creare un file .exe.Qual è lo scopo della libreria di servizi WCF?

Che cosa è uno scenario di vita reale per utilizzare WCF come DLL?

risposta

9

"WCF Application Service” si è un'applicazione servizio web diretto basandosi sulla tecnologia WCF (che è simile al lo sviluppo di servizi Web ASP.NET). "Servizio Bibliotecario WCF", d'altra parte è un componente compilato che può essere distribuito come un servizio web o un servizio di Windows o anche come parte di un'applicazione di hosting personalizzato.

- Developing a WCF Service Library and Hosting it as a WCF Web Service

+12

Ok, se la libreria di servizi WCF può essere distribuita su IIS (grazie per il collegamento) perché dovrei mai creare un WCF come progetto web? Sembra che la biblioteca di servizi sia una scelta migliore. Quando useresti ciascuno? – Vitalik

19

Vorrei sempre creare una libreria WCF come libreria di classi: è molto più semplice da utilizzare. Hai la totale flessibilità di ospitare il tuo servizio WCF all'interno di IIS (fornendo una directory virtuale e un file .svc al suo interno), oppure potresti scrivere il tuo EXE self-hosting e fare riferimento al servizio WCF nella libreria di classi da esso.

Inserire un servizio WCF direttamente in un progetto Web sembra una pessima idea e potrebbe essere utile solo per scopi didattici molto semplici - solo per mostrare come iniziare. Non lo farei mai per un sistema "live".

Marc

+0

quando scegliamo il modello di progetto della libreria del servizio di servizio wcf da VS IDe quindi nessun file SVC lì solo una DLL crea. quindi mi piacerebbe sapere che possiamo ospitare quella DLL in IIS senza file SVC. Per favore mi faccia sapere. grazie – Thomas

+1

@Thomas: Marc ha detto in particolare che è necessario fornire un file .svc, ma il file .svc può trovarsi in un progetto e nel riferimento del markup una classe in un altro progetto (la libreria di servizi WCF). In .NET 4 è possibile utilizzare l'attivazione senza file in .NET 4: "un approccio ancora più semplice sarebbe la definizione degli endpoint di attivazione virtuali in Web.config, eliminando così la necessità di file .svc" (http: // msdn. microsoft.com/en-us/library/ee354381.aspx). –

36

Mentre è vero che la creazione di un servizio WCF come libreria di classi offre una maggiore flessibilità, che la flessibilità ha un costo, ed è un errore ritenere che la soluzione più flessibile è sempre la soluzione preferita, o che la soluzione meno flessibile è infantile o adatta solo a "semplici scopi didattici".

La stragrande maggioranza dei servizi WCF è ospitata come servizi Web e non verrà mai utilizzata in altro modo.

Qui sono tre vantaggi di utilizzare un'applicazione di servizio WCF in contrapposizione a una libreria di classi WCF:

  1. Se si crea il servizio web come libreria di classi i file di configurazione saranno file App.config, piuttosto che file web.config. I file App.config non supportano in modo nativo più file di configurazione e config trasforma il modo in cui i file web.config fanno. Se vuoi trasformare le trasformazioni sui tuoi file app.config devi usare una soluzione di terze parti come Slow Cheetah.

  2. Quando è il momento di pubblicare il sito, se si utilizza un'applicazione di servizio WCF è possibile sfruttare appieno Web Deploy (http://www.iis.net/downloads/microsoft/web-deploy) che è un modo potente e flessibile per pubblicare la tua soluzione su IIS.

  3. Se si decide di automatizzare la generazione e l'implementazione per un'integrazione continua con TFS, arriverà il momento in cui si vorrà automatizzare la pubblicazione del proprio servizio. Se si utilizza un servizio WCF, è possibile configurare TFS per eseguire Web Deploy, che unirà i file web.config in base alla configurazione di build di destinazione, eseguirà la pubblicazione incrementale, abilita la pubblicazione senza diritti di amministratore sul server e altri vantaggi. Se si utilizza una libreria di classi WCF, sarà necessario scrivere una soluzione di flusso di lavoro personalizzata per unire l'app.i file di configurazione, utilizzare xCopy per la distribuzione e, in genere, avere un tempo più rigido per automatizzare la distribuzione.

In sintesi, la soluzione più flessibile, come spesso accade, ha il costo di perdere il supporto di uno strumento specifico. Se, come la maggior parte delle soluzioni di servizio WCF, la tua applicazione sarà sempre ospitata in IIS, potresti prendere in considerazione l'opportunità di sfruttare questo supporto utilizzando un'applicazione di servizio WCF anziché una libreria di classi WCF.

+1

Ci siamo imbattuti in questo * esatto * problema. Bella risposta! – TrueWill

+0

quando scegliamo il modello di progetto della libreria del servizio di servizio wcf da VS IDe quindi nessun file SVC lì solo una DLL crea. quindi mi piacerebbe sapere che possiamo ospitare quella DLL in IIS senza file SVC. Per favore mi faccia sapere. grazie – Thomas

+2

# 1 è parzialmente errato. Una libreria di classi può creare un'app.config, ma non viene utilizzata. L'applicazione che fa riferimento/ospita la libreria di classi avrà il proprio web/app.config che è quello che viene effettivamente utilizzato. È possibile ospitare una libreria di servizi WCF in IIS generando i file .svc a mano o utilizzando l'attivazione senza file, nel qual caso si utilizzerà un web.config e non app.config. –