Monday, September 05, 2005

MS Announcement on targeted workloads for Windows Server “Longhorn” Itanium-based systems

Microsoft has elaborated its roadmap for Windows Server “Longhorn” Itanium-based systems and the workloads that will be targeted.

The basic skinny is that “Longhorn” server will be specifically designed for database workloads and custom and line of bussiness applications.

For me at least, this makes perfect sense as the “Big Iron” Itanium is in my view for the 4 proc (and greater) type of scenario and workload, with x64 being the sweetspot for the more general purpose scenario and the typical workload that would be best catered for by 4 procs and less.

– Paul

 


 | 
Monday, September 05, 2005 4:38:41 PM UTC | # | Disclaimer | Comments [0] | 
 Tuesday, August 30, 2005

So whats new in WS-AtomicTransaction, WS-BusinessActivity and WS-Coordination

Max Feingold has a nice piece that outlines the additions and changes to the WS-C, WS-AT and WS-BA specs.

The high level items mentioned by Max are

  • new co-authors on board, involved in providing contributions to the specs
  • cleaner fault handling that is explicitly part of the WS transaction protocols and not from WS-Addressing
  • Security composition, allowing for the composability of security tokens to be part of WS-C
  • policy composition – a new policy model for WS-AT and WS-BA. Which in my view looks a lot cleaner, fine grained and explicit, cool stuff., and it should make the tools story that bit sweeter also.

you can read Max’s synposis of the changes over at this link.

– Paul



Tuesday, August 30, 2005 10:50:34 PM UTC | # | Disclaimer | Comments [0] | 

Who from Ireland is going to the PDC this year?

There is a few emails flying around, with folks trying to figure who is PDC’ing this year.

If you are, drop a comment below.

It would be good to get all the Irish to sync up.

– Paul

 

 



Tuesday, August 30, 2005 4:44:22 PM UTC | # | Disclaimer | Comments [5] | 

WinFs to be downstreamed to Win XP

Interesting tip-bit in an overall nice video/demo of WinFS, WinFS will be downstreamed to WinXP.

In the video, you can here the comment on the downstreaming at 12:00.

Enjoy,

– Paul



Tuesday, August 30, 2005 2:15:37 AM UTC | # | Disclaimer | Comments [0] | 

"Birds of a Feather" discussion in PDC 2005 - Topic: Distributed Atomic Transactions - Wishful Thinking?

William Tay has a very interesting topic for discussion, approved for a "Birds of a Feather" discussion in PDC 2005.

Topic: Distributed Atomic Transactions - Wishful Thinking?

This should be a really interesting discussion.

Hope to see you there.

– Paul



Tuesday, August 30, 2005 1:40:24 AM UTC | # | Disclaimer | Comments [0] | 

WinFS Beta 1 posted on MSDN today

Beta 1 of WinFS was posed on MSDN today. WinFS is the next generation relational file system for Windows and currently Beta1 is available to MSDN subscribers.

Go get it, while its hot!!

– Paul



Monday, August 29, 2005 11:49:45 PM UTC | # | Disclaimer | Comments [0] | 

Free ASP.NET Training on MSDN - provided by an Irish company - Innerworkings

you gotta support your own when they do something as great as this.

Our own local innovators in the field of e-learning, InnerWorking, have teamed up with Microsoft to offer some free training for a limited time, on ASP.NET etc…

You can get all of the details at this link.

congrats to Claudio, et al.

– Paul

 



Monday, August 29, 2005 11:45:26 PM UTC | # | Disclaimer | Comments [0] | 
 Wednesday, August 24, 2005

77 days to VS2005 launch and ........

[from Christain Nagel’s Blog]

“77 days to the launch of Visual Studio 2005. Somasgear blogs about upates for Visual Studio 2005:

  • August: new CTP for Visual Studio 2005
  • September: Visual Studio 2005 RC1 & Team Foundation Server Beta 3
  • TFS will ship in Q1 2006
  • TFS Beta 3 will have a Go Live license! “

 

– Paul



Wednesday, August 24, 2005 12:32:34 AM UTC | # | Disclaimer | Comments [0] | 
 Monday, August 22, 2005

INDA 1st Birthday Conference

WOW, INDA is a year in existence?

Yep, INDA is celebrating its first birthday and to mark the occasion, there will be a full day conference (with beer etc... afterwards).

