Posts Tagged ‘.Net’

SOAK

11 June 2008

I was at the Victoria .Net SIG meeting last night and had the pleasure to hear David Burela give the same presentation that won him the Imagine CUP for Australia. The product that he and three other students created was called SOAK and is:

SOAK is an integrated software and hardware platform with the aspiration of helping farmers achieve sustainable use of their land. This is achieved through the integrated use of environmental sensing, rich visual front ends to display the information to the farmer, and a subsystem which controls farm equipment such as sprinkler systems

I was blown away by the quality of the presentation and can see why they won. It is good to see quality people like David coming through the system and providing some competition for us old guys.

Australian .Net Mailing List

17 May 2008

I recently rejoined the Stanshki aus-dotnet mailing list and was confronted by deadly silence. Looks like the list has moved to Codify ausdotnet mailing list. I have subscribed and wait for all the .net goodness to come streaming through to my inbox.

Adoption of WCF and WF

18 April 2008

I am listening to a dnrTV episode on the Marriage of WF and WCF as a starting point to learn about WCF. I was really blown away by a poll they did at the start of the episode asking people if they had used WF or WCF. The population was at the Releigh Code Camp which I guess is a fairly will attended Code Camp. From the audience there was one person who had used WCF and a total of none/zero people who had used WF. Given that the Code Camp was in Feb 2008 I can’t believe the lack of take-up of these two technologies.

SOAP over JMS…..Not

13 April 2008

I largely work with people with a java background (I have a Microsoft background) so often have to map java terms into something that I understand. Our SOA architecture uses MQ Series as the transport layer for our SOAP messages as apposed to HTTP. The java guys commonly use the term ‘SOAP over JMS’ which left me confused, I understood that JMS is the Java Message Service but wondered why we would use a technology depended transport layer.

Yes I did eventually figure out that the term ‘SOAP over JMS’ is an incorrect description, JMS is a Message Queue API much like System.Messaging is an API in .Net. The term should be ‘SOAP or MQ Series’.

JMS looks something like (copied from Linda’s blog):


ConnectionFactory cf= new com.sun.messaging.ConnectionFactory();
Connection connection = cf.createConnection();
Session session = connection.createSession();
Destination destination = session.createQueue("HelloWorld");
MessageProducer producer = session.createProducer(destination);
connection.start();

TextMessage message = session.createTextMessage();
message.setText("Hello World");
producer.send(message);

In .Net it would look like:

MessageQueue msgQ = new MessageQueue(@".\private$\HelloWorld");
msgQ.Send("Hello World");
msgQ.Close();

I am not sure if the JMS example could be simplified, as indicated above a copied the example.

So if you year the term SOAP over JMS you know know what is actually meant.

Silverlight: What will the adoption curve look like

11 March 2008

Get Microsoft SilverlightWith Mix08 upon us it has been 12 months since Microsoft unveiled Silverlight. More and more I am presented with the “Get Microsoft Silverlight” icon i.e. I hit a site that has Silverlight content.

Unfortunately I live in a corporate environment with a SOE desktop and as such can’t install software personally. Now we are still running Windows XP and IE 6 which probably doesn’t provide a lot of leverage points for Microsoft to get it in here. The interesting thing is that we have flash installed which I am guessing given our use of adobe products may have not been by design.

Especially with the Silverlight 2.0 being announced at Mix08 the scenarios that Silverlight can be used, extends way beyond “flash games” and streaming media. Silverlight has to be a real consideration for business application the would be built with heavy use of DHTML.  

It has been interesting thinking about Richard Campbell’s hypothesis that Silverlight may provide an environment for people to start using WPF before progressing to full WPF on the desktop. Given the fact that the web is a better environment to create killer application I could defintely see the adoption curve for silverlight 2.0 being a lot steeper than that for WPF.

Once Microsoft can get the adoption of Silverlight from the hobyist to the point that it is added to our SOE build then this would be a good litmus test for its adoption generally. The sooner the better as far as I am concerned.

Astoria – .Net implementation of REST

19 September 2007

In the latest version (13) of The Architecture Journal there is a great article on a new project from Microsoft caller Astoria. Now Astoria is Microsoft’s implementation of the REST protocol which unfortunately only works with the Entity Framework. I will be definitely keeping my eye on the Astoria Team Blog for updates as they occur.

String.Format

25 July 2007

String.Format is one of those things that I am always reaching for a reference to get the syntax right. I just came across this post that summarises the whole thing very well.

I am posting it here as much for my reference as for everyone else.

Silverlight mailing list

21 July 2007

Greg Low has just post up about two new mailing lists one of which is a silverlight list. I look forward to seeing what sort of discussions occur in the silverlight list.

Subversion bridge for Team Foundation Server

20 June 2007

A subversion bridge for Team Foundation Server has been created on the CodePlex site. Subversion for those who don’t know is an open source version control system that seems to be the de facto standard in the java and open source communities. When I heard about it I was interested to see how much support Microsoft had for it, looking at who is involved there seems to be a degree of support from Microsoft. Brad Wilson one of the contributors to the project has posted about the code going on CodePlex, I guess a big thanks must go to Jonathan Wanagel for putting it together.

A Queue and a User waiting for a response

26 April 2007

I came across an interesting problem the other day where we had to change an interface from SOAP/HTTP to SOAP/MQ. When I originally hit this I saw all sorts off issues with Queues being asynchronous and HTTP was being used synchronously and all that fun. The system was being built in Java and we eventually found some code that showed how to do it using JMS.

Now I was interested to know how to achieve the same outcome in .Net. As a starting point there is a great article from the Enterprise Integration Patterns book site that shows how to implement the Request/Reply pattern in .Net. The key of the request/reply pattern is that the request is put on a request queue and the process then waits on the reply queue for the reply in effect making the whole sequence synchronous.

I needed to extend the pattern such that I would have multiple clients putting request on the queue and only wanting to see the reply to their request. Correlation ID come to the help here in that on the receiving end I can tell the queue that I am only interested in messages with a specific Correlation ID. In this example the replying process uses the Message ID from the request message as the correlation ID for the reply message. The TimeSpan is specifying a timeout for the call, which will raise an exception in the scenario that we don’t receive a response. This is important in the scenario that we were concerned with as we are blocking a http request from a user while we are waiting for a reply message.

replyQueue.ReceiveByCorrelationId(correlationId, TimeSpan.FromSeconds(15));

This is going to be used with a web client, so there is the chance that something has happened so that the reply doesn’t get read off the reply queue. Rather than build up a collection of orphaned replies it is easy enough to give the message an expiry using the TimeToBeReceived property. The other thing is to ensure the UseDeadLetterQueue property is false so once the message expires the message just disappears.

replyMessage.TimeToBeReceived = TimeSpan.FromSeconds(60); replyMessage.UseDeadLetterQueue = false;

Still not sure whether I would specifically design a system to use a Queue in this fashion but it definitely looks like queues can be used in this fashion.

Note: This can only be done with a non-transactional queue