Santosh Benjamin's Weblog

Adventures with AppFabric, BizTalk & Clouds

WSCFblue on Endpoint TV

with 7 comments

The latest episode of Endpoint TV now features a demo of WSCFblue and an interview with lil ol’ me :-)

Its the first time a trans-atlantic webcast has been attempted and that too with video chat and desktop sharing via OCS so there are slight lags in the audio sync to the face to face bits. However, the video is primarily an on-screen demo so audio sync doesnt appear to be much of an issue.

Check it out and post your feedback on the episode and the tool.

Written by santoshbenjamin

November 10, 2010 at 6:30 PM

Posted in WSCF, WSDL

Tagged with , ,

NUnit and config files

leave a comment »

I’m back in the NUnit world after a long time. We are looking at packaging up the NUnit GUI along with some BizUnit tests for my current gig so that we have a set of integration tests to run on the rigs. Ironically, the project isnt even a BizTalk one, but BizUnit is still a useful framework, nonetheless. More about that in a later post and back to the main subject here.  

I created a separate NUnit project file and specified assemblies etc. I intend the project file to be deployed on the rigs as well so we can just open the GUI, select it and run the tests. The first hitch I ran into was that the NUnit GUI didnt recognize my app config file. After some digging around I found this post by Charlie Pool which shed some light on how NUnit looks for config files however the key point missing in Charlie’s post  (or maybe its obvious and i’m just dense :-)   )there is the exact location of the file. The file should be a sibling of the NUnit project file and not in the bin\debug folder (unless of course your nunit proj file is there)

To summarise  Charlie’s point with my extra clarification:  If you load an NUnit project, such as mytests.nunit, the config file must be named mytests.config and should be co-located with the .nunit file.

I also found a gem in the comments that helped me sort the issue. The commenter indicated that we can examine AppDomain.CurrentDomain.SetupInformation.ConfigurationFile  in debug mode. I didnt know this could be done and found a ton of interesting stuff in the SetupInformation structure too which i should look into some more.

Hope this helps anyone running into this issue.

Written by santoshbenjamin

November 4, 2010 at 6:40 PM

Posted in BizUnit, Coding, NUnit

Tagged with , ,

Presenting AppFabric @Avanade Soltech AfterHours

with one comment

I have been invited to present a session on Exploring AppFabric (Server & Cloud) at Avanade, London on the 28th October (next week). This is part of the regular Soltech After Hours meetings. This session will be a hands on look into the components of both Server AppFabric as well as Azure AppFabric. We will also look at how these offerings fit into Microsoft’s overall platform strategy and how they align with other products such as BizTalk Server and what the roadmap for all of them looks like.

My AppFabric presentation at TechDays Online 2010  went off very well. Thanks to all those who took the time out to attend my session as well as the other sessions. There were more than a 350 attendees through the day and even with 3 tracks going on simultaneously, I managed to get over a 100 in my talk alone which is really encouraging  :-) . If you attended my webcast (or have watched it since) and have any questions or require clarifications, feel free to ping me on this blog.

Written by santoshbenjamin

October 21, 2010 at 6:25 PM

Posted in AppFabric, Conferences

Tagged with , ,

Presenting Azure AppFabric @ TechDays 2010

leave a comment »

In case you weren’t aware, we are organizing the TechDays Online Conference on Oct8th. Check out the agenda. You’ll find some well known names and an unknown one in the middle :-) Yep, lil ol’ me speaking on a “Lap Around Azure AppFabric” at 1pm in Track-1.

In general the track is supposed to be a high level one but i will be talking about getting to grips with the AppFabric vision, components that are on-premises, in the cloud and the general plan for convergence. We’ll also talk about how good ol BizTalk Server fits into this vision. We’ll discuss common patterns of usage in the Service Bus and ACS.

If you can make it, do register for the conference and it would be cool to have you attend my talk !!

Written by santoshbenjamin

September 22, 2010 at 6:10 PM

