Windows Azure AppFabric Test Clients

AppFabric Service Bus Send and Receive Test Clients help development and testing of Queues, Topics and Subscriptions features of Windows Azure AppFabric Service Bus.

Two clients are developed to send and receive messages to\from AppFabric Service Bus.

Currently, these clients are developed on Windows Azure AppFabric SDK v1.5 September Release and available for download at http://appfabricservicebus.codeplex.com/
Walkthrough to use Test Clients

Send Client

Connect to AppFabric by clicking on menu File>>Connect. This action opens a Connection Explorer.

Choose Service Namespace from dropdown if the settings exist in NamespaceConfiguration.xml located in application folder. If not, enter credentials to connect to Windows Azure AppFabric.

Choose Communication Object and list to connect

Enter a message in Message tab and set message properties in Properties tab. Click on Send button to send a message.


Receive Client

Choose a Communication Object and Queue\Topic and Subscription list from dropdown.

Click on Poll Button to receive messages.

Click on Message Id in Received Messages to view message and its properties.

Comparison of Windows Azure Storage Queues and Service Bus Queues

Update[01/17/2012]: MSDN now has a comprehensive  list. Click Here

Note: Comparison list is slightly outdated with the new release of Windows Azure SDK 1.5 and as the products evolve.

Feature

Windows Azure Storage Queues

Service Bus Queues

Comments

Programming Models      
Raw REST/HTTP Yes Yes  
.NET API Yes(Windows Azure Managed Library) Yes(AppFabric SDK)  
Windows Communication Foundation (WCF) binding No Yes  
Windows Workflow Foundation (WF) integration No Yes  
Protocols      
Runtime REST over HTTP REST over HTTPBi-directional TCP The Service Bus managed API leverages the bi-directional TCP protocol for improved performance over REST/HTTP.
Management REST over HTTP REST over HTTP  
Messaging Fundamentals      
Ordering Guarantees No First-In-First-Out (FIFO) Note: guaranteed FIFO requires the use of sessions.
Message processing guarantees At-Least-Once (ALO) At Least-Once (ALO)Exactly-Once (EO) The Service Bus generally supports the ALO guarantee; however EO can be supported by using SessionState to store application state and using transactions to atomically receive messages and update the SessionState. The AppFabric workflow uses this technique to provide EO processing guarantees.
Peek Lock YesVisibility timeout: default=30s; max=2h YesLock timeout: default=30s; max=5m Windows Azure queues offer a visibility timeout to be set on each receive operation, while Service Bus lock timeouts are set per entity.
Duplicate Detection No Yes, send-side duplicate detection The Service Bus will remove duplicate messages sent to a queue/topic (based on MessageId).
Transactions No Partial The Service Bus supports local transactions involving a single entity (and its children). Transactions can also include updates to SessionState.
Receive Behavior Non-blocking, i.e., return immediately if no messages REST/HTTP: long poll based on user-provided timeout.NET API: 3 options: blocking, blocking with timeout, non-blocking.  
Batch Receive Yes(explicit) Yes. Either (a) Implicitly using prefetch, or (b) explicitly using transactions.  
Batch Send No Yes (using transactions)  
Receive and Delete No Yes Ability to reduce operation count (and associated cost) in exchange for lowered delivery assurance.
Advanced Features      
Dead lettering No Yes Windows Azure queues offer a ‘dequeue count’ on each message, so applications can choose to delete troublesome messages themselves.
Session Support No Yes Ability to have logical subgroups within a queue or topic.
Session State No Yes Ability to store arbitrary metadata with sessions. Required for integration with Workflow.
Message Deferral No Yes Ability for a receiver to defer a message until they are prepared to process it. Required for integration with Workflow.
Scheduled Delivery No Yes Allows a message to be scheduled for delivery at some future time.
Security      
Authentication Windows Azure credentials ACS roles ACS allows for three distinct roles: admin, sender and receiver. Windows Azure has a single role with total access, and no ability for delegation.
Management Features      
Get Message Count Approximate No Service Bus queues offer no operational insight at this point, but plan to in the future.
Clear Queue Yes No Convenience functions to clear queue efficiently.
Peek / Browse Yes No Windows Azure queues offer the ability to peek a message without locking it, which can be used to implement browse functionality.
Arbitrary Metadata Yes No Windows Azure queues allow an arbitrary set of <key, value> pairs on queue metadata.
Quotas/Limits      
Maximum message size 8KB 256KB  
Maximum queue size Unlimited 5GB Specified at queue creation, with specific values of 1,2,3,4 or 5 GB.
Maximum number of entities per service namespace n/a

10,000

 

Configuration binding extension ‘system.serviceModel/bindings/netTcpRelayBinding’ could not be found. Verify that this binding extension is properly registered in system.serviceModel/extensions/bindingExtensions and that it is spelled correctly. Error in AppFabric

Resolution:

