Aleks Seovic
01-20-2006, 10:45 AM
I finally found some time to go over Bruno's implementation of client-side web service proxy factory that doesn't need WSDL-generated proxy class. All I can say is: "Impressive and very, very cool" :-)
I refactored base proxy builder classes (long overdue) and then refactored Bruno's SoapHttpClientProxyTypeBuilder a bit to inherit from the CompositionProxyTypeBuilder in order to remove duplicate code. There are few other minor changes, but none of them are really worth mentioning.
Finally, I replaced my old WebServiceProxyFactory with Bruno's implementation and committed everything.
That means that all you need to do now to get a reference to a web service on the client side is something like this:
<object id="WebCalculatorService" type="Spring.Web.Services.WebServiceProxyFactory, Spring.Services">
<property name="ServiceUrl" value="http://localhost/SpringWS/Calculator.asmx"/>
<property name="ServiceInterface" value="TestServices.ICalculator, TestServices"/>
</object>
BTW, I changed all of the other client-side proxy factories in Spring.Services to use 'ServiceUrl' as a property name instead of 'ServiceUri', so you might need to update your configuration files to reflect that.
Another thing that is important is that Spring.Services now has a dependency on WSE, which means that you need to put Microsoft.Web.Services2.dll in your lib/Net/1.1 directory. I didn't add it to CVS for licensing reasons, so you will have to download WSE2 SP3 and add this assembly to your local lib directory manually in order to be able to build.
Enjoy,
Aleks
I refactored base proxy builder classes (long overdue) and then refactored Bruno's SoapHttpClientProxyTypeBuilder a bit to inherit from the CompositionProxyTypeBuilder in order to remove duplicate code. There are few other minor changes, but none of them are really worth mentioning.
Finally, I replaced my old WebServiceProxyFactory with Bruno's implementation and committed everything.
That means that all you need to do now to get a reference to a web service on the client side is something like this:
<object id="WebCalculatorService" type="Spring.Web.Services.WebServiceProxyFactory, Spring.Services">
<property name="ServiceUrl" value="http://localhost/SpringWS/Calculator.asmx"/>
<property name="ServiceInterface" value="TestServices.ICalculator, TestServices"/>
</object>
BTW, I changed all of the other client-side proxy factories in Spring.Services to use 'ServiceUrl' as a property name instead of 'ServiceUri', so you might need to update your configuration files to reflect that.
Another thing that is important is that Spring.Services now has a dependency on WSE, which means that you need to put Microsoft.Web.Services2.dll in your lib/Net/1.1 directory. I didn't add it to CVS for licensing reasons, so you will have to download WSE2 SP3 and add this assembly to your local lib directory manually in order to be able to build.
Enjoy,
Aleks