To mark the occassion, there will be four sessions, covering the areas of ASP.NET V2, Windows Presentation Foundation (aka codename "Avalon"), DSL's (Domain Specific Languages) and Windows Communication Foundation (WCF, aka codename "Indigo").

Giving the sessions will be Dino Esposito, Ian Griffiths, Eamon O'Tuathail and yours truly.

The "Birthday conference" is on the Tuesday 25Th of October in the Morrisson Hotel and for all of the details, you can visit the registration page on Developers.ie.

As you can see on the registration page, I am giving the talk on WCF (i.e. "Indigo").

As I know that there has been many requests for more sessions on Indigo (whoops! that should be WCF!!), I am keen to hear feedback on what folks would like the 1hr talk to cover. At the moment, the desciption for the talk is the same as the last INDA session that I did on "Indigo", but I will going into more detail and will update the talk's description in a few weeks.

All thoughts and suggestions welcome, just drop me a comment below, shot me an email, etc...

Hope to see you there,

Rgds,

Paul


 | 
Monday, August 22, 2005 12:51:34 PM UTC | # | Disclaimer | Comments [2] | 
 Friday, August 19, 2005

Updated specs for WS-AT, WS-BA and WS-Coordination

Copies of the updated specs can be found at http://msdn.microsoft.com/webservices/default.aspx?pull=/library/en-us/dnglobspec/html/wsatspecindex.asp.

– Paul



Friday, August 19, 2005 12:38:42 PM UTC | # | Disclaimer | Comments [0] | 

Principles of Service Design: Service Versioning, Service Patterns and Anti-Patterns

John Evdemon has written 2 articles that discuss the Principles of Service Design, covering the areas of Service versioning and Service Patterns and Anti–Patterns.

The article on Service versioning is particularly good and does a great job in covering a topic that is very important in the SO world.

– Paul


 | 
Friday, August 19, 2005 11:05:27 AM UTC | # | Disclaimer | Comments [1] | 
 Tuesday, August 16, 2005

So which is faster - ASMX, ES, Remoting, MSMQ ?

In my opinion, this is very seldom the right question but non the less it gets asked quite a bit? From my own perspective it took me a while to shake off the additive approach of the technology stack bake-off and designing distributed systems by using the “for as many discrete distributed calls as possible” method, where design was lead by location transparency and therefore eventually transmission costs; and not by a flexible, extensible, scalable, interoperable and performant architecture and the right technology to support these concepts. Thanks to an oppurtunity to work with some really smart guys back in the late ‘90’s, I was quickly taught some very valuable lessons in the whole area of distributed computing and with the emergence of SO and the current waves of thought in the industry around loose coupling and message orientation, it so resonates with my own experiences and thoughts.

So anyhoo….

With the question of which is faster, ASMX, ES, Remoting, MSMQ still buzzing around quite a bit, Richard Turner and Ingo Rammer have been busy writing and have created two very well written articles that address these very concerns about the perceived or real performance differences between ASMX, Remoting and MSMQ.

As they point out in both articles, these should be thought of as “explicitly designed to provide consistent comparative results between the specific technologies under test”. To add to that I would say that in the vast, vast majority of scenarios you should pick a technology by its functionality and capabilities, and when that technology is not ASMX, consider using ASMX to facade some/all of the coarser grained functionality that is of sufficent value to be reusable throughout the business, but this is covered in more detail in the articles and the articles they reference.

So go have a read of:

Performance of ASP.NET Web Services, Enterprise Services, and .NET Remoting
System.Messaging Performance

it is well worth your while in my view.

– Paul


 |  |  |  |  |  | 
Tuesday, August 16, 2005 3:44:59 AM UTC | # | Disclaimer | Comments [0] | 
 Friday, August 05, 2005

Visual Studio Extensions for WinFX Beta 1- released today
<extract>

Overview

The Visual Studio 2005 Extensions for WinFX Beta 1 provides developers with support for building WinFX applications using Beta 2 of Visual Studio 2005. This support includes XAML Intellisense support through schema extensions for the editor, project templates for the Windows Presentation Foundation (formerly known as “Avalon”) and the Windows Communication Foundation (formerly known as “Indigo”), and WinFX SDK documentation integration. It does not include a graphical design surface for either the Windows Presentation Foundation or the Windows Communication Foundation. There is more information about these WinFX technologies below.

