[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Stateless Vs Stateful Model -> COM Vs CORBA?



In the last presentation of mine(ORB Products-A Comparative Analysis), i
had raised a question about the significance of choosing a stateful model
(as in CORBA) or a stateless model (COM/DCOM). I think in the following
article I have a pretty good answer. Roger Sessions worked for IBM for
a long time(11 yrs)  and is the achitect of the Persistant Object Service.
(which was subsequently declared unimplementable by most vendors. In fact
the Persistant State Service is being worked on, to replace POS I guess.)
He subsequently moved to the Microsoft. You might guess the reason, but
his articles always provoke pro-CORBA experts. His other articles can be
found at www.objectwatch.com. I must say, they are very interesting.

Jinny.
PS:You must read Scott Adams reply, that follows Roger Session's. It
reveals more about the differences between the two models.

------------------------------------------------------------------------------
 - Roger Sessions
***************************************************
MAIN STORY: MATTERS OF STATE
When I worked at IBM Austin, my desk was a mess. Not any more. Now 
when I leave my desk at the ObjectWatch, Inc. headquarters, I don't 
leave so much as a pencil. Even if stepping out for only an hour, I leave 
that desk spotless.

It's not that I have turned over a new leaf. My wife will gladly tell that I 
still leave things everywhere. After 20 years of marriage, I have been 
somewhat domesticated, but my natural inclination is still to pick it up 
tomorrow. Or the next day. Or whenever. 

So what has happened between IBM and ObjectWatch to make my desk 
the clean machine of Austin? It has nothing to do with a change in me. It 
doesn't even have much to do with the change in my desk. It has to do 
with a change in my desk algorithm. Which, by the way, has changed not 
only my ideas about desks, but also my ideas about the scalability of 
distributed components. But we are getting ahead of the story.  Let me 
first tell you what I have learned about desks.

When I worked at IBM Austin, I had my very own desk in a very large 
building filled with very large number of very similar desks. Each one of 
those desks had one and only one individual assigned to that desk. Since 
a large number of individuals worked in that building (about 500), a 
large number of desks were needed. Hence the building had to be very 
large. Desks take up space.

The building I work in today also hosts about 500 people. But it is very 
small. In fact, I would say that it would get crowded if more than 50 
people showed up at the same time. Fortunately they rarely do.

In order to understand this system, you need to know a little about how 
ObjectWatch works. First of all, ObjectWatch is lean and mean. We only 
have two employees: Janet and me. Janet is lean. I am mean. We are too 
cheap to rent a fancy shmancy office building like IBM. So we use a 
virtual office. We rarely see each other, but we are in constant 
communication through either email, cell phones, or both. 

When we do meet, we do so in the world wide headquarters of 
ObjectWatch, Inc, namely, the Starbucks at 183 and Lakecreek in Austin, 
Texas. We grab whatever table is available for as long as we need it. 
While we are using that table, we have it cluttered to the hilt. My laptop, 
Janet's palm top, note pads, cell phones, my Dopio Macchiato, Janet's 
Mocha Freeze, a few pastries. You wouldn't think you could get so much 
junk on one little table at Starbucks.

When we are done, we are gone. My laptop is back in my backpack. 
Janet's palm top is in her purse. Our Dopio Macchiato, Mocha Freeze, 
and pastries are all enjoying their new homes. Not a trace is left behind. 
Two minutes after we leave, that same table may be occupied by another 
world wide corporate headquarters making their own plans for global 
conquest.

So what is the difference between IBM, which requires a six story 
building to house 500 people, and Starbucks, which requires less than 
1000 square feet to house the same number? I assure you, it has nothing 
to do with the workload of the people. At least as much work is 
accomplished each day at Starbucks as is in my old building at IBM. It 
also has nothing to do with the amount of time people actually spent at 
their desks. There were many days at IBM when I spent less time at my 
desk than I spend today working at Starbucks.

The difference has to do with desk policy. IBM let me keep whatever I 
want on my desk and as much as I wanted. This had two important 
results. First, when I needed a desk, there was only one that would 
suffice. Second, when somebody else needed a desk, they couldn't use 
mine, because it was filled with my stuff, even if I was off on a two week 
vacation. My desk was a permanent monument to the current state of my 
work in progress. 

Starbucks does not put up with this. They follow the clean sweep 
algorithm. When I leave Starbucks, anything I leave on "my" desk 
immediately goes in the garbage. Starbucks doesn't distinguish between 
muffins and manuscripts, as happy to sweep away the leftover crumbs 
and the detailed notes for my next book. I'm gone, it's gone. If I want to 
save the state of my work in progress at Starbucks, I either carry it with 
me or I find another home for it.

The difference between IBM and Starbucks therefore comes down to a 
matter of state. Of more specifically, how state is managed. 

Because the desks at IBM maintain work state, they are necessarily hard 
wired to specific individuals. And because they are hard wired, IBM 
needs a building large enough to house all of the desks of all of the 
individuals that work at IBM, regardless of how many (or how few) are 
working at any given moment.

Because the desks at Starbucks do not maintain work state, they can 
freely be assigned to the next person that walks in the door. Because they 
can be freely assigned, Starbucks only needs a building large enough to 
house all of the individuals that will work at Starbucks at any one time, 
which, like IBM, is a small fraction of the total individuals who actually 
work there.

Notice that this does say that there is there is a "state" of my workload at 
IBM, and not at Starbucks. When I leave Starbucks, my backpack is 
filled with the state of my workload. It is only to say that at Starbucks, 
the state doesn't get left on the desk.  Or if it does, it won't be there when 
I return.

Let's say that the person who uses a desk is called a desk client. And let's 
make the following assumptions:
1. Both Starbucks and IBM need to service 500 desk clients.
2. At both Starbucks and IBM, only 50 (10 percent) are actually 
physically using their desk at any one time.
3. A desk takes up 25 square feet of space.
4. Building costs in Austin are about $100 per square foot.

The cost per desk is the same for both Starbucks and IBM: $2,500 (1 
desk X 25 square feet per desk X $100 per square foot). But at Starbucks, 
that $2,500 will house 10 clients and the cost per client is only $250. At 
IBM, that $2,500 will house exactly one client, so the cost per client is 
the full $2,500. So IBM will need a building costing $1,250,000 for its 
500 clients, while Starbucks will make due with only $125,000.

As you can see, Starbucks is able to use their building funds much more 
efficiently than can IBM. In general, the increase in efficiency is given 
by these straightforward formulae:

N (increase in efficiency)
M (fraction of actual desk usage)
N = 1/M

The difference in the number of clients that can be supported is 
Cs (Number of clients supported in Starbucks model)
Ci (Number of clients supported in IBM model)
Cs = Ci X N (from previous equation)

So if a typical client actually uses a desk 1/4 of the time, then M is 1/4 
and N is 4, so Starbucks is 4 times as efficient. If IBM can support 1000 
clients, then for the same price, Starbucks can support 4000 clients.

What exactly makes Starbucks run so much more efficiently than IBM? 
Two things. One we have already discussed, and that is the clean desk 
policy: leave nothing on the desk, expect nothing on it when you return. 
But one other thing is required: an infrastructure that efficiently allocates 
desks. 

Actually, if the truth be known, IBM also had a clean desk policy. At 
IBM, you could receive the horrid "security violation" for leaving stuff 
on your desk. I once even received a "security violation" for locking the 
door to my office. Why, you might ask, is locking your door a security 
violation? Because then Security can't get into your office to see if there 
is stuff on your desk!

However I quickly discovered that nobody cared about security 
violations. So I just left stuff on my desk, and let the security violations 
pile up. In fact, some of the stuff on my desk was old security violations. 
The bottom line was that I knew that even though IBM had a clean desk 
policy, it had no infrastructure to allocate desks. Whereas Starbucks does 
have such a structure. Their policy is simple: sit down, anyplace you 
want, anything you see, toss in the garbage. That is a serious policy. Not 
to be toyed with.

In situations where M (the fraction of time client uses desk) gets very 
small, the difference between Cs (the number of clients supportable in 
the Starbucks model) and Ci (the number of clients supportable in the 
IBM model) can become huge.

One example of such a situation is in Distributed Component Systems 
(DCS). In fact, this basic model has a huge impact on the scalability of 
such systems. Let's consider the architecture of a typical DCS.

A DCS is usually three tiers. The client tier consists of machines running 
applications that are hooked up, directly or indirectly, to human beings. 
The middle tier consists of business logic that is packaged using 
component technology, such as OMG's CORBA or Microsoft's 
COM/DCOM.  The third tier consists of database machines, machines 
that are extremely competent in storing and managing the flow of data.

The client machine is going to be acquiring the information needed to 
process a business request. Once that request is ready, it sends that 
request down to a component instance living on the middle tier. The 
component logic then processes the request and returns the resulting 
information back to the client.

I usually think of components as like software gnomes. A certain type of 
software gnomes can do things for you. For example, a credit card 
management gnome can process credit card requests. You find a 
particular credit card management gnome, say Ralph, and he will help 
you with your credit card processing.

But Ralph can't process your request until you have your information 
ready. If it takes you, say, two minutes to collect your information and 
1.2 seconds for Ralph to process your request, then you are using Ralph 
1 per cent of the time you are actually working. You can see that the 
relationship between a client and Ralph is very similar to the relationship 
between a desk client and a desk.

Now the cost of the middle tier is going to be determined by how many 
of Ralph (and his friends) we need to have running at any one time. How 
many will we need to process, say, 1000 clients? Well, that depends on 
whether we are using the Starbucks model or the IBM model. 

If we are using the IBM model, then each client needs a dedicated Ralph, 
even though Ralph is only being used 1 per cent of the time. If we are 
using the Starbucks model, each client is associated with a Ralph only 
while actually using Ralph

What will determine which of these two models (IBM or Starbucks) we 
are using for Ralph? Two things. The first is how we are dealing with 
work state. If we allow clients to store information in Ralph (like I stored 
stuff on my IBM desk), then we are going to need 1000 Ralph 
lookalikes, and a very large expensive middle tier machine. If we don't 
allow clients to store information in Ralph (like I don't store stuff on my 
Starbucks desk) then we only need 10 Ralph lookalikes, and a machine 
that is a fraction of the cost (.01, to be exact) of the IBM version.

However the banishment of state from Ralph is not enough to achieve the 
Starbucks model. The second thing we need is an underlying desk 
allocation algorithm that takes advantage of Ralph's statelessness. On the 
middle tier, this means a component runtime environment that allocates 
component instances (like Ralph) based on need, and then reclaims them 
as soon as the need has been fulfilled. There are several algorithms used 
by component runtime environments to do this instance management. 
We will discuss them in a future version of this newsletter. For now, it 
will suffice to say that all of these algorithms depend on the agreement 
that when you are finished asking Ralph to do something, you don't leave 
your work state inside him.

We often use the word "stateless" to describe how we work with Ralph. 
This word is meant to indicate that we don't store any state inside Ralph. 
However the word causes a lot of confusion. For example, Victor Rini, a 
reader of this newsletter, recently sent me a column called Thinking 
Objectively, by Scott Ambler in the August 1998 issue Software 
Developer. Scott said, "Microsoft's statements about DCOM's support for 
'stateless objects' aside, DCOM has nothing to do with objects (every 
pro-Microsoft techie who I have ever pressed on this issue has 
acknowledged this fact)."

Scott's statement is typical of the confusion about this issue. Scott 
believes that because Microsoft's component instances are stateless (in 
the sense that Starbucks tables are also stateless) that these instances are 
unable to deal with state. This, of course, is completely wrong. Just as I 
can work with piles of junk at my Starbucks table, Ralph can work with 
any state he needs. It just means that when Ralph is finished processing 
my request, that state gets stored someplace else. 

