Simple steps to scale up WCF services drastically

Every .NET developer must have written/used WCF services  many times in different projects. But as long as the usage of the service are limited, it works smoothly. But as the number of requests increases rapidly, things starts become ugly. If the number of requests goes beyond a limit at certain time interval, you may start seeing critical issues like service may stop taking new request. As you will read this post, you will come to know the huge potential of your services and unseen ceiling applied by default configuration

In this post, I will be discussing two major items that can tremendously boost the performance of your services
1- WCF throttling
2- System.NET changes

WCF Throttling

Before moving ahead, the basic question arises that  What is throttling?

Continue reading

Advertisements

How to consume WCF REST services using C#

In this Post, we’ll see how can we easily write a code for consuming WCF Rest services. There could be many other scenarios where we need to write a test Client application to test WCF Rest services. In this post, we will consume two type of HTTP methods GET and POST. Let’s see one by one

Consume Get Method
Here, We can have a WCF Rest service which is deployed somewhere on web server or at IIS on local machine or even uses Visual Studio integrated web server. In my sample, I am using Visual Studio one. And the URL of that service is

http://localhost:26944/Service1.svc/User/GetAllUsers

By Default Get method’s input and output parameters are of type XML(default) or JSON and returned in string format. Here the method returns in JSON format. Let’s write the sample

So what all steps we need to perform

1- Create a HTTPWebRequest object with the provided REST service URL

2- Initiate the request and get response

3- Read the stream from the response

4- Serialize the stream and read the result

Let’s jump to the code

GetCodeSo as each line of code is also commented as mentioned in the step. Let’s run it as well

So it is fairly easy to pass a parameter in Get method. It is passed via URL only so it can of type string only.

Also, the REST Services exposed via GET method, can be called and Tested via browser. So to test it via browser, you should browse the complete URL (service url including method name or as URI defined while exposing). Here the method takes no parameter and returns a list of object of custom type.

Now Let’s move to Post method

Consume Post Method

It is not as straight forward as above one. As we know that in the Post method the input is passed in body of request and that should be properly serialized as well. As we know that WCF uses it’s own serialization named as System.Runtime.Serialization so it should be used for serializing the input. If you are using XmlSerializer or other then you might face issue.

Here in my service method, it is taking a custom object type parameter and returning same type as well. The REST method signature looks like

[WebInvoke(Method = "POST", UriTemplate = "/User/GetAllUsersInfo")]
UserInformation GetUserDetails(UserInformation user);

And the service URL would be like

http://localhost:26944/Service1.svc//User/GetAllUsersInfo

Here we need to have some more steps while calling this service. the steps are like

1- Create a HTTPWebRequest object with the provided REST service URL.

2- Provide the method type and Content Type to the request.

3- Create the input object and serialize it and then assign that stream the request.

4- Initiate the request and get response.

5- Read the stream from the stream and deserialize the stream into the object

Let’s see the code

PostThe code is self explanatory and commented as well .Here some of the key things to keep in mind that How the input object is serialized and assigned to the body of the request and similarly reading the response from the response. The code is

Hope you all have enjoyed the post. Thank you all.

Cheers,
Brij

How to consume wcf service using JavaScript Proxy

Hello All,

Today I am going to discuss one another great feature of WCF. Do you know that a WCF service allows us to create a JavaScript Proxy?

Yes it does!!

But let’s first understand that what is a proxy? As we already know whenever we have to use any web service or WCF service, we need to create proxy of that service and with the help of proxy, we use the functionalists provided by the web/WCF service.  Proxy acts a intermediary between the client of the service and the actual service. Proxy provides a simple interface to the consumer of service and all the intricacies like creating a connection, creating and sending the request, getting the response etc is handled by the proxy itself.

Continue reading

WCF Hands on Lab – Csharp Corner Delhi Chapter event : A Very Successful day

Hi All,

CSharp corner Delhi Chapter had a very successfully event in Noida on 18th may 2013 and attended by around 100 attendees . In this event we had a full day hands on lab on WCF and continued more than 10 hours. I talked on Exception and Error Handling in WCF and every body enjoyed the day. The topics that we covered are

Continue reading

wsdl ans Svcutil : Add Web Service Reference in VS 2010/2012

Hi all,

This is going to be a small post and I am going to share one problem that I faced few days back.

I received a service a web service URL that was written in some different technology other than .NET and I added the the reference of it using add service reference but when I compiled that application,I received many build errors.

Then I just realized that I am using Add service reference option and it uses svcutil.exe to create the proxy. As we know this utility was introduced with WCF and works well for WCF  services.

I recalled the way the way we used to write the WCF services like writing different contracts like service contract, message contract and message contract and the way we write in asmx web services is totally different. The assemblies are different as well. So I tried to find where I can get the option to Add Web Reference ( Although I had the option to use the command line utility). I found it here

Continue reading