Note: This is a Beta release. Therefore, do not install these builds on machines you depend on. If you have a previous version of Avalon ("Windows Presentation Foundation"), Indigo ("Windows Communication Framework"), or .NET Framework 2.0 installed, you must read this before download.
</extract>
 
 
 
 

 |  | 
Friday, August 05, 2005 12:22:19 AM UTC | # | Disclaimer | Comments [0] | 
 Thursday, August 04, 2005

INDA Tomorrow Night (5/8/05) - Introduction to Agile development & Unit Testing best practices - presented by Roy Osherove

Thats right, two sessions for the price of one !! Which means both are free!

Roy Osherove will be giving two talks at the next INDA session, tomorrow night.

The sessions will be an Introduction to Agile development  and Unit Testing best practices.

Things kick of 7:30 sharp!

You can register at http://www.developers.ie/session.aspx?s=20

Hope to see you there,

– Paul



Thursday, August 04, 2005 11:24:04 AM UTC | # | Disclaimer | Comments [0] | 
 Monday, August 01, 2005

Whitepaper - Microsoft on the Enterprise Service Bus (ESB)

Scott Woodgate has blogged about a new Whitepaper that covers Microsoft’s offical position on Enterprise Service Bus (ESB).

While not yet available from MSDN, you can get the document at this link.

– Paul



Monday, August 01, 2005 7:55:50 PM UTC | # | Disclaimer | Comments [0] | 

Microsoft's - Connected Systems Division (CSD)

Microsoft's Distributed Systems Group (DSG) and the Business Process/Integration Division (BPID), have joined to form a new division,  Connected Systems Division (CSD).

Excellent stuff, especially with their offerings being so complimentary, it should lead to some exciting additions/synegries to the offerings and make the day job that bit easier.

– Paul


 | 
Monday, August 01, 2005 7:55:41 PM UTC | # | Disclaimer | Comments [0] | 
 Thursday, July 28, 2005

Going for a walkabout with - VB6, COM, COM+, Transactions and Indigo (Part 5 o f X)

To start off with a few examples, I’m going to be hosting the sample where I enable an COM+ Interface as a WAS/IIS hosted Indigo service.

To kick this off, you have to create a Virtual directory in IIS, which I have simply called “WAS_Hosted_Market”.

To Indigo Service enable an interface, you have to use the COMSvcConfig tool. While the tool does give you to enable all of the COM+ interfaces in one go, with a wildcard asterisk (“*”), I don’t think this is a good option to use, as you need to be explicit about what Interfaces you want to expose at the service boundary and determine which Interface (if any) are relevant. For example, the use of the wildcard asterisk (“*”) may attempt to expose system interfaces etc…. or others aspects that are not allowed .

For the sake of simplicity and just to get the ball running, I am going to use the “_COrders” interface that is in the “Market.COrders” component, which has only an “Add” method. In my opinion, in a real world application, I don’t think this would be a good method to exposed as an Indigo service operation at a Service Boundary, due to it being very CRUD like and also somewhat fine grained. I will use it for now due to its method signature, where all of the parameters are explicitly passed “ByVal”. This is important to note, as by default VB6 would implicitly pass values “ByRef” and therefore in a SO world, the implicit or explicit passing of Objects “ByRef” may not desirable or allowed.

To add the Interface, is as simple as the following (note that I have configure the COM+ app to be activated as a library application):

comsvcconfig /add application:market /interface:Market.COrders,_COrders /hosting:was /Webdirectory:root/WAS_Hosted_Market /MEX

and hey presto, you have 2 new files in the WAS_Hosted_Market virtual directory and  you will see that the following files were added, a web.config and a <class ID for COM+ interface explosed>.SVC. 

Since the MEX switch was used, you can browse to the service from your browser. The metadata publishing can be controlled/configured from the Web.Config, in the following section

<
behaviors>
      <behavior configurationName="ComServiceMexBehavior">
        <metadataPublishing enableGetWsdl="true" enableHelpPage="true"
          enableMetadataExchange="true" />
      </behavior>
</behaviors>

So when you browse to the file with the .SVC extension, e.g. http://localhost/WAS_Hosted_Market/23DF9857-7126-11D1-BDB2-00600807E871.svc/23DF9856-7126-11D1-BDB2-00600807E871, you will end up with the stanard help page.

And then to create a types proxy for the service  is simply a matter of using the SVCUtil and pointing it at the URI for the service.

VOILA!! a VB6 COM+ implementation consuming/producing WS-* on the wire, with ZERO code changes

Also, there are a few things I should call out:

