Showing posts with label VS 2008. Show all posts
Showing posts with label VS 2008. Show all posts

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.

Monday, June 2, 2008

Add Service Reference in VS 2008

Add Service Reference is a new feature in VS 2008 which primarily makes creating WCF proxy easy. You no longer need to goto Command Prompt and generate proxy files using svcutil.exe. Behind the scenes, Add Service Reference (ASR) calls svcutil.exe, which invokes a service’s MEX endpoint to query for its interfaces and to generate a proxy class and configuration file.

To Add Service Refernce to you WCF do the following steps in Client Visual Studio Project
1. Right Click on the project name and select “Add Service Reference”
2. Make sure your service host is running and the service is up.
3. Enter the service’s Uri into the Add Service Reference Dialog. Upon successful discovery, it will automatically retrieve the metadata (Service Names, Contracts Names, etc) from your service and show them in the dialog
4. Finally provide the Reference name
You dialog should look like this

The next figure shows how Proxy and Configuration files are automatically created
You can understand the differeces between Add Web Reference and Add Service Reference in my next post here