Integration Patterns utilizing the Windows Azure Service Bus

For years we have all utilized Gregor Hohpe’s Enterprise Integration Patterns book (and the web site).  Many of these patterns, if not most, are well known and there are many resources out there that talk about how these patterns can be implemented.  There are also a number of resources that talk about how these patterns can be implemented in BizTalk or Windows Server AppFabric. 

However, there is very little that shows how these patterns can be implemented using the Windows Azure Service Bus.  This two part series will take a patterns first  look at how these different patterns can be implemented. 

The patterns that will be covered in this post will focus on the Messaging Channel groupings.  The patterns in that fall in the Messaging Channel group contain:

Point to Point, Publish/Subscribe, Datatype Channel, Invalid Message Channel, Dead Letter Channel, Guaranteed Delivery, Channel Adapter, Messaging Bridge and Message Bus.  

In the next post we will focus on the patterns that fall in the Message Routing group, which contain:

Content Based Router, Message Filter, Recipient List, Splitter, Aggregator, Resequencer, Composed Message Processor, Scatter-Gather, Process Manager and Message Broker.

There is also the Messaging Systems group of patterns but those are being addressed with the Azure Integration Components (that is currently in CTP).  As those components get closer to release I will cover those patterns as well.

Lets start out by looking at each of the patterns in the Messaging Channel Group including a description of the pattern and then how it can be implemented.

Point-to-Point Channel requires that only one receiver gets the message.  If there are multiple receivers, then only one must still get the message.  This functionality can be done directly through WCF (the Service Bus can also be included by hosting the WCF service).  This pattern can also be accomplished through the use of the Service Bus Queue and controlling what services are listening.

Publish-Subscribe Channel requires that the message or event sent to the channel will be delivered to each and every receiver.  Once the receiver obtains a copy of the message it is removed from the channel.  This can be implemented through the use of Service Topics. 

A Service Bus Topic can have multiple subscriptions with each subscription being able to be individually managed.  The subscriber receive all messages, based on filters, that are sent once the subscriber is created.  If a message satisfies the filter criteria for more than one subscriber the message will be delivered to each subscriber and then onto the receiver.  When a message needs to be delivered to more than one subscriber, the message is not duplicated.  The meta data for the filter/subscriptions is stored and is tracked based on which subscriber/receiver has received the message.  In terms of removing it from the channel, think of the concept of ref counts.  One other thing to keep in mind is that if the Receiver is not online to receive the message, then it is stored until the receiver comes on-line.

Datatype Channel requires that each channel will contain the same type of data.  Thereby when the receiver obtains a message from the channel it will always be the same type.  This can be accomplished with directly with WCF (the Service Bus can also be included by hosting the WCF service).  

In addition, an Azure Queue can also be utilized.  You can create a new queue for each type of message that will flow through the queue. 

Invalid Message Channel requires that a message that is deemed to be invalid be moved to a Invalid Message Channel where they will not be processed by the normal receiver.

The Azure Queue implements the dead letter queue concept and uses the $DeadLetterQueue subqueue to store invalid messages.  Messages are placed in the dead letter subqueue:

When a message expires and deadlettering for expired messages is set to true in a queue or subscription.
When the max delivery count for a message is exceeded on a queue or subscription.
When a filter evaluation exception occurs in a subscription and deadlettering is enabled on filter evaluation exceptions

To get to the dead letter queue you would use:

string queueDeadletterPath = QueueClient.FormatDeadLetterPath("<your queue name>");

the same behavior is available with Topics.  However, to get to the dead letter queue for a topic you would use:

string subscriptionDeadletterPath = SubscriptionClient.FormatDeadLetterPath("<Your Topic Name>", "<Subscription Name>");

Dead Letter Channel requires that if the system can’t deliver a message there is a mechanism to move the message to a dead letter channel.  This capability is handled like the Invalid Message Channel above.  However, check out this link from MSDN on the QueuePolicy.PoisonMessageDrop property.  It points to the prerelease documentation but it is interesting to read what is being planned. 

Guaranteed Delivery requires that the system persists the message so that it is not lost if there is a crash or outage.  In using the Service Bus Queues, you are ensured of guaranteed delivery as the queue uses SQL Azure as the backing store.

