Wednesday, July 2, 2008

Difference between WCF Service Reference and Web Reference

Previously, I wrote a post about Adding Service Reference in VS 2008. Adding Web Reference has been deprecated in VS 2008, as Microsoft now wants to promote WCF's Add Service Reference only. In this post we'll see basic differences in client proxy which have implemented Add Web Reference ( AWR ) and Add Service Reference ( ASR )

First difference is that to create AWR resources (proxy class and config) in WCF client you use wsdl.exe, whereas for ASR you use svcutil.exe

Now Imagine you have ASMX service

http://www.blogger.com/post-edit.g?blogID=2403430606101974989&postID=2436002957902424313#

whose reference you added onto a WCF client using AWR. So its app.config will look like the one below


<Consoleapp.Properties.Settings>
<setting name="ConsoleApp_MySvc_MyService" serializeAs="String">
<value>http://localhost/WCFWeb/MyService.asmx</value>
</setting>
</Consoleapp>


Now if you Add Service Reference of the same ASMX service on the same client, the app.config will look something like this


<endpoint address="http://localhost/WCFWeb/MyService.asmx"
binding="basicHttpBinding" bindingConfiguration="ServiceSoap"
contract="ASMXRef.ServiceSoap" name="ServiceSoap"/>

<binding name="ServiceSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288"
maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8"
transferMode="Buffered" useDefaultWebProxy="true">

<readerquotas maxDepth="32" maxStringContentLength="8192"
maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"
/>

<security mode="None">

<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />

<message clientCredentialType="UserName" algorithmSuite="Default" />

</security>

</binding>


So you can clearly note how ASR register additional level of detail like Bindings, Commincation parameters, transport security and message security info. Whereas AWR just registers a app.config key. This is difference between ASR and AWR from configuration information point.

1 comment:

Anil Kumar Reddy said...

may I know how u have included code part with nice formating and also with print option in blogspot.

I too need it. Help me please.