Posted in Conferences

Tagged with ,

WSCFblue- Get Voting

leave a comment »

I had previously written about the WSCF Roadmap. These have now been entered into the IssueTracker on the workspace. WSCF vNext is underway but we need to know what features to invest in. What additions to the toolset would help your productivity and delivery. 

The main items are listed below. Which of these would ‘rock your world’ :-) and which of these do you not give 2 figs about? Have a look and then head over to the workspace and get voting.

  • T4 Templates
  • DataContractSerializer support
  • Contract First Workflow Services
  • Re-platform with FeatureBuilder
  • Merge ‘Classic’ and ‘Blue’
  • Externalized API
  • Persistence & Reload of settings
  • New command line
  • Other bindings
  • Multiple SVC files
  • Custom Behaviors
  • Incremental code-gen
  • WS-Addressing Support
  • Flexible Naming conventions
  • Integration with ServiceFactory
  • New/additional UI

If there are other items that we could consider, let us know on the forums or add items to the IssueTracker.  Looking forward to hearing from you.

Written by santoshbenjamin

September 17, 2010 at 1:02 PM

Posted in WSCF

Tagged with

WSCFblue- Walkthrough

leave a comment »

We’ve now published a walkthrough for WSCFblue v1. In the walkthrough the following areas are covered

  • How to model your data
  • How to model your messages
  • How to model your interface (build a WSDL from a set of XSD files)
  • How to use advanced options such as Fault Contracts as part of your interface
  • How to generate a service side stub from the WSDL
  • How to generate client ‘proxies’ from a WSDL
  • How to work with the auto-generated code and fill out your implementation
  • How to generate data contracts from a WSDL 

The walkthrough applies to both VS2008 and VS2010 as the steps are the same. The only difference is the config files for WCF4 and if you run  into any problems in this area please let us know and we can update the content.

We hope you find this to be useful.

Written by santoshbenjamin

September 17, 2010 at 12:17 PM

Posted in WSCF

Tagged with

Feature Builder – ‘The Book’

with one comment

One of the really cool things about Feature Builder is that the guidance documentation also opens up inside VS and is available as you build extensions. However, this can also be limiting sometimes. If you want to just read through the material end to end to get a feel for the product or need a quick reference (or prefer a hardcopy) then the VS channel doesnt help. 

Michael Lehman has provided an ‘offline’ documentation PDF which we have  now made available at the Feature Builder Contrib workspace.  Do note that this is a compilation of the guidance that unfolds inside VS so the hyperlinks wont work. This is just meant to be a ‘ready reference’ and not to replace the in-product guidance. We will try to update it for each release.

Check it out and send us feedback and also let us know what other content would be useful. As you use FB and FBContrib, if you would like to contribute any ‘User Notes’ (like the MSDN Community Content) with tips etc, then please do send that to us on the Contrib workspace and we will add it to the documentation.

Written by santoshbenjamin

September 17, 2010 at 8:49 AM

Thinking about WS* and REST

with 4 comments

In a previous post I highlighted a great webcast by Scott Hanselman on OData and discussed the metaphor he used to explain OO and SO (the Librarian Service). I’d like to continue discussing that webcast and this time turn my attention to REST and WS*.

To paraphrase Scott’s explanation,” SOAP is great for (that kind of) asynchronous message passing with the appropriate level of transactional consistency and so on, but if you just want to get a list of books and walk around in the stack of books, should I be sending asynchronous request-response messages to the Librarian Service? That’s rather heavy. I just want to see some stuff. I just want to do a “GET”. That’s what REST is all about.