Channel Adapter requires that there is an interface so that any application can connect and be integrated with other applications.  The Service Bus Queues and Topics both provide a full API that can be utilized by a number of different technologies.

Messaging Bridge provides a connection between different messaging systems.  Essentially to transmit message that was intended for another messaging system.  This can be done through either the Service Bus Queues or Topics with the receiver getting the message and forwarding it to endpoints provided by the other messaging system.  In addition, the receiver can get the message and forward it on to on-premise messaging systems through WCF.

Message Bus provides a means for separate application to work together in a decoupled manner with the ability for the applications to be added or removed with no affect on any other applications.  The ability to be decoupled but still allowing the application to work together, share data and operate in a unified manner is the basis for this pattern.  This pattern can be easily implemented through the Azure Service Bus and WCF endpoints.  We will come back to this pattern again when we spend more time covering the integration components.

In this post I have talked about the Service Bus Queue, but there is still some confusion between the Windows Azure Queue and the Service Bus Queue.  Yes, there are two Queues and they are different and have different uses and purposes.  Everything I have been referring to here is in reference to the Service Bus Queue.  You can find more information on the differences between Azure Queues and Azure Service Bus Queues in this article – Windows Azure Queues and Windows Azure Service Bus Queues – Compared and Contrasted.

Lastly, in talking about Gregor Hohpe and his patterns book, there are a number of diagrams that are utilized that represent the patterns.  These diagrams can be downloaded and used in Visio which you can find at http://www.eaipatterns.com/downloads.html

Blog Post by: Stephen Kaufman

Windows Azure Service Bus Scatter-Gather Implementation

One of the more challenging enterprise integration patterns that developers may wish to implement is the Scatter-Gather pattern. In this article I will show the basic implementation of a scatter-gather pattern using the topic-subscription model of the windows azure service bus. I’ll be using the implementation in demos, and also as a lab in my training courses, and the pattern will also be included in the next release of my free e-book the “Windows Azure Service Bus Developer Guide”.

The Scatter-Gather pattern answers the following scenario.

How do you maintain the overall message flow when a message needs to be sent to multiple recipients, each of which may send a reply?

Use a Scatter-Gather that broadcasts a message to multiple recipients and re-aggregates the responses back into a single message.

The Enterprise Integration Patterns website provides a description of the Scatter-Gather pattern here.

The scatter-gather pattern uses a composite of the publish-subscribe channel pattern and the aggregator pattern. The publish-subscribe channel is used to broadcast messages to a number of receivers, and the aggregator is used to gather the response messages and aggregate them together to form a single message.

Scatter-Gather Scenario

The scenario for this scatter-gather implementation is an application that allows users to answer questions in a poll based voting scenario. A poll manager application will be used to broadcast questions to users, the users will use a voting application that will receive and display the questions and send the votes back to the poll manager. The poll manager application will receive the users’ votes and aggregate them together to display the results. The scenario should be able to scale to support a large number of users.

Scatter-Gather Implementation

The diagram below shows the overall architecture for the scatter-gather implementation.

Messaging Entities

Looking at the scatter-gather pattern diagram it can be seen that the topic-subscription architecture is well suited for broadcasting a message to a number of subscribers. The poll manager application can send the question messages to a topic, and each voting application can receive the question message on its own subscription. The static limit of 2,000 subscriptions per topic in the current release means that 2,000 voting applications can receive question messages and take part in voting.

The vote messages can then be sent to the poll manager application using a queue. The voting applications will send their vote messages to the queue, and the poll manager will receive and process the vote messages.

The questions topic and answer queue are created using the Windows Azure Developer Portal. Each instance of the voting application will create its own subscription in the questions topic when it starts, allowing the question messages to be broadcast to all subscribing voting applications.

Data Contracts

Two simple data contracts will be used to serialize the questions and votes as brokered messages. The code for these is shown below.

[DataContract]

public class Question

{

[DataMember]

public string QuestionText { get; set; }

}

To keep the implementation of the voting functionality simple and focus on the pattern implementation, the users can only vote yes or no to the questions.

