Una volta che crei le classi, puoi raggrupparle all'interno di una dll; questa comunque deve trovarsi nella cartella /bin della web application, per cui se l'utente ti chiede di cambiare server, devi consegnargliela.

Il vantaggio è che il codice sorgente non è visibile (a meno di decompilazione ).

Un web service è una funzionalità, un "metodo remoto", messa a disposizione da un web server. Se hai un tuo spazio web che supporta asp.net, potresti effettivamente concentrare tutto il tuo codice in un unico punto, accedibile dall'esterno tramite web services. Il sito del cliente deve comunque contenere la dll con il codice che "wrappa" il web service remoto.

Credo che per funzioni di utility generiche i web services non siano una scelta ottimale, inoltre sarebbero accessibili da chiunque conoscesse l'url con il quale li pubblichi. In piu', se per qualche motivo cambi il server dei WS, quindi ne cambi l'endpoint, devi modificare tutti i client !!

ciao,
rob