REST says “We’ve got this thing called HTTP with a verb called GET and a cool addressing scheme in the URL that lets me get stuff (and we I have some other verbs like PUT, POST and DELETE that map really nicely to Create, Read, Update and Delete. So if I want to do CRUD over HTTP, the semantics are already there. So REST is about retrieving resources and sometimes about updating/modifying them.

So if we don’t get dogmatic and ‘exclusive’ about how we want to approach the system, we could now implement hybrid systems where for the CRUD , we could use WCF Data Services and OData and for the areas where we need the security , reliable messaging and to interoperate with legacy systems some of which may be using the WS* spec (for instance if we are passing money around ), then we use the ‘traditional’ SOAP approach. Most of the time we try to create artificial divisions and ring-fence our systems and tie them all to a particular approach when we really should be implementing services in a way that is appropriate for the parties/systems/people that are consuming them.

I think the final statement there is worth repeating : we should be designing/implementing services in a way that is appropriate for the scenario and consumer.

A lot of the proponents of REST (but of course not all of them) tend to be dogmatic. “WS* is evil” is the usual mantra. That’s simply not true. Sure, it is complex. Once you get past the WS-I basic profile (and even that is not implemented by everyone), things are hard. But complexity of SOAP does not negate the necessity for it nor is it an argument for a “programmable web”. What if I don’t want the web (or the part of it where my system lives) to be programmable?  I want to expose services, but i want to choose the consumers and I mandate the contract. In, say a financial services domain, for example a Payments System, I certainly don’t want my customers details to be easily available over a “GET”. Heck, no! I want the appropriate headers, I want X.509 mutual certificates, I want the whole shooting match (otherwise my customer will shoot me :-) ) . But if I were to build say, an admin interface, where my user base is locked down and heavily authenticated, and if there was a scenario where they needed to drill down to look at payment patterns, then sure, GET would be fine, saves me having to define numerous interfaces just to retrieve different aspects of the same thing.

Anyway, this isn’t intended to be a rant. I’m excited about the potential of WCF Data Services and OData.  In the next post, we’ll examine one of the most interesting aspects of that webcast, namely a demo of a data service with absolutely no database which puts paid to the notion that WCF Data Services is about chucking your precious DB straight into the internet. Stay tuned.

Written by santoshbenjamin

September 5, 2010 at 4:56 PM

A nice metaphor for object orientation and service orientation

with one comment

I was recently watching an awesome webcast by Scott Hanselman on the topic of OData. Even if you are familiar with OData, I would recommend that webcast. The way he explains the position of REST and WS* is very balanced and educative. No dogmatic rants on how “rubbish” WS* is and how waay-cool (not) REST is. Anyway, more about the subject of that webcast in another post but what I wanted to highlight was this cool metaphor that Scott used when talking about OO and SO.

To paraphrase his illustration, “In the old days in the 90s we would model, say, a book as a “Book” object and that book object would have a “Checkout()” method and we would call “book.Checkout()” and we would sit back feeling satisfied with the “real world” approach. But then service orientation made us realize that there really is a Librarian Service and a Checkout Request and you submit the Checkout Request to the Librarian Service and it would go off and do that work asynchronously and you would “hang out” in the library and when it was ready it would call you back and give you the Book Checkout Response. This turns out to be a better metaphor for how life works. 

 IMO, this is a great explanation for the difference in approaches to system design. It’s still quite possible for these two to co-exist in scenarios where we design the “macro” system with SO and the internal components follow nice “OO” composition and/or hierarchies. The really cool part of SO is that it takes the “encapsulation” level much higher up. Consumers think in more coarse grained terms of message exchange patterns and about service levels rather than about methods on individual objects.

Written by santoshbenjamin

September 5, 2010 at 3:39 PM

Posted in Coding, General, System Design

Tagged with ,

A new lifetime gig

with one comment

I’m Dad again for the second time :-) . Baby Rachel arrived last week and is already alert and ready to take over the world. Just check out the picture.

Rachel Benjamin

Well, I guess that pretty much squeezes down my community project bandwidth down to a minimum. This is going to be a long project. Western parents usually get away with an 18-year gig but Indian ones don’t :-)

Written by santoshbenjamin

September 1, 2010 at 10:37 PM

Posted in General

Tagged with

Follow

Get every new post delivered to your Inbox.