[DataContract]

public class Vote

{

[DataMember]

public string QuestionText { get; set; }

[DataMember]

public bool IsYes { get; set; }

}

Poll Manager Application

The poll manager application has been implemented as a simple WPF application; the user interface is shown below.

A question can be entered in the text box, and sent to the topic by clicking the Add button. The topic and subscriptions used for broadcasting the messages are shown in a TreeView control. The questions that have been broadcast and the resulting votes are shown in a ListView control.

When the application is started any existing subscriptions are cleared form the topic, clients are then created for the questions topic and votes queue, along with background workers for receiving and processing the vote messages, and updating the display of subscriptions.

public MainWindow()

{

InitializeComponent();

// Create a new results list and data bind it.

Results = new ObservableCollection<Result>();

lsvResults.ItemsSource = Results;

// Create a token provider with the relevant credentials.

TokenProvider credentials =

TokenProvider.CreateSharedSecretTokenProvider

(AccountDetails.Name, AccountDetails.Key);

// Create a URI for the serivce bus.

Uri serviceBusUri = ServiceBusEnvironment.CreateServiceUri

(“sb”, AccountDetails.Namespace, string.Empty);

// Clear out any old subscriptions.

NamespaceManager = new NamespaceManager(serviceBusUri, credentials);

IEnumerable<SubscriptionDescription> subs =

NamespaceManager.GetSubscriptions(AccountDetails.ScatterGatherTopic);

foreach (SubscriptionDescription sub in subs)

{

NamespaceManager.DeleteSubscription(sub.TopicPath, sub.Name);

}

// Create the MessagingFactory

MessagingFactory factory = MessagingFactory.Create(serviceBusUri, credentials);

// Create the topic and queue clients.

ScatterGatherTopicClient =

factory.CreateTopicClient(AccountDetails.ScatterGatherTopic);

ScatterGatherQueueClient =

factory.CreateQueueClient(AccountDetails.ScatterGatherQueue);

// Start the background worker threads.

VotesBackgroundWorker = new BackgroundWorker();

VotesBackgroundWorker.DoWork += new DoWorkEventHandler(ReceiveMessages);

VotesBackgroundWorker.RunWorkerAsync();

SubscriptionsBackgroundWorker = new BackgroundWorker();

SubscriptionsBackgroundWorker.DoWork += new DoWorkEventHandler(UpdateSubscriptions);

SubscriptionsBackgroundWorker.RunWorkerAsync();

}

When the poll manager user nters a question in the text box and clicks the Add button a question message is created and sent to the topic. This message will be broadcast to all the subscribing voting applications. An instance of the Result class is also created to keep track of the votes cast, this is then added to an observable collection named Results, which is data-bound to the ListView control.

private void btnAddQuestion_Click(object sender, RoutedEventArgs e)

{

// Create a new result for recording votes.

Result result = new Result()

{

Question = txtQuestion.Text

};

Results.Add(result);

// Send the question to the topic

Question question = new Question()

{

QuestionText = result.Question

};

BrokeredMessage msg = new BrokeredMessage(question);

ScatterGatherTopicClient.Send(msg);

txtQuestion.Text = “”;

}

The Results class is implemented as follows.

public class Result : INotifyPropertyChanged

{

public string Question { get; set; }

private int m_YesVotes;

private int m_NoVotes;

public event PropertyChangedEventHandler PropertyChanged;

public int YesVotes

{

get { return m_YesVotes; }

set

{

m_YesVotes = value;

NotifyPropertyChanged(“YesVotes”);

}

}

public int NoVotes

{

get { return m_NoVotes; }

set

{

m_NoVotes = value;

NotifyPropertyChanged(“NoVotes”);

}

}

private void NotifyPropertyChanged(string prop)

{

if(PropertyChanged != null)

{

PropertyChanged(this, new PropertyChangedEventArgs(prop));

}

}

}

The INotifyPropertyChanged interface is implemented so that changes to the number of yes and no votes will be updated in the ListView control.

Receiving the vote messages from the voting applications is done asynchronously, using a background worker thread.

// This runs on a background worker.

