[rabbitmq-discuss] Porting .NET client to WinRT API (Windows 8).

Nathan Brown nathan at nkbrown.us
Fri Jun 28 17:03:46 BST 2013

I have pushed my changes to RabbitMQ client for .NET for it to work in a
Windows 8 Store / WinRT environment.  It includes a basic Windows Store
application that connects to the specified amqp URL and subscribes to
messages.  By pressing a button, messages can be sent to the RabbitMQ
server and will then be received by the subscription and displayed in a

The unit tests had to be copied and ported to MSTest because NUnit doesn't
deploy to an app container and some of the WinRT APIs require that.
 Specifically getting the protocol from application configuration.

I added a Subscription.NextAsync() and modified the SharedQueue to handle a
Task based DequeueAsync efficiently.  This allows the main GUI loop to wait
for a message without a separate thread.  These changes will only be
compiled in if the project is a Windows Store App (which defines

The SSL code is un-tested and probably broken.  The reason for the change
is that the WinRT StreamSocket API handles the SSL internally and doesn't
let the client code do as much as with the previous Socket implementation.
 If someone with experience with SSL can take a look and test it, that
would be great.

Please take a look here:

It doesn't appear that the NuGet package creation is in this repository, so
I was unable to make any changes to that.

Let me know of any feedback you have.


Nathan Brown

On Tue, Jun 25, 2013 at 10:29 AM, Nathan Brown <nathan at nkbrown.us> wrote:

> Accidentally sent the message before I finished.
> My questions were:
> Is there any feedback on the code I've submitted so far?
> For the Windows 8 changes; How should I deal with the split in the
> codebase?  Should I use conditional compilation like #ifdef NETFX_CORE, or
> use copies of the files that change and links for the ones that don't?  I
> personally think that conditional compilation for most changes and only
> separate files for the ones that change a lot (like SSL handling) is the
> best option.
> Thanks,
> Nathan
> On Tue, Jun 25, 2013 at 10:22 AM, Nathan Brown <nathan at nkbrown.us> wrote:
>> I've submitted the contributor agreement, and I hope the submitted
>> changes can now be reviewed and considered for main-line inclusion.
>> Emile mentioned that this is now under "bug25552", should I re-base my
>> code to the most recent .net client release and set the branch name to
>> match?
>> Also, there are really the separate changes that could be made
>> independently:
>>    - Corrected test to pull correct value types from dictionary.<https://bitbucket.org/nathanbrown/rabbitmq-dotnet-client/commits/25988f1d5bea8ad86aed536edd4d4fe1826ac43f>
>>    - Move from non-generic dictionary (.net 1.1) to generic dictionary,
>>    required, but independent of the next change.  This is my "depreciate1_1"
>>    branch<https://bitbucket.org/nathanbrown/rabbitmq-dotnet-client/commits/branch/depreciate1_1>
>>    .
>>    - Add Windows 8/RT code to handle differences in threads and sockets.
>>    - Threads are removed in favor of Tasks, and sockets have been
>>    removed in favor of StreamSockts
>> *
>> On Sat, May 11, 2013 at 2:05 PM, Michael Klishin <
>> michael.s.klishin at gmail.com> wrote:
>>> 2013/5/12 Nathan Brown <nathan at nkbrown.us>
>>>>  I'm also not familiar with setting up and testing SSL in RabbitMQ.
>>> Take a look at http://rabbitmq.com/ssl.html
>>> --
>>> MK
>>> http://github.com/michaelklishin
>>> http://twitter.com/michaelklishin
>>> _______________________________________________
>>> rabbitmq-discuss mailing list
>>> rabbitmq-discuss at lists.rabbitmq.com
>>> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20130628/b4c7fefb/attachment.htm>

More information about the rabbitmq-discuss mailing list