Obsydian 3.0 and Microsoft Transaction Server

This article was written for your reading pleasure by
Linda Schmehl - QA Engine
er , 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 Microsoft’s 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.
Synon and Obsydian are registered trademarks of Synon Corporation.
Other product and company names herein may be the trademarks or registered trademarks of their respective owners.