private void ReceiveMessages(object sender, DoWorkEventArgs e)

{

while (true)

{

// Receive a vote message from the queue

BrokeredMessage msg = ScatterGatherQueueClient.Receive();

if (msg != null)

{

// Deserialize the message.

Vote vote = msg.GetBody<Vote>();

// Update the results.

foreach (Result result in Results)

{

if (result.Question.Equals(vote.QuestionText))

{

if (vote.IsYes)

{

result.YesVotes++;

}

else

{

result.NoVotes++;

}

break;

}

}

// Mark the message as complete.

msg.Complete();

}

}

}

When a vote message is received, the result that matches the vote question is updated with the vote from the user. The message is then marked as complete.

A second background thread is used to update the display of subscriptions in the TreeView, with a dispatcher used to update the user interface.

// This runs on a background worker.

private void UpdateSubscriptions(object sender, DoWorkEventArgs e)

{

while (true)

{

// Get a list of subscriptions.

IEnumerable<SubscriptionDescription> subscriptions =

NamespaceManager.GetSubscriptions(AccountDetails.ScatterGatherTopic);

// Update the user interface.

SimpleDelegate setQuestion = delegate()

{

trvSubscriptions.Items.Clear();

TreeViewItem topicItem = new TreeViewItem()

{

Header = AccountDetails.ScatterGatherTopic

};

foreach (SubscriptionDescription subscription in subscriptions)

{

TreeViewItem subscriptionItem = new TreeViewItem()

{

Header = subscription.Name

};

topicItem.Items.Add(subscriptionItem);

}

trvSubscriptions.Items.Add(topicItem);

topicItem.ExpandSubtree();

};

this.Dispatcher.BeginInvoke(DispatcherPriority.Send, setQuestion);

Thread.Sleep(3000);

}

}

Voting Application

The voting application is implemented as another WPF application. This one is more basic, and allows the user to vote “Yes” or “No” for the questions sent by the poll manager application. The user interface for that application is shown below.

When an instance of the voting application is created it will create a subscription in the questions topic using a GUID as the subscription name. The application can then receive copies of every question message that is sent to the topic.

Clients for the new subscription and the votes queue are created, along with a background worker to receive the question messages. The voting application is set to receiving mode, meaning it is ready to receive a question message from the subscription.

public MainWindow()

{

InitializeComponent();

// Set the mode to receiving.

IsReceiving = true;

// Create a token provider with the relevant credentials.

TokenProvider credentials =

TokenProvider.CreateSharedSecretTokenProvider

(AccountDetails.Name, AccountDetails.Key);

// Create a URI for the serivce bus.

Uri serviceBusUri = ServiceBusEnvironment.CreateServiceUri

(“sb”, AccountDetails.Namespace, string.Empty);

// Create the MessagingFactory

MessagingFactory factory = MessagingFactory.Create(serviceBusUri, credentials);

// Create a subcription for this instance

NamespaceManager mgr = new NamespaceManager(serviceBusUri, credentials);

string subscriptionName = Guid.NewGuid().ToString();

mgr.CreateSubscription(AccountDetails.ScatterGatherTopic, subscriptionName);

// Create the subscription and queue clients.

ScatterGatherSubscriptionClient = factory.CreateSubscriptionClient

(AccountDetails.ScatterGatherTopic, subscriptionName);

ScatterGatherQueueClient =

factory.CreateQueueClient(AccountDetails.ScatterGatherQueue);

// Start the background worker thread.

BackgroundWorker = new BackgroundWorker();

BackgroundWorker.DoWork += new DoWorkEventHandler(ReceiveMessages);

BackgroundWorker.RunWorkerAsync();

}

I took the inspiration for creating the subscriptions in the voting application from the chat application that uses topics and subscriptions blogged by Ovais Akhter here.

The method that receives the question messages runs on a background thread. If the application is in receive mode, a question message will be received from the subscription, the question will be displayed in the user interface, the voting buttons enabled, and IsReceiving set to false to prevent more questing from being received before the current one is answered.

// This runs on a background worker.

private void ReceiveMessages(object sender, DoWorkEventArgs e)

