{ explore .net }

To content | To menu | To search

Wednesday 20 January 2010

Understanding SOA - Principles - Service Contract

Introduction
The service contract is probably the most important thing/document/artifact that you'll be creating or using concerning a SOA implementation. This is what technically defines a service, what it will look like, what it is capable of doing and how it's going to do it.

Standardized Service Contract
A service contract should be standardized by industry and design standards, this will greatly enhance interoperability with other vendor platforms and internal applications/services. The contract is created after the service analysis and modeling but before the implementation of the service. It's important to use contract-first design to avoid any dependencies from the contract on a specific implementation or technology. The service implementation and consumers must depend on the contract but not the other way around.

Contents
The contract will contain the following technical "documents" (not necessarily human readable documents):
- service definition, this contains the technical details of the service and its capabilities (headers, methods...)
- data definitions, this shows what the exchanged data will look like

When implementing the services as Web Services this will correspond to WSDL and XSD respectivelay. Besides these documents you might also have policy definitions when using Wew Services (WS-Policy) to enforce security or other enterprise policies.

Besides the technical documents there can also be other (non-technical) documents included in the contract such as an SLA.

The above documents can all be created independently from each other. Data and policy definitions can and should be used by different services when appropriate. This will greatly enhance the interoperability between applications and services, if different services in the enterprise use the same data but use different definitions you'll have to make data transformation and integration efforts, this is exactly what SOA wants to avoid.

Governance
The governance is also important to contracts, someone must "own" the contract and preferably not by a specific project. This is necessary to have a successful evolution of the service an to avoid that one party can make breaking changes to the contract.

Friday 15 January 2010

Stored Procedure Performance

This is just a quick tip/workaround for performance issues with stored procedures in SQL Server.

I had a fairly complex SP, actually just a SELECT with calculations, joins and outer applies, that had several parameters of different types (uniqueidentifier, varchar, datetime) that were used in the WHERE clause and passed to functions. This SP took more than 1 minute to complete but when I extracted the SELECT statement form the SP and ran it in SQL Server Management Studio it took just 3 seconds. This is quite a big difference to do the exact same thing, no?

Some time ago I read something about SQL Server doing some kind of parameter checking in SP's and this could cause a performance issue. So I tried the workaround that was mentioned there: declare new variables inside your SP, asign the values of the parameters to those variables and then use those variables in the rest of the SP. Lo and behold, my SP was finished in 3 seconds. 

I don't exactly understand what is going on here, if anybody knows the details don't hesitate to tell me.

Monday 4 January 2010

Scheduled exam S90.01

I just scheduled my first soaschool.com exam for December 30, just in time to keep on track with my planning to do one exam this year :-)

I've read the book SOA: Principles of Service Design completely, read the self-study material and I tried the sample questions. Until D-day I'll probably listen to the the CD's with podcasts and review the most important chapters of the book that concern the first exam.

Once I took the exam I'll let you know what it was like.

UPDATE: Because the exam center unexpectedly had to close last week I was forced to reschedule my exam to January 21.

Wednesday 4 November 2009

WCSF and VS2010

Guidance Automation isn't supported yet in Visual Studio 2010 beta 2 and this sucks (my apologies for using this word).

In a project we're currently working on we're using Entity Framework and the Web Client Software Factory and I would really like to use the new EF features in VS2010 beta 2 (it does have a go-live license) but also keep using WCSF and without GAX/GAT support this aint gonna happen.

But as always in IT there might be a workaround, I'll be extracting the project templates of WCSF (have a look in the install directory to find them) and adding them to the project templates of Visual Studio.

I'll keep you informed of my success or failure.

Thursday 15 October 2009

Oslo Articles

From DSLs and Models to “Quadrant” using “Oslo” May CTP

"M" In a Nutshell

Modeling as Expressed in Code

What Exactly Does One Do With “Oslo”?

MGraph Visualizer Plug-in for Intellipad!

Intellipad Team Blog

Wednesday 14 October 2009

Oslo as a SOA Service Repository?

Don't expect an answer, only a question.

Could Oslo be used as a service repository in SOA within the enterprise? If so this could be quite powerful. You can create a grammar for the service contracts (wsdl, xsd...) and additional information concerning the service (SLA, discoverability...). This could really help in standardizing and centralizing the governance of SOA in the enterprise.

Might this be a valid implementation of Oslo?

Tweeting

Started tweeting


Tuesday 6 October 2009

Exploring MonoTouch with Tripy

As you might already know the people of Mono have made it possible to use the MonoDevelop IDE and C# to create applications for the iPhone. Whether this is good or bad I leave it up to you to decide, I'm just happy there is more than one way to develop for the iPhone. The thing that makes it possible is MonoTouch, the framework between the iPhone libraries and C#. MonoTouch is not free (single license costs $399, per year if you want updates) but there is a trial version to play with.

What do you need to get started:

  • Mac OS X Leopard (yes, you still need a Mac)
  • Mono framework for Mac
  • MonoTouch Framework
  • MonoDevelop for MonoTouch (it's a special version)
  • XCode and Interface Builder (should already be installed with Mac)

You can find the installation instructions and downloads on the site of MonoTouch.

Tip 1: Once you have everything installed and it's your first time using Mono on you Mac, go here to be able to launch MonoDevelop.

Tip 2: If you've never developed for the iPhone or Mac before and you know nothing of Objective-C (the natural language of Mac and iPhone) than I still suggest you to read the documentation on Apples website and maybe also read the book "Cocoa Programming for Mac OS X (3rd Edition)" (Aaron Hillegass). Trust me, this will really help you especially if you'll be using Interface Builder to create the views.

So now that you have the tools and knowledge you can get started. To help you on the way I'll be creating a sample application and publish the code on this blog as I progress but don't expect full tutorials as I don't have the time right now. The idea is to create a vacation/trip organizer and you can download the first pre-alpha release of Tripy.

The following features are included:

  • it uses a navigation controller for navigating between views
  • 3 (table)views are available (list of trips, overview of a trip, details of a trip item)
  • different examples to wire up a table view to its UITableViewDataSource and UITableViewDelegate, this also includes a custom UITableViewController
  • custom UITableViewCell created in Interface Builder
  • dummy data (no DB yet)

Future features:

  • adding, updating and deleting trips
  • more custom cells
  • SQLite support

I also try to use Interface Builder as much as possible, not only for creating the views and controls but also to wire everything up such as linking a UITableView with its UITableViewDataSource and UITableViewDelegate. In case you have no idea what I'm talking about, a UITableView uses a UITableViewDataSource to get filled and a UITableViewDelegate receives events from the UITableView.

This first code release is very rough, poorly tested and needs code cleanup/refactoring so please no comments on these subjects, this will be taken care of as I progress. If you have questions on how to do something or how something works, just drop me a comment.

You are free to use this code as you see fit but I will not take any responsibility for accidents this code might cause. The only thing I ask is to put a reference to me or this blog if you publish or change this code or applications your create with it. If you have any input, recommendations or if you want to add your own additions just let me know.

Download source code.

Tuesday 22 September 2009

SOA symposium presentations

The second international SOA symposium is organized from October 22-23 2009 in Rotterdam, the Netherlands. There are also 3 days of workshops (Oct. 19-21).

But, the presentations of last years symposium can be downloaded for free. Topics include SOA in genereal, architecture, ESB, REST, web services... They also mention that soon some video presentations will become available.

Monday 21 September 2009

MonoDevelop not starting on Mac OS

If your MonoDevelop is only jumping around but doesn't want to start check out this solution.

- page 2 of 5 -