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] | 

Windows Vista Beta 1 - Available for download to MSDN subscribers

Just checked and kicked off the download, Windows Vista Beta 1 is available to download to MSDN subscribers.

Ciao,

– Paul



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

WinFx Beta 1 - Released today

WinFx Beta 1 was released today and can be download from here.

This Beta1 release supports Visual Studio 2005 Beta2 and the .NET Framework 2.0 beta 2.  There is also an updated WinFX SDK, including documentation, samples and tools available for this release.

This Beta contains both WCF (aka “Indigo”) and WCP (aka “Avalon”).

And don’t forget these will work with Windows Server 2003 and Windows XP, as well as Windows Vista.

Enjoy!!

– Paul


 |  |  | 
Wednesday, July 27, 2005 5:24:43 PM UTC | # | Disclaimer | Comments [0] | 

Offical names for Indigo and Avalon............

From Vista Beta 1 Fact Sheet

<extract>

“Avalon” and “Indigo”

Windows Vista beta 1 also includes the first beta of Windows Presentation Foundation (formerly known by the code name “Avalon”) and Windows Communication Foundation (formerly known by the code name “Indigo”), which are part of the WinFX™ programming model. WinFX extends the Microsoft .NET Framework with classes for building new user interface experiences and advanced Web services. Together, they enable developers to build connected systems that take advantage of the processing power of the smart client, incorporate cutting-edge media and graphics, and communicate with other applications with improved security and reliability.

</extract>

More details for WCF can be found at, http://msdn.microsoft.com/windowsvista/connected/

and for WCP at http://msdn.microsoft.com/windowsvista/experience/

– Paul


 | 
Wednesday, July 27, 2005 4:47:56 PM UTC | # | Disclaimer | Comments [0] | 
 Friday, July 22, 2005
 Wednesday, July 20, 2005

Whitepaper - Developing Distributed Services Today