{

while (true)

{

if (IsReceiving)

{

// Receive a question message from the topic.

BrokeredMessage msg = ScatterGatherSubscriptionClient.Receive();

if (msg != null)

{

// Deserialize the message.

Question question = msg.GetBody<Question>();

// Update the user interface.

SimpleDelegate setQuestion = delegate()

{

lblQuestion.Content = question.QuestionText;

btnYes.IsEnabled = true;

btnNo.IsEnabled = true;

};

this.Dispatcher.BeginInvoke(DispatcherPriority.Send, setQuestion);

IsReceiving = false;

// Mark the message as complete.

msg.Complete();

}

}

else

{

Thread.Sleep(1000);

}

}

}

When the user clicks on the Yes or No button, the btnVote_Click method is called. This will create a new Vote data contract with the appropriate question and answer and send the message to the poll manager application using the votes queue. The user voting buttons are then disabled, the question text cleared, and the IsReceiving flag set to true to allow a new message to be received.

private void btnVote_Click(object sender, RoutedEventArgs e)

{

// Create a new vote.

Vote vote = new Vote()

{

QuestionText = (string)lblQuestion.Content,

IsYes = ((sender as Button).Content as string).Equals(“Yes”)

};

// Send the vote message.

BrokeredMessage msg = new BrokeredMessage(vote);

ScatterGatherQueueClient.Send(msg);

// Update the user interface.

lblQuestion.Content = “”;

btnYes.IsEnabled = false;

btnNo.IsEnabled = false;

IsReceiving = true;

}

Testing the Application

In order to test the application, an instance of the poll manager application is started; the user interface is shown below.

As no instances of the voting application have been created there are no subscriptions present in the topic. When an instance of the voting application is created the subscription will be displayed in the poll manager.

Now that a voting application is subscribing, a questing can be sent from the poll manager application. When the message is sent to the topic, the voting application will receive the message and display the question.

The voter can then answer the question by clicking on the appropriate button. The results of the vote are updated in the poll manager application.

When two more instances of the voting application are created, the poll manager will display the new subscriptions. More questions can then be broadcast to the voting applications.

As the question messages are queued up in the subscription for each voting application, the users can answer the questions in their own time. The vote messages will be received by the poll manager application and aggregated to display the results. The screenshots of the applications part way through voting are shown below.

The messages for each voting application are queued up in sequence on the voting application subscriptions, allowing the questions to be answered at different speeds by the voters.

WCF-SQL Adapter and permissions

WCF-SQL Adapter and permissions

If you are using a WCF SQL adapter in your solution, it is imperitive to set permissions on the stored procedures you call from within BizTalk. However, if you havent set permissions, the error message can be a little misleading. The adapter failed to transmit message going to send port “WcfSendPort_SqlAdapterBinding_TypedProcedures_MyDB” with URL “mssql://MYSRVSQ01//MyDB?”. It […]
Blog Post by: DipeshA

How to request/buy a certificate and use it in Windows Azure | Comment demander/acheter un certificat et l’utiliser dans Windows Azure

 

Some domain registrars may let you request an SSL certificate for your domain. It is also possible to buy a certificate from a certificate authority. This post shows a way to request such a real or production certificate (not a test certificate) and use it in Windows Azure. Certains fournisseurs de nom de domaine fournissent un certificat SSL avec le nom de domaine. Il est %u00e9galement possible d’acheter un certificat aupr%u00e8s d’une autorit%u00e9 de certification. Ce billet montre un moyen de demander un certificat r%u00e9el ou de production (par opposition %u00e0 un certificat de test) et l’utiliser dans Windows Azure.
In this example I use Gandi registrar. With each domain they offer an SSL certificate; so let’s see how to request it and use it in Windows Azure. The main steps are
– create a request from within IIS
– send the request to Gandi
– confirm the request in a bunch of e-mail and Web interfaces
– retrieve the request response and put it into IIS
– export the certificate from the IIS machine as a .pfx file
– upload the .pfx file to Windows Azure portal
– use the certificate in a simple sample Windows Azure App.
Dans cet exemple, j’utilise Gandi comme fournisseur de nom de domaine. Avec chaque domaine, ils fournissent gratuitement un certificat SSL; voyons donc comment demander ce certificat et l’utiliser dans Windows Azure. Les %u00e9tapes principales sont les suivantes:
– cr%u00e9er la demande de certificat depuis IIS
– envoyer la demande %u00e0 Gandi
– confirmer la demande via un certain nombre d’e-mails et d’interfaces Web
– r%u00e9cup%u00e9rer la r%u00e9ponse %u00e0 la demande de certificat et l’int%u00e9grer dans IIS
– exporter le certificat depuis la machine IIS sous la forme d’un fichier .pfx
– charger le fichier .pfx dans le portail Windows Azure
– utiliser le certificat dans une application Azure exemple simple

 

