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

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