There are many possibilities as to where that state should be stored when 
Ralph is finished. The most likely place to store that state is in a back-
end database. After all, that is the whole purpose of the data tier 
(remember the data tier?). Databases are the only technology we know of 
that can manage state correctly in a shared, high throughput, 
transactional environment. 

To say, as Scott does, that "DCOM has nothing to do with objects" is to 
take the most naive view possible as to what is meant by the word 
"object". By his definition, the word "object" is necessarily inconsistent 
with any kind of middle tier efficiency. If we have to give up middle tier 
efficiency to support objects, I assure you, objects have as much future as 
the black and white television.

This issue of state and middle tier efficiency is a general issue, not an 
issue specific to Microsoft. Every component runtime environment that 
supports middle tier efficiency has the same requirements as does 
Microsoft's. For example, BEA's M3 product (until recently called 
Iceberg) places exactly the same restrictions on its component instances, 
despite that fact that its component model is based on CORBA, not 
COM/DCOM. Similarly for IBM's Component Broker, another CORBA 
derivative. Similarly for Sun's Enterprise Java Beans. According to 
Scott's definition, none of these are object systems, a conclusion that will 
surely surprise these vendors, none of whom agree on anything other 
than that all of their systems are based on objects.

I compared the major component runtime environments in my last issue 
(http://www.objectwatch.com/issue12.htm), so I won't do that again here. 
However I must point out that another of Scott's mistakes is that he 
doesn't include Microsoft's MTS, MSCS, or MSMQ products in his 
analysis. To judge COM and DCOM without looking at Microsoft's 
entire middle tier architecture is like judging a house based only on the 
dirt on which it is built.

So if you are planning a large, distributed, component based system, you 
are going to have to plan for middle tier scalability. The starting place for 
this planning is how you are going to manage the state of your 
components. This will make or break the scalability of your application 
as a whole. So plan your management of state very carefully. I even 
know a good place to do this planning: the Starbucks in Austin at 183 
and Lakecreek. Walk in, grab a Dopio Macchiato, and get to work. Just 
don't use my desk.

- Roger Sessions
Austin, Texas
July 19, 1998

***************************************************
LETTERS FROM VERY IMPORTANT PEOPLE: SCOTT AMBLER 
REPLIES
In the interest of fairness, I offered Scott Ambler an opportunity to 
respond to my criticism of his article. He sent the following reply, which 
I am reprinting in it's entirety and without editing.

Scott Ambler replies:
I don't think there's any confusion to the issue -- Microsoft is doing a 
marketing snowjob and has redefined the term object to meet its own 
current needs.  Please feel free to look into the definition of object by any 
respected author in the OO industry (names such as Grady Booch, James 
Rumbaugh, Peter Coad, Ivar Jacobson, and Steve Mellor to name a few 
come to mind) who for some strange reason point out that objects 
encapsulate both state and behavior.  Forgive me for not detecting the 
naivete of some of the most respected people in the industry when they 
included state in their definition of object.  I don't know what I was 
thinking about.  Correct me if I'm wrong, but doesn't COM+ talk about 
good things like objects that have both state and behavior?  I can't 
believe how naive that is!  Sort of makes you wonder why Microsoft 
would plan to migrate to something like that, doesn't it?

I have no problem with the fact that you need to store the state of objects 
in some sort of persistence mechanism, such as a flat file or a relational 
database.  You might not know this but for many years I've been saying 
that it's okay to use an RDB on the back end, long before it became 
fashionable to do so (a fairly recent occurrence I might add).  Feel free to 
download some of the papers, posted at 
http://www.ambysoft.com/onlineWritings.html, on this and related OO 
development subjects.  The problem that I have is when I'm told that the 
only way to do things is to only distribute behavior and then pass data 
(state) back and forth as parameters.  Sound like the current DCOM 
strategy?  You bet.  There are a lot of applications out there where it 
makes sense to load a bunch of objects, work with them for an 
indeterminent amount of time outside of the scope of a transaction, and 
then persist them when you're done.  Yes, there's some concurrency 
issues (there's always concurrency issues) but you know what, one of 
several ways to build such a system is to naively use objects that have 
both state and behavior.

As far as middle-tier efficiency goes, until you know my requirements 
for the applications I'm building, it would be incredibly naive to claim 
what architecture is efficient for my situation and what isn't.  Yes, for 
some applications the transaction-processing model supported by MTS is 
the perfect solution, for other applications it isn't.  The TP monitor 
approach to efficiency is one way to go, but it is only one of many.  As 
far as MSMQ goes, frankly I think it addresses one of the biggest 
weaknesses of CORBA, namely the implicit assumption of continuous 
connectivity.  The ability to queue messages is a good and virtuous thing 
in my book.

If you wish to support Microsoft's concept of "stateless objects" as being 
objects in the OO sense, please feel free to do so.  Myself, I know 
marketing BS when I hear it.  DCOM is a distributed behavior strategy, 
not a distributed object strategy, which is fine for a lot of applications.  
Call it what it is and use it where appropriate.

With respect to my article, you might want to read the entire thing.  In it I 
present one approach to protecting yourself from the CORBA vs. DCOM 
debate.  One of the problems with the approach is that although it looks 
good on paper, in the same manner that everything works on marketing 
slides, in reality it proves challenging to implement due to the impedance 
mismatch between the distributed-behavior paradigm of DCOM and the 
distributed-object paradigm of CORBA.  I can't help but think that if 
both approaches were based on objects then it wouldn't be as difficult to 
substitute one for the other.  I guess it's simply a matter of state.  :-)

- Scott
***************************************************
BOOK REVIEW: IN SEARCH OF CLUSTERS BY GREG F. PFISTER
Several months ago I had a wonderful lunch with Greg Pfister at which 
we talked about everything clustered. I have been meaning to turn my 
notes from that lunch into an article for this newsletter, but time and 
other issues keep pushing it back. I had planned to review his new book 
at that time, but I have decided to wait no longer to put out the word on 
this remarkable work.

Greg is the King of Clusters. He has a passion for his subject and an 
incredible depth of knowledge. He is also one of the best technical 
writers publishing today. Even if you have no interest in clusters, you 
may find his writing style so engaging that you will be unable to put 
down this book. 

The first edition of this book was a huge influence on Microsoft's MSCS 
product. The early code name for MSCS was Wolfpack, named in honor 
of Greg's first edition. Greg's cover showed a multi-headed dog being 
attacked by a dog pack, an allegory for the battle between clusters of low 
level machines and symmetrical multi-processors. Microsoft didn't want 
to use the code name "Dogpack", so they reinterpreted the picture as a 
Wolfpack.

The second edition has been significantly reworked and updated. The 
book is split into four parts. Part 1 is an overview of cluster issues. Part 2 
is about hardware issues. Part 3 is about software issues. Part 4 is about 
systems level issues. The book is almost 600 pages long, a 50% increase 
over the first volume.

This book gives a great overview of the problems involved in cluster 
technology. "Clusters" refer to the ability of many small machines to 
perform together as what Greg calls a Single System Image. In other 
words, how a bunch of machines can act to the user as one machine. 
When one machine in the cluster becomes overworked, its workload is 
off loaded to the other machines in the cluster, without any intervention 
on the part of an administrator. As one machine goes down, the rest of 
the machines take over. This gives us the ability to create very high 
availability and very high throughput systems based on very inexpensive 
machines. Is this really possible? Greg says the technical problems are 
difficult. And he lists them all, with extensive descriptions of the 
algorithms and/or hardware configurations known to solve them. 

A word of warning: This is a technical book. There is more detail in here 
than many will want. But it is a very well written technical book, and 
Greg's style makes a complex topic accessible to many whom would 
otherwise be lost in a sea of acronyms. If you are interested in clusters, 
this book is an absolute must read. And even if you aren't, but just like to 
see technical writing at it's best, you will find this book irresistible.

In Search of Clusters can be purchased through the ObjectWatch on-line 
Bookstore (http://www.objectwatch.com/bookstor.htm), or through many 
bookstores with good computer sections. It's ISBN is 0-13-899709-8, and 
it's suggested price is $44.95.
***************************************************
BRIEFLY NOTED: THE OBJECT NEWS SITE
Keeping up with the never ending torrent of information in the object 
world is very difficult. One web site that really makes a difference is the 
Object News Site, maintained by Dion Hinchcliffe and Paul Evitts. This 
site, with its daily updates, is the New York Times of the object world. If 
it's about objects, it's covered on this site. They keep their own politics 
and religion out of it. They cover CORBA, Microsoft, and you name it in 
a remarkably impartial way. If you haven't been here, I highly 
recommend a visit. These two guys are putting a lot of work into making 
our lives easier, and they deserve our support. You can find their site at 
http://www.objectnews.com
***************************************************
UPCOMING PUBLIC SPEAKING ENGAGEMENTS OF ROGER 
SESSIONS
It's always a special treat to have ObjectWatch Newsletter readers join 
me at public speaking engagements. Some of my upcoming engagements 
include the following:

September 8 Austin, Texas. The Austin Forum of Object Oriented 
Technology (AFOOT). Topic: COM, DCOM, And The Microsoft 
Distributed  Component Architecture. For more information, see 
http://www.prismnet.com/~afoot/

September 16-19 Washington, D.C. Keynote address at the 
Object/Relational Summit. Topic: The Middle Tier: Where Objects And 
TPMs Meet. For more information, see 
http://www.dbsummit.com/or/98home.htm

November 3-5 Finland. Keynote address at Object Computing Europe-98 
on The Marriage Between Components And TPMs, and tutorial on 
COM, DCOM, And The Microsoft Distributed  Component Architecture. 
For more information, see http://www.tieturi.fi/oce98/
***************************************************
UPCOMING PUBLIC CLASSES OF ROGER SESSIONS
We are preparing our fall schedule for our public classes. We try to give 
our newsletter readers advanced notice, so that they get first chance at 
seating. Attendance is limited to 25. Our last public class completely sold 
out within five days of announcement, so if you are interested, please act 
quickly. And if you are a public school teacher or if you know a public 
school teacher, please see the information below about free scholarships. 
For more information on any of these classes, drop a note to Janet 
(janet@objectwatch.com). Our current schedule plan is as follows:
Aug. 10 - Toronto
Aug. 19 - Austin
Sept. 10 - Seattle
Sept. 14 - Boston
Sept. 17 - Washington, D.C.
Oct. 1 - Oct 9 - Nordic countries

Brief Class Description:
COM, DCOM, AND THE MICROSOFT DISTRIBUTED 
COMPONENT ARCHITECTURE 
(ONE DAY, LEVEL: INTERMEDIATE)

Commerce systems are very demanding. The most successful commerce 
systems have historically been based on complex Transaction Processing 
Monitors and expensive main frame computers. They have been difficult 
to program and expensive to run. But this is changing.

Microsoft has introduced a revolutionary component based architecture 
for creating commerce systems. For the first time we are able to build 
highly scalable, high throughput, three-tier transactional commerce 
systems using only basic programming skills. And we are able to run 
these commerce systems on inexpensive NT servers and plug them right 
into the Internet.

The most important part of Microsoft's architecture we call MDCA 
(Microsoft Distributed Component Architecture). This is the architecture 
that supports the middle tier. It is this tier that runs the business logic and 
controls security, transactions, and scalability. It is this tier that 
determines the success or failure of modern commerce applications. 

This class is for people who are trying to understand the Big Six 
technologies that make up MDCA. These technologies are:

1. COM (The underlying component model)
2. DCOM (The underlying distribution model)
3. MTS (Microsoft Transaction Server)
4. MSMQ (Microsoft Message Queue Server, aka Falcon)
5. MS-DTC (Microsoft Distributed Transaction Coordinator)
6. MSCS (Microsoft Cluster Server, aka Wolfpack)

In order to understand Microsoft's vision for commerce applications, it is 
necessary to understand these six technologies, how they fit together, and 
how they relate to Microsoft’s overall DNA (Distributed interNet 
Applications) strategy. These MDCA technologies cover a wide range of 
material, from distributed object architectures to distributed two-phase 
commit to object pooling. This class is intended to make these 
technologies accessible to a wide audience. We use simple everyday 
analogies to describe basic issues in distributed programming and to 
explore the algorithms that make commerce programming possible. 

This class gives an overview of this visionary architecture and how it 
compares to the architectures based on CORBA and Enterprise Java 
Beans. The class is intended for programmers, analysts, and managers 
needing an unbiased perspective on the Microsoft's Distributed 
Component Architecture and how it can support their overall business 
strategy.

FULL SCHOLARSHIPS FOR PUBLIC SCHOOL TEACHERS
ObjectWatch believes that nothing is more important to the future of our 
country than our children. We believe that public school teachers are the 
unsung heroes, the transmitters of knowledge to our next generation. We 
want to support our teachers and help them in their efforts to teach 
current and relevant technology. Therefore we are proud to announce an 
experimental full scholarship program for public school teachers at all 
ObjectWatch public classes.

Here is the deal. We will reserve two seats at all ObjectWatch public 
classes for public school teachers. There will be no charge for these 
seats, and teachers will be full participants in the class. We will also 
provide to these teachers, at no charge, a copy of Roger Sessions' book 
"COM and DCOM; Microsoft's Vision for Distributed Objects".

 If you are a teacher, you are eligible for these seats if you meet the 
following qualifications:
1. You are a full time teacher in a public high school.
2. You teach in the city in which the public class is being offered.
3. You teach at least one programming class.
4. You have knowledge of object-oriented programming.
5. If demand exceeds supply for these seats, we will give priority to 
teachers in inner city schools.

We are trying out this program for the next several months, and we 
expect to extend it thereafter. If you are interested and qualify for this 
program, please write to Janet (janet@objectwatch.com) and let her 
know of your interest in participating. We will expect you to provide 
proof of your eligibility upon your acceptance.

WE APPEAL TO OUR READERS TO HELP US MAKE THIS 
PROGRAM KNOWN TO TEACHERS IN YOUR AREA.

We encourage other computer training organizations to join us in 
supporting our public school teachers and letting them know, in this very 
concrete way, how much we care about them and their work.
***************************************************
ABOUT OBJECTWATCH
ObjectWatch specializes in middle tier architectures, with emphasis in 
the architecture we call MDCA, (Microsoft's Distributed Component 
Architecture). This architecture includes six key technologies: COM; 
DCOM; MTS, DTC, MSMQ, and MSCS. These technologies are the 
basic building blocks needed to create highly scalable, component 
oriented applications using NT as the middle tier. 

We offer public and private classes describing these middle tier 
technologies. If you are starting to create multi tier applications around 
NT as a middle tier, evaluating NT as a middle tier environment, or 
trying to decide whether your company should use CORBA or MDCA 
for its distributed architecture, this class will prove invaluable.

Roger Sessions teaches all of the ObjectWatch classes. He is the author 
of COM and DCOM; Microsoft's Vision for Distributed Objects, 
published by John Wiley & Sons. This book is a gentle introduction to 
the three tier scalable distributed object architecture of Microsoft. This 
book can be purchased at your local computer book store, or on-line at 
http://www.objectwatch.com/bookstor.htm.

Roger Sessions is the President of ObjectWatch, Inc. He is the author of 
four books and dozens of articles. He has extensive experience with both 
CORBA and Microsoft middle tier architectures. He is a frequent 
conference speaker on middle tier architecture. Visit the ObjectWatch 
web page at http://www.objectwatch.com or contact Roger Sessions at 
roger@objectwatch.com for details on how ObjectWatch can help your 
corporation succeed with Microsoft's distributed object technologies.
***************************************************
Recent issues of this newsletter are available at 
http://www.objectwatch.com
# 12: CORBA vs. EJB vs. MDCA: The Battle for the Middle Tier
# 11: Life in the Middle Tier
# 10: Roger vs. The 850 Ton Gorilla
# 9: Scalability in Three-Tier Component Systems
#8: Reflections from the Colorado Software Summit 1997
#7: Java - The Microsoft Perspective
***************************************************
Legal Notices:

The ObjectWatch Newsletter does not accept advertising or rent out its 
subscription list.

This newsletter is Copyright (c) 1998 by ObjectWatch, Inc., Austin, 
Texas. It may be freely redistributed provided that it is redistributed in its 
entirety, and that absolutely no changes are made in any way, including 
the removal of these legal notices.

ObjectWatch is a registered trademark (r) of ObjectWatch, Inc., Austin, 
Texas. All other trademarks are owned by their respective companies.
***************************************************




To unsubscribe send a note to majordomo@cs.fiu.edu with the body of the message
being: unsubscribe cadse-orb