create a request from within IIS Cr%u00e9er la requ%u00eate depuis IIS
In this sample, the domain I registered with www.gandi.net was “appartement-a-vendre-courbevoie.fr” and we’ll create a certificate for myapp.appartement-a-vendre-courbevoie.fr so that we can expose an ssl application at https://myapp.appartement-a-vendre-courbevoie.fr. Dans cet exemple, le nom de domaine que j’ai enregistr%u00e9 aupr%u00e8s de www.gandi.net %u00e9tait “appartement-a-vendre-courbevoie.fr” et nous allons cr%u00e9er un certificat pour myapp.appartement-a-vendre-courbevoie.fr de fa%u00e7on %u00e0 pouvoir exposer une application en SSL %u00e0 https://myapp.appartement-a-vendre-courbevoie.fr.
We’ll first create a certificate request from within IIS. IIS is used as a tool that will create an unsigned certificate (with its private key) before sending it (without the private key) to the certificate authority who will sign the certificate. Nous allons d’abord cr%u00e9er une demande depuis IIS. IIS est utilis%u00e9 ici comme un outil qui cr%u00e9e un certificat non sign%u00e9 (avec une clef priv%u00e9e) avant de l’envoyer (sans la clef priv%u00e9e) %u00e0 l’autorit%u00e9 de certification qui signera le certificat.
Start IIS Manager, and go to the server certificate feature D%u00e9marrer le gestionnaire IIS, et aller %u00e0 la fonctionnalit%u00e9 “Server Certificate”
create a certificate request cr%u00e9er une demande de certificat
In next screen the most important is to have Common name corresponding exactly to the URL that the certificate will be used with. Dans l’%u00e9cran suivant, le plus important est d’avoir le “Common name” qui correspond exactement %u00e0 l’URL avec laquelle on entend utiliser le certificat.

 

this generates a certificate request that looks like this cela g%u00e9n%u00e8re une demande de certificat qui ressemble %u00e0 cela

 

 

 

send the request to Gandi Envoyer la demande %u00e0 Gandi
Before requesting the certificate, Gandi requires you to have an e-mail adress that corresponds to admin@<yourdomain>
Then, you can request the certificate. Here are the steps.
Avant de demander le certificat, Gandi demande qu’on ait associ%u00e9 l’adresse e-mail admin@<notre domaine>.
Ensuite, on pourra demander le certificat. Voici les diff%u00e9rentes %u00e9tapes.

 

 

 

 

 

 

confirm the request Confirmer la demande
Here are the steps to confirm the request Voici les diff%u00e9rentes %u00e9tapes de confirmation de la demande.

 

 

Retrieve the request response R%u00e9cup%u00e9rer la r%u00e9ponse %u00e0 la demande de certificat
Let’s now retrieve the result R%u00e9cup%u00e9rons maintenant le r%u00e9sultat

 

 

export the certificate Exporter le certificat
Let’s now export the certificate from the local machine to a .pfx file. Exportons maintenant le certificat de la machine locale vers un fichier .pfx.

 

 

upload the .pfx file to Windows Azure portal Charger le fichier .pfx dans le portail Windows Azure
Let’s send the .pfx file to Windows Azure Envoyons le fichier .pfx vers Windows Azure

 

 