Richard Turner (a Product Manager in Microsoft's Web Services Strategy team), has published the first of a series of papers that provides guidance on how to best use Microsoft Web service and distributed systems technologies in order to build distributed, service-oriented systems using today's platform.

The first paper, “Developing Distributed Services Today”, can be now found on MSDN, at this link, with more on the way very soon.

A very good read and I would highly recommend.

– Paul

[updated link, as the paper has moved]

http://msdn.microsoft.com/webservices/choosing/default.aspx?pull=/library/en-us/dnwebsrv/html/dsgprescriptiveguidance.asp


 |  |  |  |  |  |  | 
Wednesday, July 20, 2005 9:06:27 PM UTC | # | Disclaimer | Comments [0] | 

Belfast - NIMTUG Meeting on the 25th - Extreme Programming with Sam Gentile

A big shout out to anyone in Belfast on the 25th, Sam Gentile is going to be giving a talk on Extreme Programming (XP) techniques.  Here is more information about the presentation and you can register for the event at this link, http://nimtug.org/25-july-2005.aspx

Summary

Extreme programming practices such as Refactoring, Unit Testing, and Continuous Integration have now become mainstream. This code-intensive session shows you to how to use XP practices with VS.NET 2003 and tools such as RefactorIt!, Nunit, NAnt, and CruiseControl.NET. We'll develop some code and use the tools to create unit tests, refactor, and automate the build.

– Paul



Wednesday, July 20, 2005 7:16:27 PM UTC | # | Disclaimer | Comments [1] | 
 Tuesday, July 19, 2005

Transaction Promotion and Delegation coming soon to ES Transaction in Whidbey

Many thanks to Mike Clake (a Lead SDE on the Indigo team), for following up in the comments, over on this entry.

In the comments, Mike mentions how there will be a QFE for Windows coming very soon that will enable Transaction delegation and promotion for Enterprise Services Transactions that involve SQL Server 2005. Very nice stuff indeed.

This is the same concepts as that provided by System.Transactions (i.e. the new assembly that is part of .NET v2.0) and is again a real good example of the great work in intergrating these 2 technologies together and making there use quite intuitive, seemless and powerful. Obviously kudos to the ADO.NET team as well.

In case you are not aware of what are the concepts of Transaction delegation and promotion, in relation to System.Transactions and obviously now Enterprise Services, the basic skinny is the following.

Within the Whidbey wave of technologies (specifically .NET 2.0 and SQL Server 2005), there is a new feature/concept of PSPE (Promotable Single Phase Enlistment). This occurs when the first enlistment of a durable resource manager takes place within the scope of a transaction and if the durable resource manager (SQL Server 2005 in this case) supports PSPE, the management of the Transaction will be delegated to the RM (which is SQL Server 2005 in this case). When this occurs, Microsoft’s DTC is not involved as the Transaction manager for the Transaction and hence maximimzing performance.

In the case that a second connection to a durable resource manager is created within the same scope/boundary for the Transaction, the Transaction will be promoted and its management will fallback to the fully featured distributed Transaction manager on the MS platform, which is the DTC. All of this occurs seemlessly and give you a “pay as you go performance” to the levels of Transaction management capabilities required to maintain the ACID properties of a Transaction.

While this is a quick intro./overview  to how Transaction promotion and delegation occurs, I better mention a few things. Firstly, PSPE is currently only support by SQL Server 2005.

Also, Transactions will be managed by the MSDTC in the following scenarios,
– The first durable resource manager enlisting in the Transaction does not support PSPE
– In the case where PSPE has taken place, but the Transaction is still active, Transaction promotion will occur when:
      – a second connection is made to a durable resource manager
      – When the Transaction is remoted into a different AppDomain. So this also obviously can mean across machines, which is quite an interesting scenario, in my opinion, but I still feel that ES/COM+ is a better option in the vast majority of scenarios.

Overall Transaction promotion and delegation coming to ES is a great addition to the stack in my opinion. I think it will ease some questions that folks have had about using ES, especially in the case of when you are using ES with only one durable store.

– Paul


 |  |  | 
Tuesday, July 19, 2005 7:35:16 PM UTC | # | Disclaimer | Comments [0] | 

Transaction Promotion And Delegation Coming Soon To ES Transactions In Whidbey

Many thanks to Mike Clake (a Lead SDE on the Indigo team), for following up in the comments, over on this entry.

In the comments, Mike mentions how there will be a QFE for Windows coming very soon that will enable Transaction delegation and promotion for Enterprise Services Transactions that involve SQL Server 2005. Very nice stuff indeed.

This is the same concepts as that provided by System.Transactions (i.e. the new assembly that is part of .NET v2.0) and is again a real good example of the great work in intergrating these 2 technologies together and making there use quite intuitive, seemless and powerful. Obviously kudos to the ADO.NET team as well.

In case you are not aware of what are the concepts of Transaction delegation and promotion, in relation to System.Transactions and obviously now Enterprise Services, the basic skinny is the following.

Within the Whidbey wave of technologies (specifically .NET 2.0 and SQL Server 2005), there is a new feature/concept of PSPE (Promotable Single Phase Enlistment). This occurs when the first enlistment of a durable resource manager takes place within the scope of a transaction and if the durable resource manager (SQL Server 2005 in this case) supports PSPE, the management of the Transaction will be delegated to the RM (which is SQL Server 2005 in this case). When this occurs, Microsoft’s DTC is not involved as the Transaction manager for the Transaction and hence maximimzing performance.

In the case that a second connection to a durable resource manager is created within the same scope/boundary for the Transaction, the Transaction will be promoted and its management will fallback to the fully featured distributed Transaction manager on the MS platform, which is the DTC. All of this occurs seemlessly and give you a “pay as you go performance” to the levels of Transaction management capabilities required to maintain the ACID properties of a Transaction.

While this is a quick intro./overview  to how Transaction promotion and delegation occurs, I better mention a few things. Firstly, PSPE is currently only support by SQL Server 2005.

Also, Transactions will be managed by the MSDTC in the following scenarios,
– The first durable resource manager enlisting in the Transaction does not support PSPE
– In the case where PSPE has taken place, but the Transaction is still active, Transaction promotion will occur when:
      – a second connection is made to a durable resource manager
      – When the Transaction is remoted into a different AppDomain. So this also obviously can mean across machines, which is quite an interesting scenario, in my opinion, but I still feel that ES/COM+ is a better option in the vast majority of scenarios.

Overall Transaction promotion and delegation coming to ES is a great addition to the stack in my opinion. I think it will ease some questions that folks have had about using ES, especially in the case of when you are using ES with only one durable store.

– Paul


 | 
Tuesday, July 19, 2005 1:41:15 PM UTC | # | Disclaimer | Comments [0] | 
 Monday, July 18, 2005

PDC '05 Early bird discounts - Extended till July 30th

Early Bird pricing for PDC05 has been extended until July 30th. That 15% off the list price.

You can register for the event at this link.

– Paul



Monday, July 18, 2005 6:50:13 PM UTC | # | Disclaimer | Comments [0] | 
 Thursday, July 14, 2005

PDC 05 Abstracts Now Live

The timing is quite good, as tomorrow is the last day for the $300 discount for the PDC registration!. You can have a look at the abstracts at this link.

The sessions look very interesting, with over 20 session so far that talk about Indigo, including:

  • IIS and Indigo: Hosting Indigo Services
  • Indigo: A Deep Dive into Best Practices Using Indigo
  • Indigo: A Deep Dive into Extending the Service Model Layer
  • Indigo: A Deep Dive into Extensions for Security and Identity
  • Indigo: A Deep Dive into Extending the Channel Layer
  • plus many more

Also there is a few sessions on Transactions, including a session on TxF (Transacted Files) and TxR (Transacted Registry) which should be very interesting.

As well as lots of sessions  on IIS7, IE7, Avalon etc…

And as BradA has pointed out, there is also these sessions,

C#: Future Directions in Language Innovation from Anders Hejlsberg

-          if you thought C# 2.0 was cool.. check out the great stuff here… Anders has been hard at work over the last year or so.. You will like what you see..

 

CLR: Writing a Managed Script Compiler in One Hour

-          For the pure geek in you… I know you have always wanted to bang out your own language.. now you can! 

 

The .NET Language Integrated Query Framework: An Overview
Using the .NET Language Integrated Query Framework with Relational Data

Using the .NET Language Integrated Query Framework with XML Data

 

-          this is a great set of talks… if you are building apps that use data (isn’t that all of us) you don’t want to miss this.

 

Visual Basic: Future Directions in Language Innovation

-          I love the new VB stuff I am seeing (post Whidbey)… it really gets to the heart of what VB is…

 

Avalon: Using Data in Your Avalon Applications: XML, Indigo, ADO.NET and More

-          I love these better together sessions… this one will not disappoint.

 

Longhorn: Building RSS Enabled Applications

-          What blogger wouldn’t love it… RSS everywhere, the dream is coming true!

 

 

I hope its a big room for Anders talk, as it is certainly going to be a packed house.

 

So go register, you know you want to!

 

Ciao,

– Paul



Thursday, July 14, 2005 8:55:06 AM UTC | # | Disclaimer | Comments [0] | 
 Wednesday, July 13, 2005

XP SP2 distributions pass 200 million

As always, Steve Bink is watching Microsoft like a hawk and comments how Mike Nash mentioned during his keynote at the MS partner conference that Microsoft distributed more than 218 million copies of Windows XP Service Pack 2.

I was wondering why my SP2 referral traffic had slowed down a bit. It would be brillant if folks were aware of all of the changes, god knows there is enough material out there, but I think its not really over yet, as I still getting a drip feed of email, calls etc.. on the this and this is not even counting the small quantities of W2K3 SP1 traffic I see.

When W2K3 SP1 revs up, this will be interesting, as it will hit the a whole new dimension, including the server upgrade, but also the dev. workstation based on W2K and deployed on servers with W2K3 with SP1. Microsoft switching from a “Its on, out of the box” to a “its off and changes, out of the box” is a message not everyone knows, no matter how much content they push out, ah well, what can you do!

– Paul

 



Wednesday, July 13, 2005 9:56:09 PM UTC | # | Disclaimer | Comments [0] | 

Going for a walkabout with - VB6, COM, COM+, Transactions and Indigo (Part 2 of X)

So what samples should I use? That is the question? I would love to hear some feedback on this, so please drop a comment below or shot me an email.

I guess to start off with here is the dilemma and what I am somewhat curious to know from folks!  What is the MS sample that best reflects how you have thought about building MTS/COM+ systems when you have built them or are currently building them or maintaining them now, albeit in the MTS/COM+ flavour or COM+/ES flavour.

To show off the COM/COM+ intergration feature in Indigo RC (or CTP ) BETA1, obviously I have to show off some VB6 (or some COM implementation) code and the code has to be tiered or at the least distributed in some fashion. And most important of all, has to use Transactions in some way, as I particularly like this feature and to show this feature off, with WS-AtomicTransactions and Transaction flow.

Writing my own VB 6 code was my initial thought, but I think the sample would possibly look a little fake and possible look like I designed the code a certain way. So I have been rooting around the samples that the big house (i.e. Microsoft) produced way back in circa. ‘96 to ‘98, to illustrate some key points about SO and obviously Indigo.

So, back in the great ol’ days of ‘96 or so, the NT Option pack includes the following MTS samples, with clients (some ASP based, some VB client, some with both):

  • Benefit
  • ExAir
  • Flight
  • Sample Bank (oh boy, if only banking systems were that easy)
  • TakeANumber
  • Tic-Tac-Toe

I have been mulling them over, and it looks like “Sample Bank” possibly would be a good example ,what do ya think?

Currently, I’m not so sure if I should use any of them, as none of them really seem to reflect the many implementations I have worked on in the past and I think they will be a little limitiing in showing some of the Indigo features off, as well as some layering and tiering possible issues!!

This “Market” sample from ‘98, that was published on MSJ (Now, the MSDN Magazine), which you can find here; is one that I think has the most to offer, as it has the most layers and communication channels. Also, gives me the most flexibility to show how you can augment a VB6 COM+/MTS Interface (with no code changes), and evolve interfaces so that they can leverage aspects such as DataContract and MessageContract?

The reason I ask, is that folks have suggested to me that most folks would be familar with the “Sample Bank”, but I think that “Market” has more legs to it and can be used to leverage more.

For example, without changing code, I can extend a method like -

Function SubmitOrder(ByVal Customer As String, ByVal Product As String, ByVal Quantity As Long, ByRef OrderStatus As String) As Long

and slowly evolve a service boundary with Indigo’s COM/COM+ intergation features, and end up with an Indigo contract (and lovely Service Boundary) that could look something like this -

 [ServiceContract(Namespace="Samples.COM.IntergrationFeatures")]
public interface IMarket
{
    [OperationContract]
    OrderStatus SubmitOrder(OrderDetails)
 }

[DataContract]
public class OrderDetails
{
    [DataMember]
    public string Customer;
    [DataMember]
    public string Product;
    [DataMember]
    public string Product;
}
[DataContract]
public class OrderStatus
{
    [DataMember]
    public string Status;
}

And then use different bindings and protocols (such as WS-Profile, RM, etc..)…… as well as showing multiple contracts into the same system.

Thoughts? All suggestions are welcome. I realise “Sample Bank” would be most widely known by VB folks, but I think you can see my point about “Market sample” and showing all of the feature set, in somewhat of an unusual way. Anyway the sample is over 7+ years old, so I think I should be safe, even if it is not the most widely known and anyway, Microsoft will probably use the “Sample Bank”  as they have in the past.

Ciao,

– Paul


 


 |  |  |  |  |  | 
Wednesday, July 13, 2005 6:11:15 PM UTC | # | Disclaimer | Comments [0] | 

Going for a walkabout with - VB6, COM, COM+, Transactions and Indigo (Part 1 of X)

Ever time I work with the current Indigo bits, I am always continously amazed with the excellence in engineering and design behind it. With such a great extensibility model, a clear demarcation of local and distributed behaviors, expilict design time declarcations of binding requirements for communications to take place successfully, the explict nature in exposing operations and scheme through contracts and the powerful, yet simply elegant layering of the programming model; all of these provides a great framework for building distributed systems, whether leveraged in greenfield or brownfield scenarios.

One of the aspects that made my jaw drop, was when I first saw the COM & COM+ intergration featureset of Indigo in a demo that I saw a while back. The demo showed a MTS application orginally built in circa ‘96 (with no changes to the codebase and used only the binary and TLB), and it showed the “Indigo” enabling of some of the Interfaces so that they could speak WS-* on the wire, WOW!

During my usergroup sessions on Indigo a few weeks ago (in Cork and Belfast but not the Indigo session in Dublin for some reason, sorry! I revised the slide deck a little), I gave this particular feature set  a quick mention and gave an overview of the COM(+) intergration features and the DTC talking WS-AtomicTransaction; and it got folks very interested, and they duly followed up afterwards for more information on what is possible. Overall it seems to resonate very well with folks; as it answers the big question of  how does it play with the stuff I have today, “as we have a little of this and a little of that”, which has developed over time.

So far, my feedback from the sessions fits into two buckets, those with older/current existing MS tech. stack based solutions and those with solutions not based on MS tech. stacks. For this series I will focus on those with MS stacks that are older/current, but some details and possibilities for solutions based on non-MS based tech stacks will emerge and be interwoven in the blog series and this is especially for the use case of Transaction context flowing between callee and caller (or vice versa), as well as all of  WS-* protocols.

When it comes to the older/current existing MS tech. stacks, I guess it is fair to say that not every VB6 application is going to be migrated to the .NET goodness in the long run for different reasons. In my opinion, it is a shame really, as the release of Whidbey (the codename for the next version of .NET, which is offically titled .NET 2.0 when released) in Nov. of this year, is Version 3 of .NET (i.e. .NET 1.0 and .NET 1.1, were significant releases after all) and certainly the level of productivity, performance and scalability enhancements that has occured in the Framework and CLR over the last 5 years has been very, very significant. All of these bring great leaps in performance, scalability and performance, and this is before I even mention how intelligent, productive and all encompassing the Visual Studio suite has become with the upcoming release of Whidbey. I won’t delve any further in this space, but software factories, DSL’s, Visual Studio Team System  are areas that warrent much attention in my view.

So while everyone is looking forward, what about the systems that are live and in production today. What about VB6, ES, COM+, MTS, etc… With so many distributed systems already in place today, it raises the question what can be done with these systems in the Indigo world or even more so, when migrating these systems now, what technologies are out there and what needs to be thought about? As I have covered ASMX, Remoting and MSMQ in the sessions, I thought I would focus on systems that don’t use these particular technologies from MS and delve into some of the others.

When it comes to the others, I think the VB6 developed solutions would be an interesting topic to cover. This is especially the case when it comes to distributed applications that have been developed over the last 10 years or so on the Microsoft platform, back in the days when MTS was king or its current incarnations of COM+/ES. If doing the dual movement, from MTS to COM+ (especially COM+ 1.5 on Windows 2003) and VB6 to .NET, it is really amazing the performance, availability, scalability and increased maintainability (from a dev and IT-Pro perspective) that can be achieved when some re-designing when migrating a code base. Obviously the current wave of innovation will possibly overshadow some of the innvovations from the recent past, but innovations done as recently as 2–3 years ago are as important today, as they were the day they were released.

Taking for example, COM+ 1.5, you have a very comprehensive set of features that increase the maintainability of COM+ applications, such as:
– application recycling
– component aliasing
– SxS, which is side by side assemblies, i.e. multiple versions of Dll’s on the one box, which is a very useful feature when consolidating apps onto less server tin
– marking of components as private, therefore being explicit about what is exposed
– better debug capabilities
– etc…. 

(For all a good overview of the goodness in Enterprise Services and COM+1.5 architecture this link is very useful, in describing the all of the features)
(also for all things COM+ 1.5, this link is useful)
(and for all things Enterprise Services, this link is useful)

And when you combine this with the comprehensive framework of class libraries, with the powerful runtime and development environment of .NET, the performance and maintainability of applications is ever increased.

With so much emphasis being placed on Web Services over the last few years and today on SO and SOA, it raises the question what is possible with existing VB6, COM, COM+, ES applications/assets and what possibilities exist to leverage them and bring them into the new evolutionary world of SO. Perhaps even starting to do so today, but if this is not possible what possibilities exist in the Indigo timeframe? Isn’t Indigo just only about Web Services and  SO? Well, it depends on what you mean by Web Services and SO?

I currently see SO as being about a design philisophy which you can merge with your own thought processes for designing better distributed systems and it assists with what best practices needs to be thought about when building system today, when making them loosely coupled, agile, reusuable, scalable etc.. and more resilent to change and changing requirments. When it comes to Web Services, at its inception it was mainly focused on being a “port 80” friendly way of making remote procedural calls with a particular text based encoding. Since then it has evolved to its current point where it is now more focused on how to make Services communicate, this in my view makes the “Web” moniker a subset and not a superset of the capabilities it offers. Currently, (“Web”/) Services has evolved to a point where it can be used to devise the fundamental unit of transmission (i.e. a message), how that message is strucutured (i.e. the infoset), how that message is encoded, how it is versioned; and through its strucutured messaging approach allows for the composability of protocol information to be easily factored into the unit of transmission. With all of this in mind, as I currently like to see it, Indigo as a communication/messaging/V.Next framework , allows you to leverage the technical capabilities of (“Web”/) Services and the design philisophy of SO in a far easier way that is currently available to us today, but in saying that, much of the analysis, design and implementation of Service Orientation can be done with todays technologies, to create Service facades that are loosely coupled, more coarser grained, pass messages and more resilent to change and changing requirments. One of the key aspects of Indigo, is that it leverages key standards and protocols, very easily caters for new additions and does not mandate a particular calling convention or Message Exchange pattern, transport, or encoding. A good illustration of this, is that with one implementation, you can have multiple contracts developed into an implementation; and at deployment time, can have multiple bindings to different transports and encoding, protocols and distributed behaviors (such as session, flow, context, transaction, etc..),  maximising the reach, agility and reusability of an implementation, while allowing those that consume the service offered by the implementation to be abstracted from any underlying changes that may occur in the actual implementation but not the facade.

When it comes to VB6 implemented distributed applications (and those based on DCOM or other technologies based on the RPC paradigm of communication), I think it is fair to say that by and large these would be tighly coupled systems, like their peer systems based on other distributed object technologies. In general they are tighly coupled from the perspective of a number of high level concerns, such as requiring implementation to be shared, wire/protocol being used, assumptions about the distributed enviornment between them and the time (responsiveness, latency, always running/connected/available) and space (near or far, security, network topology, etc..)  properties of the overall environment and the systems they interact with. All of these aspects of distributed object/component technology
Obviously with systems based on the design philosophy of distributed objects, the cleaving apart or cleaving together of enough functionality to graft a service facade onto the implementation with sufficent levels of granulairty is not an easy endeavor, and in my view is very rarely as simple as “Web Services” enabling of existing interfaces in an existing system. Certainly “Web services”, in the form of ASMX etc.. provides some of the base plumbing to tactically create a service facade into an existing implementation, but only after some analysis of the system and determining what coarsed grained funtionality can be enabled in a loosely coupled, message based service and can be leveraged by new and existing systems, by exposing a composable unit of functionality at an endpoint(s). When it comes to the VB6 and/or COM based implementations, there is lots of things to consider from a technology perspective, when looking to leverage these systems and evolve them into the Service Oriented world.

To start with, if the application is implemented with VB6, I would strongly suggest moving the codebase to .NET and looking at redesigning some/all of the application, to leverage the fact that the .NET environment has a powerful framework and also, when it comes to Enterprise Services, VB.NET is able to leverage all of the COM+ runtime environment.

When considering the options of whether to still use the COM+ environment when moving code to .NET, Enterprise Services may or may not be a relevant option for you. Enterprise Services is COM+ from the perspective of .NET and is an almost parrallel stack with little interop between the two for maximium performance, but some necessary interop for max. flexibiliy/agility/consistency. ES provides full and complete access to the COM+ feature set, as .NET does not have STA constraints and/or the thread affinity issues that the VB runtime had, so all of those options that are available in the COM+ runtime are available to you and you are no longer restricted because of the thread affinity world of VB6, which was severely limiting to the VB developer. As well as this it has many other features worth considering:
– ES can be easily accessed from an ASMX app. Allowing you to create a service facade that is loosely coupled, message oriented and verionable; while also allowing you to create one or more communications channel for max interop, reach and flexibility.
– It still gives you flexibility in deployment scenarios (when applying layers over tiers, ideal for ISV’s and solutions that target multiple deployment scenarios). While this option is very much distributed object based, IMHO, today it is sometimes necessary due to DCOM’s protocol features/performance but obviously it introduces tightly coupling between the layers when distributed across tiers. So (with no bun intended), a service facade would need to be created into the layers concerned, as the sphere of control not requires that the automous unit deployed/versioned etc.. is composed of more than one tier and that the Service Boundary is that which is the entry point into each tier or in the more likely case, is the entry point into a composite of the tiers.
– It still has the fastest protocol on the wire from MS, i.e.DCOM, which is not surprising with over 10+ years of engineering effort and optimisation. While this is relevant to us today, it is important to apprciate that DCOM is a monlithic protocol that is only suitable for scenarios that are within a Service Boundary, where it is neccessary to have
– Has a whole host of security options for the wire format and as well as the authorization/authentication for the application.
– Eases the effort required for implementing distributed transactions.
– Object pooling, JITA, Object throttling, host startup and idle time management, granular security, loosely coupled events, asynchronous disconnected calls, administrative tools and application activation
– Allows you to be more explicit between what is exposed between your layers/tiers, in that not every object is implicitly exposed by the ES application, unlike VB6/COM developed objects
– Certain features, such as Transactions be accessed directly from within ASMX, without the need for a full serviced component to be created
– Code can be easily migrated to Indigo if so desired. There are few exceptions to this.
– Easy intergration with Indigo. This obviously applies to COM also, which I will cover later.

When it comes to the move from COM+ to ES, another consideration is for the use case, where you are using COM+ only for Transactions (be they distributed or local, to an execution context). .NET V2.0 introduces the System.Transactions namespace and this is a very innvovation piece of technology that is introduced into the upcoming version of the framework, which I personally feel is the most innvovative (if not one of the top five) additions to the framework in this upcoming release. When I think of System.Transactions, I like to think of it from the perspective of the levels of innovation it brings to transaction processing, like that of its predecessor, MTS. When MTS first came out, it provided us with a platform for building very scalable distributed systems;  with its RAD and clean techniques of ensuring consistency when accessing one or more data servers (aka, resource managers, such as SQL Server etc..) through declarative attributes which enlisted hosting environment/container services – was the first mass distributed commerical hosting container - and had a profound impact on how we have developed software for the last 10 years.While there is much written about how MTS/COM+ was not really about transactions, but more about building very scalable distributed object/component solutions, I do think it is fair to say its’ introduction into the

In my view, Transaction services from the hosting container became one of the primary uses of MTS/COM+, while the archiecture was more about building scalable systems and instance management than it was about Transactions. When it comes to migrating Transactional functionality, the System.Transactions namespace maybe something you may want to consider, depending on whether to use ES and/or ES for Transactions and what is required for that layer/tier.
System.Transactions offers you implicit transactions, by encapsulating a code block with a Transaction context, but in a hosting container agnostic way, while being very well intergrated with COM+/ES/ServiceDomain. It also provides great performance improvements, through transaction delegation (a “pay as you go performance”, when using only one connection to SQL Server 2005, the DTC is not involved) and transaction promotion will seemlessly occur when a second connection to a durable resource manager occurs within the scope of the transaction (Note, Transaction promotion and delegation will also be available for ES transactions soon). There are many other capabilities to Sys.Tx, because of its independence of instance management and hosting container, it is will worth a look. When considering this option, it maybe an option to place all of your layers in ASMX, create service facades into them and leverage either Transactions at the ASMX level and/or leverage transactions at the code block level. This comes with the obvious caveat that security context etc.. will not flow across service facades or between tiers and this is something to bear in mind, as this is offered by ES/COM+. And also Transaction context will not flow across Service facade, if this functionality is required.

While all of this is great stuff, but if some/none of these options are not possible for you to do right now or in the short/medium term due to some constraints, it does raise the question about what is possible with VB6/COM/COM+/ES applications, in relation to Indigo?

Obviously, there will be offical papers on these topics from the Indigo team in the pipeline when Indigo gets nearer to RTM, but in the mean time, with the offical Beta 1 of Indigo not too far away, I thought I would blog a few entries on the COM/COM+ intergration features in the current Release Candidate of Beta 1, as I find them quite useful to know.

So thats if for now. For the next entry, I will cover the little apps I will use to show the features. So expect some VBA, VB6, VBScript and of course .NET. 

I guess before I finish this entry, I will mention that there is the obvious caveat that these are still pre-beta features, so are subject to possible changes etc…. And also, much of what can be done with the Indigo COM/COM+ integration feature set can be done with today’s technologies (with the exception of some of the WS-* protocols), while it maybe a little more work, cracking open mid-tier apps (not necessarily the code, but the tier), analysing the interfaces and designing/implementing/publishing a coarser grained service facade is possible with ASMX/WSE/MSMQ.

The COM/COM+ intergration features of Indigo expands the possibilities in leveraging exisiting assets in your orgainsation, but I feel this should not hold you back from looking at exisiting systems that you have today; performing some Service Oriented analysis on them and leverage them to develop composable unit of functionality.

Rgds,

Paul

ps

Obviously where I use an example of VB6/COM/COM+  in this blog series, these also apply to solutions implemented with Delphi, VC++, J++, etc… its all about the COM binary dll/exe (and its VTable) and the TLB (its metadata) and the very clever internal meta engine of Indigo.


 |  |  |  |  |  |  | 
Wednesday, July 13, 2005 5:19:58 PM UTC | # | Disclaimer | Comments [7] | 
 Monday, July 11, 2005

TechEd 2005 – What’s The Message This Year?

My good friend, Marcus, has a great post (as always), on some observations on TechEd in Europe this year. Really good read in my view.

Overall, I’m 99% in agreement with his posting; but just a little comment about COM+/DTC transactions!

Its no biggy, as I beleive he is quite right that the service boundary (or as a i term a service boundary, as a being a possible big “S”, small “s”, “web” service, distributed component boundary or in the default/generic case, just a plain ol’ Endpoint), is not something that a transaction should cross?? Except in the case of the small “s” and/or component boundary, which is the case that we are most familar with, right.

Wow, so that means that distributed 2PC (and the COM+ transactions) is dead? IMHO. absolutely not! and I’m going to cover my thoughts on this in the blog during the week, once I get my travelling/schedule a little more settled and jot down a few thoughts on the DTC talking WS-AtomicTransactions and the Indigo intergration with COM and COM+, for example getting VB6 (or VBA for that matter) to talk WS-* on the wire, or having new composites leveraging VB6 written COM+/MTS apps and having Tx context flow over the wire.

Since I think that COM+, Indigo and Transactions are a key area in illustrating what exactly is a Service Boundary (with a big “S”)  – which may or may not be implemented with “web” services, I currently think it nicely brings up the scenarios of when are distributed/global transactions appropiate across machine boundaries and some of the  subsequent problems and considerations when looking at distributed 2PC in an “inner” service boundary and the “outer” Service Boundary.

For an outer service boundary, transactions should really never flow across the outer boundaries, as you are introducing a requirement for a presiding authority into the environment outside of the outer boundary, i.e. a Transaction Manager, and a transaction boundary/topology will span across your outer service boundary, and hence the assumptions you will have been made about the consumer of the service, maynot hold true for the consumer of the service; as trust, location etc.. boundaries may change and hence cause issues. Also, for performance considerations,  D2PC is best done in a near scenario (as in, on the same subnet, with no level 2 or level 3 equipment inbetween the parties in the Tx, if possible), as for the the far scenario (over space especially, but also for time) D2PC is just not practical, as the amount of inherent latency will aggregate into an overall latency in the system that will make the performance of D2PC very poor, as well as leaving the communication between the parties in a Tx being susceptal to issues of reliability, security, trust, availability, scalabliity etc….

Currently, I like to use examples that I know from the GDS industury and as they in my view give the most fidelity correct examples of how SO and SOA can be faciliated, be it “mom and pop” or global? And this is especially the case when it comes to transactions and how to deal with them in an architecture and an Architecture and at the Service Boundary and at a service boundary!

For the “inner” service boundary, transactions can flow, it typically depends on what is the autonmous unit deployed and how these tiers are effected by org./trust/team/dept. boundaries. If the “inner” and “outer” boundary are the same, then Tx flow should not really occur, but if the “inner” service is one of many “inner” services, there is a good chance that the operations exposed by these tiers (aka “inner” services) may need to be grouped together into a unit of work, so that the “outer” boundary, which is the composite layer (and more coarse grained), will be able to leverage D2PC. In this case it would be the “outer” service boundary that is the composable unit of functionality and reusable within the IT portfolio of (sub-)business processes. This comes with the caveat that the automonous service is now composed of multi “inner” services that are clustered (i.e. grouped) together to form the composite that is the “outer” Service Boundary, and it is the “Outer” service that gets reused.

– Paul

 


 |  |  | 
Monday, July 11, 2005 2:06:13 AM UTC | # | Disclaimer | Comments [0] | 
 Wednesday, July 06, 2005

Indigo: What is the Windows Application Pack (WAP)?

[Update]

The offical names for Indigo and Avalon are …..

 

In David Pallmann’s  great article on “Programming Indigo: The Programming Model”, he elaborates on what is the Windows Application Pack (WAP).

<extract>
Indigo is part of WinFX, the managed code framework for Windows development. It includes Indigo as well as other technologies. WinFX will be included with the "Longhorn" edition of Windows but is also available as a download for supported operating systems as part of WAP.

You can check whether WAP is installed (and its version, if it is installed) by opening Add Or Remove Programs in Control Panel and examining the list of installed software.

</extract>

Looks like the downstreamed vehicle has been offically christened and Its the first time (and google seems to be backing me up) that I have seen a name being given to the downstreamed vehicle of WinFx.

– Paul


 | 
Wednesday, July 06, 2005 7:36:01 PM UTC | # | Disclaimer | Comments [0] | 

Programming Indigo: Contracts

Another article from David Pallmann ( a former member of the Indigo team), has just published on MSDN, which is an extract from his upcoming book on Indigo.

You can find the Programming Indigo: Contracts  article at this link

– Paul


 |