Azure AppFabric Service bus, Silverlight Integration - End-to-End (walkthrough) - Part 2

Posted at: 6/17/2011 at 1:19 PM by saravana

Introduction

In part 1 we setup the scene by creating a simple Silverlight/WCF application. In that application the Silverlight application is initialized, it made a call to the underlying WCF service operation "GetWelcomeText" and displayed the text on the UI. We used the basicHttpBinding to establish communication between the SL client and WCF service. In this part, we are going to make some modifications to the configuration files, IIS/Windows Server AppFabric settings and make the application work across boundaries between two different geographical locations using Azure AppFabric Service Bus. The high level picture is going to look like

clip_image002

Source: http://blogs.digitaldeposit.net/saravana

Prerequisite:

One of the challenges of Silverlight and Azure AppFabric service bus integration is configuring access to the clientaccesspolicy.xml file. I've explained in detail, how you can resolve it in this blog post. It's mandatory to complete the procedure explained in that post, before you proceed further.

It's also mandatory to have IIS/Windows Server AppFabric to complete this walkthrough. Please download and install it from http://www.microsoft.com/download/en/details.aspx?id=15848

Create Service Endpoint Behaviour

Expand "Advanced" and "Endpoint Behavior" from the navigation tree and click on the link "New Endpoint Behavior Configuration" as shown below

clip_image004

Click the "Add" button, which will bring "Adding Behavior element extensions" screen as shown below. From the list select "transportClientEndpointBehavior" and click "Add".

clip_image006

Change the name to "slsb_ServiceEndpointBehavior". The final screen should look as shown below

clip_image008

Double click on transportClientEndpointBehavior from the list and make sure CredentialType is SharedSecret.

clip_image010

Create a basicHttpRelayBinding

Navigate to "Bindings" and select "New Binding Configuration.." as shown below

clip_image012

On the "Create a New Binding" window select "basicHttpRelayBinding" and click OK as shown below.

clip_image014

Change the name to slsb_basicHttpRelayBinding, the final configuration should look as shown below.

clip_image016

Create a new Endpoint

Now we are going to create a new WCF end point using the endpointBehavior and basicHttpRelayBinding we created in previous steps.

Navigate to Services\Endpoints, right-click and select "New Service Endpoint" as shown below.

clip_image018

Once the properties window is displayed, provide the configurations as shown below.

clip_image020

The modified web.config file is going to look as shown below

clip_image022

We are going to make few changes here, which we couldn't do on the SvcConfigEditor.exe tool. The modified web.config file is going to look as shown below

clip_image024

The objective for this demo is establishing communication between Silverlight application and remote WCF service via Azure AppFabric service bus. So, we are going to ignore all the security settings for now, which I'll cover in future articles. Things to note

Security is set to "None"

Endpoint address is using "http" (not "https")

Also, I commented out previous local endpoint configurations and things that are not really relevant for this demo to keep it simple.

Configure Virtual Directory in IIS/Windows Server AppFabric

You'll need Windows Server AppFabric for this demo to work, which you can download from http://www.microsoft.com/download/en/details.aspx?id=15848

We are going to host our WCF service on IIS/Windows Server AppFabric. The main reason for that is, we need to take advantage of the "Auto Start" functionality of IIS/ Windows Server AppFabric to start our WCF service automatically when IIS starts and register its namespace in the Azure AppFabric Service bus. Previously this was one of the challenges, since the WCF services hosted just on IIS (without AppFabric) won't get started until the first request hit the service. In this section we will see the configuration required on IIS/Windows Server AppFabric for our WCF service.

Start Internet Service Manager, and click on our virtual directory AppFabricSBandSLIntegration.Web.

clip_image026

On the Actions column, under "Manage WCF and WF Services", click on "Configure" as shown below

clip_image028

Select "Auto-Start" and choose the option "Enabled" as shown below.

clip_image030

After closing the window, you can Start the application, as shown in the below figure.

clip_image032

Reset IIS by opening a command prompt as administrator and typing iisreset. Navigate to our WCF service as shown below and make sure there are no errors and it displays the page as shown below

clip_image034

One of the common errors I've seen, especially while working on corporate networks where a proxy server is used is

Unable to reach watchdog.servicebus.windows.net via TCP (9351, 9352) or HTTP (80, 443)

The solution for the problem is simple, on the web.config file just configure the proxy details as shown below.

<system.net>

<defaultProxy useDefaultCredentials="true">

<proxy proxyaddress="http://<your proxy>:<your port>"/>

</defaultProxy>

</system.net>

You also need to make sure the virtual directory is configured to run under an IIS application pool, with the identity that access to proxy server.

clip_image036

Update the Silverlight application to point to Azure AppFabric service bus URL

The final change we need to make is to update the Silverlight application configuration file ServiceReference.Clientconfig.config file with url pointing to the Azure AppFabric service bus url as shown below

clip_image038

Press F5 to run the application, and now you should see the application working as before but this time via the Azure AppFabric service bus.

clip_image040

One of the key things to note here is, on the Silverlight client side, I only modified the address in the endpoint element. That's because basicHttpBinding is compatible with basicHttpRelayBinding.

The other important thing is, we relaxed the security completely and concentrated only on connectivity for this demo. So, don't use this configuration in production.

Nandri!

Saravana

Tags: | |  Categories: AppFabric | Azure | Silverlight
Actions: Email this article Email | Kick it! | DZone it! | Save to del.icio.us | Technorati Links
Post Information: Permanent LinkPermalink | CommentsComments(0) | Comments RSS

Comments

Comments are closed