use the certificate in a simple sample Windows Azure App. Utiliser le certificat dans une application Azure exemple simple
NB: In some configurations, I’ve seen the necessity to have the certificate stored at current user’s level, not only at local machine level. Let’s first copy the certificate from the local machine store to the current user store. Dans certaines configuration, j’ai vu le besoin d’avoir le certificat stock%u00e9 au niveau de l’utilisateur et pas seulement au niveau de la machine. Copions donc d’abord le certificat du magasin de la machine locale au magasin de certificats de l’utilisateur courant.

 

 

Let’s now use the certificate in a Visual Studio 2010 project and deploy it to Windows Azure. Utilisons maintenant le certificat dans un projet Visual Studio 2010 avant de d%u00e9ployer ce dernier dans Windows Azure.

 

Let’s deploy to a bunch of extra small machines to show that the certificate is deployed automatically by Windows Azure to each instance. Note that SSL channel ends on each VM in the Web farm as I showed in this previous post. D%u00e9ployons cela sur un certain nombre de machines pour montrer que le certificat est d%u00e9ploy%u00e9 automatiquement par Windows Azure sur chaque instance. On notera que le canal SSL se termine sur chaque instance de machine virtuelle de la ferme web comme je l’ai montr%u00e9 dans un billet pr%u00e9c%u00e9dent.
By the way, using 6 extra small machines is the same price as 1 small machine. A noter: l’utilisation de 6 machines extra petites est au m%u00eame prix que l’utilisation d’une seule petite machine.

()

()

In order to be able to access the App. from the domain name corresponding to the certificate, a CNAME entry must be added in the DNS; then myapp.appartement-a-vendre-courbevoie.fr matches sslapp.cloudapp.net De fa%u00e7on %u00e0 pouvoir acc%u00e9der %u00e0 l’app. depuis le nom de domaine correspondant au certificat, une entr%u00e9e  de type CNAME doit %u00eatre ajout%u00e9e dans le DNS; alors myapp.appartement-a-vendre-courbevoie.fr correspondra %u00e0 sslapp.cloudapp.net

 

Here is the result Voici le r%u00e9sultat

  

 

Benjamin

Blog Post by: Benjamin GUINEBERTIERE

Weekly Cloud Roundup 2012-15

Filtering the informative, insightful and quirky from the fire hose of cloud-based hype.

Irving Wladawsky-Berger provides some great insight into The Complex Transition to the Cloud, sharing his views on the slow adoption of cloud computing in organizations. “a prediction by the research firm Gartner that while cloud computing will continue to grow at almost 20 percent a year, it will account for less than 5 percent of totally IT spending in 2015.” With a more positive mindset, Balaji Viswanathan highlights 7 Salient Trends and Directions in Cloud Computing that could be shaping the industry over the next few years.

Cloud computing also looks to save energy “A small business with 100 users that moved the Microsoft applications to the cloud could cut energy use and carbon emissions by 90%. Large organizations with 10,000 users saw a 30% reduction.” More on that story here.

The expansion of Windows Azure has been in the news with the announcement of “East US” and “West US” datacenters; this was covered by Visual Studio Magazine and Mary-Jo, and according to thenextweb.com Microsoft are also building $112 million data center in Wyoming.

The cloud price war is still in full swing with Joe Panettieri discussing the pricing of Windows Azure and Office 365 and asking How Low Can It Go?

Richard Going to Oz to Deliver an Integration Workshop? This is Happening.

Richard Going to Oz to Deliver an Integration Workshop? This is Happening.

At the most recent MS MVP Summit, Dean Robertson, founder of IT consultancy Mexia, approached me about visiting Australia for a speaking tour. Since I like both speaking and koalas, this seemed like a good match. As a result, we’ve organized sessions for which you can now register to attend. I’ll be in Brisbane, Melbourne […]
Blog Post by: Richard Seroter

Deploying Node.js Applications to Iron Foundry using the Cloude9 IDE

Deploying Node.js Applications to Iron Foundry using the Cloude9 IDE

This week, I attended the Cloud Foundry “one year anniversary” event where among other things, Cloud9 announced support for deployment to Cloud Foundry from their innovative Cloud9 IDE. The Cloud9 IDE lets you write HTML5, JavaScript and Node.js applications in an entirely web-based environment. Their IDE’s editor support many other programming languages, but they provide […]
Blog Post by: Richard Seroter

