2012-03-29 11 views
17

Ho creato il mio primo servizio WCF e l'ho testato sul mio computer, e funziona.Come posso generare il file .svc?

I file presenti sono un'interfaccia, un'implementazione di tale interfaccia e un file app.config.

Ora che è il momento di ospitarlo su un server reale con IIS, mi è stato detto che IIS cerca un file .svc quando riceve le chiamate in arrivo.

Ecco cosa ho trovato: servizi

WCF ospitati in IIS sono rappresentate come file di contenuto speciali (file .SVC) all'interno dell'applicazione IIS. Questo modello è simile al modo in cui le pagine ASMX sono rappresentate all'interno di un'applicazione IIS come file .asmx. Un file .svc contiene una direttiva di elaborazione specifica per WCF (@ServiceHost) che consente all'infrastruttura di hosting WCF di attivare i servizi ospitati in risposta ai messaggi in arrivo.

Qualcuno può dirmi come posso creare questo file in modo che possa ospitarlo?

Grazie!

+2

http://msdn.microsoft.com/en-us/library/ms733766.aspx – Reniuz

+0

Quindi service.svc è fondamentalmente un altro modo per dichiarare gli endpoint? A cosa serve app.config? – TheGateKeeper

+1

@TheGateKeeper: Sta definendo quasi un endpoint, ma non proprio. È necessario ricordare che un'impostazione di IIS è basata su richiesta, pertanto fornire il file .svc indica semplicemente a IIS che quella è la posizione in cui si desidera il servizio. Si comporterebbe diversamente se si trattasse di un servizio TCP o di una soluzione ospitata dal servizio Windows. Ricorda che stai condividendo le richieste di pagine web con il tuo servizio. - BTW, seguito del commento di Reniuz: http://msdn.microsoft.com/en-us/library/aa751792.aspx –

risposta

18

La cosa da tenere a mente è che IIS è prima di tutto un server Web e l'host WCF in secondo luogo.

Il lavoro del server Web è eseguire il rendering dei dati in base a una richiesta in entrata. La maggior parte di questi dati è contenta (il percorso della richiesta è correlato direttamente a un file sul server) ma nel caso di un servizio WCF IIS deve sapere da dove andare (quindi il file SVC e le "direttive" su IIS per girare il tuo servizio).

Tutto il file SVC sta facendo sta dicendo che a /x/y/z.svc Ho un servizio WCF, che è capace di una molto più che semplici pagine lato server e file di contenuto. Quindi, per favore, spin it up, renderlo disponibile e consentire l'elaborazione delle mie connessioni in entrata.

Se si trattasse di un servizio WCF ospitato sulla propria porta dedicata, questa sarebbe una storia diversa perché non contende più richieste aggiuntive per /Styles/base.css oltre a /MyService/GetSomeObject/.

+0

Grazie uomo molto ben spiegato. – TheGateKeeper

+0

Ciao, puoi aiutarmi con un ultimo bit? Over http://msdn.microsoft.com/en-us/library/ms733766.aspx, al punto 8, ti chiede di creare l'interfaccia nella classe service.cs. Ho la mia interfaccia come parte di un file .dll, devo ancora fare questa parte? – TheGateKeeper

+0

Riferiscilo usando lo spazio dei nomi 'My.Custom.Assembly.IService' –

10

Il file IIS ospitato .svc è costituito dalla direttiva @ServiceHost e dall'attributo, Servizio.

<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %> 

Il valore del Servizio attributo è il CLR nome del tipo della vostra implementazione del servizio. L'uso di questa direttiva è fondamentalmente equivalente alla creazione di un host di servizio utilizzando il codice seguente nel tuo programma di console self-hosting.

new ServiceHost(typeof(MyNamespace.MyServiceImplementationTypeName)); 

e se la vostra auto ha ospitato applicazione utilizza la configurazione di WCF come 'endpoint', 'vincolante', ecc nella app.config, si può anche mettere che nel web.config. Il servizio ospitato da IIS utilizza gli stessi elementi di configurazione e la stessa sintassi dei servizi WCF ospitati al di fuori di IIS. (Tranne qualcosa come non è possibile controllare l'indirizzo di base/endpoint nel servizio ospitato da IIS) e inserire il file .dll precompilato nella directory \ bin dell'applicazione del sito IIS.

E l'indirizzo del servizio ospitato da IIS sarà l'indirizzo del file .svc. (http://localhost/Application1/MyService.svc).

Si prega di controllare il seguito msdn - Deploying an IIS-Hosted WCF Service.

http://msdn.microsoft.com/en-us/library/aa751792.aspx

+0

Grazie amico, bello. – TheGateKeeper

Problemi correlati