– Because this example used the WAS inproc option (i.e. the COM+ applications activitaion is set to Library), the IIS 6 worker process  will be trying to load the typelib for the COM object and will fail due to the fact that it is running under the security context of a “Network Service”. So, you may have to give the “Network Service” account read permissions to the directory that contains the TLB.
– You can confirm that the VB code is running under the W3WP process in IIS, by looking in the component services manager and looking under running processes
– For an ES interface, the steps are almost the same, with the only additional step being that the assembly has to be in the GAC
– While the default binding is setup for you, i.e. WSProfile, you can use any standard (out of the box) binding or use a custom one. I haven’t tried all of them yet, but haven’t found one that breaks yet.
– SVCUtil only consumes MEX over HTTP at the moment, so that transport will have to be enabled.
– all of this is based on the Release Canidate of Beta 1. I haven’t gotton around to installing Beta 1 yet (opps)
– When you look at the default binding setup for you, it is configured to not allow Transaction context to flow, but this simple to change and is a matter of being explicit about what gets exposed

Overall pretty cool stuff and without any changes to the VB/COM implementation.
 

 – Paul

 

 

 


 |  |  |  |  |  |  |  | 
Thursday, July 28, 2005 4:19:23 PM UTC | # | Disclaimer | Comments [0] | 

Going for a walkabout with - VB6, COM, COM+, Transactions and Indigo (Part 4 o f X)

When it comes to the Indigo enabling of a COM+ Interface, you have 4 options. 3 of which are very automated and by automated I mean they setup the service contract for you, with an initial default configuration (i.e. the bindings etc..) which can be altered, but it also important to point out there is a 4th option requiring some manual handcrafting of code etc.., which I will cover later, as it is an advanced option.

I breakdown the 3 main/automated options that are based on the usage of the ComSvcConfig.exe tool in the following way:

/hosting:complus – This leverages the COM+ hosting process and therefore requires explicit application activation. i.e. the COM+ application must be a Server application, with the “Run as a NT service” enabled or perhaps manually started, with “Leave running when idle” enabled

/hosting:was – While in reality this is one option, I currently like to think of it as two distinct modes/options, as there are considerations with how the activation of the COM+ is configured.
The basics of this option is that the “Indigo” service for the Interface is now hosted by IIS rather than COM+. So for this option to be used, you obviously have to have a Web directory setup etc…
The reason that I like to think of this option as two distinct modes/options, is that there are differences to how this option works and it is dependant on the Activation setting for the COM+ application. When the COM+ app is configured to be a library, then IIS becomes the full/complete host (In-Proc hosted), but when the COM+ application is configured to be a server application, the COM+ application is Out-Proc, hosted by DLLHOST.EXE and therefore will incur the performance cost of cross process hops (i.e. marhsalling, context switching etc..) when messages arrive or are sent to/by the service contract that is exposed as a representation of a COM interface.
It is important to note that for either of these option for WAS hosted services, WAS will handle the activiation in both cases.

When it comes to the mapping of Indigo services to COM object, as pointed out in the current Indigo Beta 1 RC1 documentation that is online and available at this link,

When an interface on a COM+ component is exposed as a Web service, the specification and contract of these services are determined by an automatic mapping to be performed at application initialization time. The conceptual model for this mapping is as follows:

  • There is one service for each exposed COM class.
  • The contract for the service is derived directly from the selected component's interface definition.
  • The operations in that contract are derived directly from the methods on the component's interface definition.
  • The parameters for those operations are derived directly from the COM interop type corresponding to the component's method parameters
     

As one would expect when moving from a Distributed Object world, with distributed object references etc..; to a world of message orientation, with explicit declaration of schema and contract, there are going to be aspects of code that can not be handled in a automated fashion and/or cannot be handled at all, as it would require the sharing of class/implementation.

Example of these would include the following:

Some restrictions on the what can exposed as a Indigo Beta 1 RC1 service are as follows (from documentation at this link):

  • Interfaces that accept object references as parameters
  • Interfaces that accept types that are not compatible with the .NET Framework COM Interop conversions
  • Interfaces for applications that have application pooling enabled when hosted by COM+
  • Interfaces of components that are marked as "private" to the application
  • COM+ infrastructure interfaces
  • Interfaces from the system application
  • Interfaces from managed components that have not been added to the Global Assembly Cache
     

