Bueno, el ejemplo que arme anteriormente, lo publique con el IIS en un directorio virtual llamado WSUserAuthentication

Ahora, vamos a armar un cliente que consuma este WS, sin una Web Refence, sino por spring.net.

Generamos un nuevo proyecto web, tenemos que refenciar a las librerías de Spring, como también a la interfaz de nuestro Web Services y la capa que genere como “TransferObjects”, que tiene el objeto que va a recibir el cliente.

Habría que pensar cómo vamos a hacer, para versiones posteriores, el control de las versiones de los asemblys, en caso de hacer modificaciones en nuestro WS, una alternativa seria colocarlos en la GAC, para olvidarnos de tener que copiar en todos los desarrollos que llamen al WS, la última versión en caso de necesitarla.

En mi caso, genero una carpeta de Configuración, con un Xml de los objetos que consumo en spring, en este caso

<?xml
version=1.0
encoding=utf-8 ?>

<objects
xmlns=http://www.springframework.net >

<description>An example that demonstrates simple IoC features.</description>

<!– Web Services –>

<object
id=UsuarioWS


type=Spring.Web.Services.WebServiceProxyFactory, Spring.Services>

<property


name=ServiceUri


value=http://localhost/WSUserAuthentication/UserServices.asmx

/>

<property


name=ServiceInterface


value=Synnax.Core.WS.UserAuthentication.Entitys.IUserService, Synnax.Core.WS.UserAuthentication.Entitys

/>

</object>

</objects>

Genero un objeto, llamado “UsuarioWS”, que es del tiplo del WebServiceProxyFactory, que especificamos la ServiceUri que es donde tenemos corriendo nuestro WS, con el servicio que insumimos, y la interfaz que implementa.

Definimos el contexto del spring, y la configuracion de los objetos.

<configuration>

<configSections>

<sectionGroup
name=spring>

<section
name=context
type=Spring.Context.Support.ContextHandler, Spring.Core/>

</sectionGroup>

</configSections>

<appSettings/>

<connectionStrings/>

<system.web>

<compilation
debug=false>

<assemblies>

<add
assembly=Spring.Core, Version=1.1.2.20125, Culture=neutral, PublicKeyToken=65E474D141E25E07/>

<add
assembly=Spring.Services, Version=1.1.2.20125, Culture=neutral, PublicKeyToken=65E474D141E25E07/>

<add
assembly=Spring.Web, Version=1.1.2.20125, Culture=neutral, PublicKeyToken=65E474D141E25E07/></assemblies></compilation>

<authentication
mode=Windows/>

</system.web>

<spring>

<context>

<resource
uri=~/Configuration/Objects.xml/>

</context>

</spring>

</configuration>

Y desde la aplicación

IUserService _ws = (IUserService) ContextRegistry.GetContext().GetObject(“UsuarioWS”);

lblMessage.Text = _ws.Test();

Con nuestro metodo, Test, como devuelve un string, no hay que castearlo, encambio en el otro metodo tendriamos que estar usando, los objetos de Transfer Objects.

Les dejo, el ejemplo para que lo vean:

Consumiendo Web Services con Spring

Sepan disculpar, los horrores de ortografía, ya que lo hice rapidito a este post, Saludos!