Obsydian 3.0 and Microsoft Transaction Server
This article was written for
your reading pleasure by
Linda Schmehl - QA Engineer , Joe Cascone -
Senior Software Engineer & Yi Xia - Software Engineer,
all members of Synon's multi-talented
Development Team.
Introduction
Microsoft Transaction Server (MTS), formerly code named VIPER, is a component-based transaction processing system for developing, deploying, and managing high performance, scalable, and robust enterprise, Internet, and intranet server applications. Transaction Server defines an application programming model for developing distributed, component-based applications. It also provides a run-time infrastructure for deploying and managing these applications. What follows is a technical overview of Obsydian generated applications and interaction with the Obsydian run-time together with tips on how you can begin to use Obsydian generated applications with MTS.
MTS uses multithreaded COM components. To
satisfy this requirement, Obsydian 3.0 has added the option for
server-based MultiThreading to the Obsydian runtime NT
Dispatcher. MTS also has other requirements, which include the
use of client functions that are generated as OLE controllers
(i.e. full-fledged COM clients). Obsydian generation of COM
clients will be available in a future release, at present it is
necessary for COM clients to be created outside of Obsydian (see Using
Obsydian Functions with MTS today).
Also note that the setup and configuration of MTS can be quite
involved. Please refer to Microsofts documentation for help
on getting started with MTS.
Background
Without MultiThreading, each client call to an NT server causes the creation of a separate process which handles communication and other environmental information. Each process is used to hold information concerning both the client and the server. The diagram below shows the runtime system with two processes, each consisting of an instance of the Obsydian runtime component OBvvvRS.EXE (where vvv represents the release number) and a memory mapped file for each client.
MultiThreaded Obsydian Applications
Prior releases of the Obsydian runtime only supported the creation of a new process for each client. Supporting processes as opposed to threads is resource intensive in terms of processor and memory overheads. The new Obsydian 3.0 runtime system now supports a single process with multiple threads through the OBvvvRT.DLL file. When a request is received, it creates a client specific thread that takes its information from the memory-mapped file directly; thus the server information is only held once.
The result is MultiThreading, less resource-intensive in terms of the processor and memory overheads, as well as the ability to interact with MTS through COM interfaces in the ObvvvRT.DLL.
NOTE: To enable MultiThreading for your applications, you will need to make sure that the Obsydian Dispatch Service Manager running on the selected NT Server has the "Enable MultiThreaded Server" box checked.
Using Obsydian Functions with MTS today
If you would like to use Obsydian 3.0 Server
Functions with MTS today, use any OLE controller development tool
(e.g. Visual Basic, Visual C++, Visual Basic for Applications,
Lotus Notes, etc.) to create a COM client.
Deploy the Obsydian multithreaded server runtime (ObvvvRT.DLL) as
an MTS non-transactional component.
Obsydian, instead of MTS, will take care of transaction
processing.
For more information on this topic, please refer to the Obsydian OLE Automation documentation located in the Samples directory of your Obsydian product CD
The Future
Full MTS support including support for MTS transactional components as well as the generation of COM clients will be provided in a future release. In addition, Synon's close relationship with Microsoft provides us with the insight into future MTS plans. Obsydian generated applications are uniquely positioned to be able to take full advantage of MTS and other emerging technologies.
©1995-98 Synon Corporation. All rights
reserved. |