WebHosting4Life permette di hostare servizi WCF
Ebbene sì, proprio io che con ASP.Net, web-services, IIS e compagnia bella non c’entro proprio nulla, ho passato il weekend a studiare WCF e a trovare un’applicazione pratica. Non è che non avevo nulla da fare, anzi: WCF mi serve per RapportinoMaker in modi che per adesso è troppo lungo spiegarvi, ma lo farò!
La molla è stato il libro in allegato ad IoProgrammo, di cui ho già parlato qua. Venerdì ho fatto qualche viaggio in metropolitana di troppo, e ho avuto modo di leggere i primi capitoli di volata, e l’argomento mi ha appassionato. Ieri, sebbene fosse sabato, sono andato a lavorare e la sera ho spazzolato il libro fino in fondo. Mi è piaciuto, non avrò ovviamente una conoscenza completa di WCF e ci mancherebbe altro, ma ho conosciuto quanto basta per fare qualche esperimento utile per me e per i miei prossimi lavori.
Ho creato un servizio WCF sul mio server Web locale senza alcun problema. Ne parlerò in seguito, più che altro perchè vi ho già parlato in passato del mio RapportinoMaker e potrebbe essere interessante parlarvi di qualche dettaglio in più che ho intenzione di sviluppare e che riguarda proprio WCF.
Al di là degli sviluppi che possiamo fare sul nostro server Web locale, è poi importante avere un hosting che permette di deployare un servizio WCF e di poterlo sfruttare in produzione, sia che si tratti di piccole nostre applicazioni, oppure che si tratti di applicazioni per i nostri clienti. Non so francamente se è sempre stato così, ma oggi mi sono documentato, e posso confermarvi che con l’Advance Plan WebHosting4Life permette di hostare in IIS servizi WCF, come dice questa pagina. Sui server è installato il .NET Framework 3.0 ed il pannello di controllo è a vostra completa disposizione per configurare il tutto.
Faccio un breve riassunto di come sono riuscito oggi a deployare il mio servizio WCF sul mio dominio WH4L:
- ho creato una normale cartella wcf dentro il mio sito Web
- all’interno di questa cartella ho copiato service.svc e web.config. Ho creato una subdir App_Code, all’interno della quale ho copiato tutti i files sorgenti (.cs) che una volta compilati generano il servizio WCF. I files contengono le informazioni necessarie per far funzionare il servizio: non è scopo di questo post dirvi cosa devono contenere, non ho assolutamente competenza per dirvelo in modo corretto. 🙂
- dal pannello di controllo di WH4L sono andato su Site Admin –> .NET Application. Ho attivato una nuova applicazione .NET sul folder wcf di prima, indicando che la versione del Framework è la 2.0.50727.
Il server è ok. A questo punto, potete sviluppare il client del servizio WCF aggiungendolo nei riferimenti. E’ sufficiente cliccare con il pulsante destro su References e selezionare Add Service Reference. Quando ci viene chiesto l’url del servizio, è sufficiente indicarlo nella forma:
http://server_name/wcf/service.svc
E tutto il resto è un gioco da ragazzi. Ma ci sono molte altre cose da dire. La prima, assolutamente, che mi sento di dirvi è: non fidatevi dei messaggi di errore che vi vengono dati dal runtime di WCF. Mi spiego meglio. Per verificare che il servizio WCF è stato deployato correttamente, la prima cosa da fare è tentare di raggiungere l’url del servizio stesso via browser: nel caso di problemi di qualsiasi tipo, l’errore appare direttamente nel browser e potete capire come risolverlo. Ma…lo ripeto…non fidatevi! Spesso vi verrà detto che il servizio non ha endpoint, per esempio, il che non è sempre vero: date un’occhiata al web.config, ma se vi sembra che gli endpoint sono corretti, controllate il nome dell’interfaccia che fa da contratto, controllate che i nomi dei tipi sono giusti, controllate di aver messo anche i namespace, e così via. Altrimenti perderete tempo come l’ho perso io oggi.
Ultima nota: se hostate anche voi su WH4L, leggetevi assolutamente questo post. Se il vostro hosting ha attivato più nomi di dominio, dovete fare come dice il post. Piccolo esempio: il mio hosting ha attivato www.vivendobyte.net, foto.vivendobyte.net, enjoy.vivendobyte.net e così via: se anche voi avete più nomi di dominio, il servizio WCF vi darà il messaggio di errore “WCF: This collection already contains an address with scheme http” che guarda caso è il titolo del post che ho linkato prima. La cosa va sistemato specificando nel file service.svc una factory per il nostro servizio: onestamente, non so dirvi nulla di dettagliato in merito: fate come me, leggete il post e fate come dite, io ho risolto così senza troppi problemi.
L’unica domanda che per questa sera mi rimane è: è possibile deployare un servizio WCF senza mettere i sorgenti .cs, ma copiare solo gli assembly compilati?
Technorati Tags: .NET Framework hosting programming WCF