BizTalk Community series: Introducing Nino Crudele

Last MVP summit I met the only Italian BizTalk Server MVP Antonino Crudele (Nino). He has been an BizTalk MVP for 5 years in a row now and that is quite an accomplishment. During the summit we had a nice little chat and got to know each other a little better. I asked him a couple of questions for my BizTalk Community Series that bring BizTalk community members to the foreground. Here is his story.

Nino Crudele is 46 years old and has two daughters, one son and a fantastic wife Grazia. He lives in  the hills of the Val Trebbia near Piacenza (province Emilia Romagna, Italy). Nino has been working in the consulting world for almost 20 years. He started as a C developer and later moved to .NET and the Web. He has always been fond of the integration aspects of development. One day back in 2003 he had the opportunity to work with BizTalk. This was one of the first Italian BizTalk pilots using BizTalk 2002.

Currently Nino is the CTO (Chief Technology Officer) at Raise S.r.l., a consultancy company in Italy. Besides that he is also a Virtual Technology Specialist for BizTalk Server, a role in which he works closely with Microsoft Italy. He enjoys this role as it enables him to work with many different clients seeing BizTalk in different scenario’s from a technical point of view, size, and criticality.
Nino has worked with most of the BizTalk accelerators, Rosettanet, HL7, SWIFT and has done some big projects on EDI and RFID. In the past he also had the opportunity to be part of a big integration project with a major Italian enterprise organization that integrates many technologies like SAP, AS400, TIBCO and others using BizTalk. During this project Nino faced one he’s memorable challenges a throttling assessment on a BizTalk architecture with more than a 100 CPUs.

Nino has to say the following about me, sharing knowledge, the BizTalk Server product, and the MVP Program:

“In Steef I found a wonderful person and a great professional, has a great energy and his blog proves it. I love to share my experiences and my knowledge with my blog and community, I think that in Italy and in the world is really important to speak about BizTalk, it is one of the best product that Microsoft did. I’m BizTalk MVP from 5 years and thank to my MVP lead, this 2012 has begun so wonderful, the MVP summit I met so many great people and great professionals, I am happy and honored to be part of this great family that is the BizTalk MVP group.”

His MVP Lead Alessandro Teglia, who I spoke with a few weeks ago has the following to say about Nino:

“As a Community Program Manager (aka MVP Lead) for CEE & Italy, I usually meet a lot of people, with strong skills and very passionate ones. I do (and I love) this job because of them, their attitude, and their willingness to help others. In particular, I found in Nino a valuable expert when I first met him and, lately and very good friend I can count on. I can easily say Nino is one of the most popular BizTalk expert in the whole Country. Nino’s ability to involve you in activities and projects is just amazing; his charisma, his positive attitude is so vivid in him that you could follow him everywhere ! But it’s also supported by his strong technical knowledge which makes him a very valuable Consultant, Community Expert, Project Manager, COO and to me, a great friend.”

In his spare time Nino likes to spend as much time possible with his family. He like to write articles, create webcasts, and experiment with technology. He follows the various BizTalk communities in the world. Nino himself created the first Italian community for BizTalk (ugics.org).

There are however a lot other things Nino likes to do in his spare time. He told me he could write a book about it. So I will quote here what he told me:

“In my life I did everything, I started to practice martial arts 4 years ago, have a brown belt Judo, did Kung fu, practiced Boxing and I’m an instructor in Muay Thai. I practiced the free climbing for nine years and was part of the free climbing Italian Team for three years. I love Kayaking, I like to run and did the marathon in Athens. The others sports in my life when I was young were rugby, scuba diving, skateboarding (free style), break dancing, and so on as I can’t remember all.Nowadays I like to do karting, and I have a 125 cc, play chess and friends on mine. I love music like music like rock, metal, pop, rap”.

Nino is indeed a very active person and I like to thank him for his contributions to BizTalk community and time to have a chat with me. Nino and I will meet again in May, when we will organize a BizTalk event at Microsoft Italy in Milan. I am looking forward to that event and spending some time with Nino, meeting his family and share our passion for BizTalk and rock music.