Moving on to some examples of exposing COM+ interface from the Market sample, as Indigo services ……………………….

 – Paul


 |  |  |  |  |  |  | 
Thursday, July 28, 2005 4:03:39 PM UTC | # | Disclaimer | Comments [0] | 

Going for a walkabout with - VB6, COM, COM+, Transactions and Indigo (Part 3 o f X)

So for the series I am going to be using the Market Sample.

To start off, you can get all of the details and code for the “Market Sample”  over here at this link.

When you have a look at this VB5 sample code from circa ‘98, you will notice that none of the objects are specifically designed to be MTS objects.

So, I have kicked off a new Virtual PC, that is running Windows 2003, as well as having Visual Studio 2005, SQL Server 2005, Indigo and VB6 installed. Wow, quite a nice mixture of technologies, don’t you think.

Anyway, about the sample code. As expected the code compiles, installed and works straight off when running on Windows 2003. The sample is composed of 4 main parts:

– a sample DB – that installed in SQL Server 2005 with little hassle and only a little tweaking
– a MTS (as it was then) application, that installs on COM+ 1.5 on Windows 2003 quite easily and zero problems
– a ASP scripted web – zero problems with getting it up and running
– a VB client that interacts directly with the COM+ tier – which works fine with no changes

I picked this particular example due to the way it leverages a number of communication channels (both browser and client based), as well as show off different levels of granularity (i.e. Submit order is a composite of 3 finer grained method calls into the same COM+ application). When you look at the code for the SubmitOrder method, you will see it is composed of method calls to the following:

 <VB code snippet>
  Price = Products.Purchase(Product, Quantity)
  Customers.Charge Customer, Price
  OrderNumber = Orders.Add(Customer, Product, Quantity, Price)
</VB code snippet>

In my opinion this is something to bear in mind when looking at COM+/ES code and what should be exposed at the Service Boundary in the Service-Oriented world. But I will comment on that a little later in the series. So moving swiftly on…….

There are a few other aspects of the sample code to bear in mind and warrent some attention. These mainly fall into the areas of layering of logic and transactional code. When you look at the sample web site, you will see two very distinct ways of achieving the same business functionality. These are SubmitOrder1.asp and SubmitOrder2.asp.

SubmitOrder1.asp implements the core of its functionality in the following way:

 <VB code snippet>
     Set Broker = Server.CreateObject("Market.CBroker") 
    Broker.SubmitOrder Customer, Product, Quantity, OrderStatus
</VB code snippet>

While SubmitOrder2.asp implements the core of its functionality in the following way:

<VB code snippet>
   Price = Products.Purchase(Product, Quantity)
   If Err.Number <> 0 Then bAborted = True

   If Not bAborted Then
      Customers.Charge Customer, Price
   End If
   If Err.Number <> 0 Then bAborted = True

   If Not bAborted Then
      OrderNumber = Orders.Add(Customer, Product, Quantity, Price)
   End If
</VB code snippet>

For certain, both are valid approached to achieving the same functionality, but it nicely brings up the issue of how COM objects in MTS/COM+ were always implictly/automatically exposed. While this issue is not as prevalent in the ES world, for COM objects that leverage COM+ it can result in layers of granularity being broken and/or if these COM+ components were being ran out-of-process, the performance of SubmitOrder2.asp would be considerable less, as it is more chatty. There are certainly many other aspects that needs to be considered when building a Service facade, but I thought before showing some of the Indigo COM/COM+ intergation features, that it would be useful to point out that the service enablement of an existing interface maynot be the right choice, as it maynot provide the right level of granularity and may make too many assumptions about its deployment environment or it consumers. Also, as pointed out in the original article, leveraging transactions around this functionality in a coarser grained method, i.e. SubmitOrder, makes the application logic cleaner in my view. 

So onto what is possible with the COM/COM+ intregration features of Indigo…. and the next posting…..

– Paul

 

 

 


 |  |  |  |  |  | 
Thursday, July 28, 2005 4:01:47 PM UTC | # | Disclaimer | Comments [0] | 
 Wednesday, July 27, 2005

Windows Vista - Developers Center and IT-Pro center go live

The Windows Vista Developer Center and IT-Pro center went live today and can be found at the following links:

http://msdn.microsoft.com/windowsvista/

http://www.microsoft.com/technet/windowsvista/default.mspx

Ciao,

– Paul


 | 
Wednesday, July 27, 2005 6:04:41 PM UTC | # | Disclaimer | Comments [0] |