1. Make sure Windows Azure AppFabric SDK is Installed.

2. Make sure below settings exist in machine.config file if not add manually

 

<behaviorExtensions>

…..

<add
name=connectionStatusBehavior
type=Microsoft.ServiceBus.Configuration.ConnectionStatusElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 />

<add
name=transportClientEndpointBehavior
type=Microsoft.ServiceBus.Configuration.TransportClientEndpointBehaviorElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 />

<add
name=serviceRegistrySettings
type=Microsoft.ServiceBus.Configuration.ServiceRegistrySettingsElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 />

 

</behaviorExtensions>

 

<bindingElementExtensions>

…..

<add
name=tcpRelayTransport
type=Microsoft.ServiceBus.Configuration.TcpRelayTransportElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 />

<add
name=httpRelayTransport
type=Microsoft.ServiceBus.Configuration.HttpRelayTransportElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 />

<add
name=httpsRelayTransport
type=Microsoft.ServiceBus.Configuration.HttpsRelayTransportElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 />

<add
name=onewayRelayTransport
type=Microsoft.ServiceBus.Configuration.RelayedOnewayTransportElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 />

 

</bindingElementExtensions>

 

<bindingExtensions>

…..

<add
name=basicHttpRelayBinding
type=Microsoft.ServiceBus.Configuration.BasicHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 />

<add
name=webHttpRelayBinding
type=Microsoft.ServiceBus.Configuration.WebHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 />

<add
name=ws2007HttpRelayBinding
type=Microsoft.ServiceBus.Configuration.WS2007HttpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 />

<add
name=netTcpRelayBinding
type=Microsoft.ServiceBus.Configuration.NetTcpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 />

<add
name=netOnewayRelayBinding
type=Microsoft.ServiceBus.Configuration.NetOnewayRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 />

<add
name=netEventRelayBinding
type=Microsoft.ServiceBus.Configuration.NetEventRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 />

 

</bindingExtensions>

 

 

 

Configuring Windows Server AppFabric

  • All Programs >> Windows Server AppFabric >> Configure AppFabric

  • Click Next

  • Check Set monitoring configuration

  • Choose Monitoring provider and Click on Configure

  • Check Register AppFabric monitoring store in root web config and Initialize monitoring store

  • Choose Database from the list or enter the database name to be created and click on OK

  • Click on Yes in Confirmation dialog

  • Monitoring store registered!

  • Check Set Persistence configuration

  • Choose Persistence provider and click on Configure

  • Check Register AppFabric persistence store in root web config and Initialize persistence store
  • Choose Database from the list or enter the database name to be created and click on OK

  • Click on Yes in confirmation dialog

  • Persistence store Initialized!

  • Click on Next

  • Click on Set Caching Service configuration

When specifying the Caching Service configuration provider, there are two options available:

  1. XML – Caching Service configuration information is stored in an XML file on a network file share.
  2. SQL Server Distributed Cache Configuration Store Provider – Caching Service configuration information is stored in a SQL Server database.

  • Choose XML for Workgroup scenarios
  • If your computer is part of a workgroup, you must change the Caching Service account. Use a local account that exists on all computers participating in the cluster and use the same password for the account on all computers. For configuration, the local account must have local administrator privileges, and must not be a built-in account. This step is not necessary for domain-joined machines.
  • Choose a valid UNC File share path and click on Next

  • Check Firewall exceptions and click on Next

  • Click Yes on confirmation dialog

  • Click on Finish !

BizTalk Azure Adapters

BizTalk Azure Adapters

BizTalk Azure Adapters SDK 1.0 provides the capabilities to BizTalk Server 2009 to Integrate on-premise application with cloud based applications and services running on Windows Azure Platform.

SDK 1.0 is capable to connect on-premise application with Azure Live Framework and .Net Services.

BizTalk Adapter for .Net Services can Send\Receive messages.

BizTalk Adapter for Live Mesh can Receive Notifications and Mesh Objects.

Adapters can be downloaded here.

XML Comments Documentation Builder

Documenting the code is part of the Software Development Life Cycle. There are many ways to document APIs. Visual Studio XML comments provide an option to document the code (Modules, Class, Interfaces, and Methods) in-line. These comments can be extracted from the code to generate a HTML(.chm) file.

Below are some of the Documenter tools

·Sandcastle– This tool provides high customization but does not have GUI capabilities. Sandcastle can be used along with Sandcastle Help File Builder to have a power of GUI. This is highly recommended as this is supported by Microsoft.

Download Link:

Sandcastle: http://www.codeplex.com/Sandcastle
Sandcastle Help File Builder:
http://www.codeplex.com/SHFB

· Doxygen- This is yet another tool for document builder.
MoreInfo:
http://www.stack.nl/~dimitri/doxygen/

·NDoc: This tool is “obsolete”. As they have not updated the tool long time.