|
Microsoft .NET プログラマにとって、Tuxedo .NET ワークステーション クライアントは、Tuxedo .NET ワークステーション クライアント アプリケーションの開発を効率化する、生産性向上ツールです。このツールでは、.NET プログラマとのインタフェースがオブジェクト指向 (OO) であるだけでなく、コードの設計および記述も OO 手法で行うことができます。
Tuxedo .NET ワークステーション クライアントは、ATMI の関数呼び出しの動作をほとんどすべて継承しています。そのため、Tuxedo プログラマは、.NET クライアントのクラスを簡単に理解し、使用して、アプリケーションを記述できます。Tuxedo .NET ワークステーション クライアントは、.NET アセンブリとして公開されるため、.NET Framework の利点も活用されます。Tuxedo .NET ワークステーション クライアントは、さまざまな .NET プログラミング言語 (たとえば、C#、J#、VB.NET、および ASP.NET) で使用できます。
注意 : | Tuxedo ワークステーション クライアントは、Microsoft .NET Framework 2.0 でテストされています。また、Microsoft .NET Framework 2.0 を公式にサポートしています。 |
Tuxedo .NET ワークステーション クライアントでは、.NET プログラミング言語で Tuxedo クライアント アプリケーションを記述して、Tuxedo サービスにアクセスできます。また、.NET ワークステーション アプリケーションと Tuxedo サービスの間の接続機能も備わっています。
Tuxedo .NET ワークステーション クライアントには、以下のコンポーネントが含まれています。
libwsclient.dll
この Microsoft .NET Framework の .dll
アセンブリでは、Tuxedo .NET ワークステーション クライアントの開発に使用される、Tuxedo の ATMI 関数および FML 関数がラッピングされます。
viewcs
、viewcs32
、mkfldcs
、mkfldcs32
、および buildnetclient
上記のユーティリティの実行可能ファイルを使用すると、Tuxedo の VIEW/VIEW32 型バッファおよび FML/FML32 型バッファを使用して、C# コードを開発することも、C# コードを Tuxedo .NET ワークステーション クライアントのアセンブリの実行可能ファイルにコンパイルすることも、効率的に行うことができます。詳細については、「viewcs、viewcs32(1)」、「mkfldcs、mkfldcs32(1)」、「buildnetclient(1)」を参照してください。
上記 3 つのサンプルは、C# を使用した Tuxedo .NET ワークステーション クライアント アプリケーションの作成方法を表しています。「Tuxedo .NET ワークステーション クライアントのサンプル」を参照してください。
Tuxedo .NET ワークステーション クライアントには、以下の制限事項があります。
tpxmltofml32(3)
and tpfmltoxml32(3)
)。tx_open()
、tx_close()
、および tx_begin()
) は、Tuxedo .NET ワークステーション クライアントでサポートされていない。Tuxedo TP トランザクション関数だけが使用可能。
Tuxedo .NET クライアントのインストールおよび Tuxedo のインストール セットの詳細については、『Oracle Tuxedo システムのインストール』を参照してください。
Microsoft .NET Framework 2.0 のダウンロードおよび Microsoft .NET Framework の詳細については、Microsoft の .NET Developer Center を参照してください。
Tuxedo .NET ワークステーション クライアントは、.NET アプリケーションと Tuxedo ワークステーションの基底の共有ライブラリ (libwsc.dll
、libengine.dll
、および libfml.dll
) の間の中間層またはラッパーとして機能します。図 1 は、Tuxedo .NET ワークステーション クライアントの機能を表しています。
.NET アセンブリ libwscdnet.dll
には、Tuxedo .NET ワークステーション クライアントのラッパー API クラスが含まれているため、Tuxedo の ATMI 関数および FML 関数をラッピングするオブジェクト指向手法のインタフェースが実装されています。
buildnetclient
によって libwscdnet.dll
が参照されないと、.NET プログラミング言語で記述された Tuxedo ワークステーション クライアントはビルドされません。buildnetclient は共通言語ランタイム (CLR) 環境に対応しているため、実行時に応じて、アセンブリ (たとえば、クライアントの実行可能ファイル、ライブラリ) によって呼び出されます。
win32 共有ライブラリ libwdi.dll
には libwscdnet.dll
に使用されているプラットフォーム固有の関数が実装されています。
注意 : | libwdi.dll は libwscdnet.dll の実行時のみ必要です。buildnetclient でアプリケーションのソース ファイルを .NET 実行可能ファイルにビルドする際は、不要です。 |
注意 : | このライブラリは、今後、Microsoft .NET Framework が Microsoft Windows ファミリ以外のプラットフォームに移植された場合に使用できるように、予約されています。 |
Tuxedo .NET ワークステーション クライアントを使用するには、Microsoft .NET Framework 2.0 SDK をご使用のシステムに事前にインストールする必要があります。Oracle Tuxedo のインストーラ プログラムでは、.NET Framework がインストールされているかどうかが自動的にチェックされます。インストールされている場合は、libwscdnet.dll
が .NET Framework のグローバル アセンブリ キャッシュに自動的に登録されます。
.NET Framework がインストールされていない場合は、インストールする必要があります。.NET Framework は、Microsoft の .NET Developer Center からダウンロードできます。.NET Framework のインストール後は、libwscdnet.dll
をグローバル アセンブリ キャッシュに手動で登録することを強くお勧めします。
グローバル アセンブリ キャッシュに対して libwscdnet.dll
を手動で登録/登録解除するには、以下の手順に従います。
libwscdnet.dll
は、コマンドラインからでも登録/登録解除できます。
登録するには、「%WINDIR%\Microsoft.NET\Framework\v2.0.4322\gacutil.exe /i %TUXDIR%\bin\libwscdnet.dll
」と入力します。
登録解除するには、「%WINDIR%\Microsoft.NET\Framework\v2.0.4322\gacutil.exe /u libwscdnet.dll
」と入力します。
Tuxedo .NET ワークステーション クライアント アプリケーションを開発するプログラマは、以下のことを行う必要があります。
Tuxedo .NET ワークステーション クライアントは、プログラマによる Tuxedo FML/VIEW 型バッファの使用および .NET 実行可能ファイルのビルドを支援する開発ユーティリティを備えています。「FML/FML32 型バッファ」と「VIEW/VIEW32 型バッファ」を参照してください。
Tuxedo .NET ワークステーション クライアントのインタフェースの主な変更点 (Tuxedo の ATMI および FML の C 関数との比較) は、以下のとおりです。
クラス AppContext
は、ほとんどすべての ATMI C 関数をまとめる際に使用する。クラス Transaction
のメソッドとして定義されている (たとえば、tpbegin()
、tpcommit()
など)。TypedBuffer
およびその派生クラスを使用して処理される。「型付きバッファ」を参照。
Tuxedo .NET ワークステーション クライアントのネームスペースは、2 つのカテゴリに分類されます。最初のカテゴリには、2 つのネームスペース Bea.Tuxedo.ATMI
と Bea.Tuxedo.FML
があり、ATMI および FML のラッパー クラスがまとめられています。
2 つ目のカテゴリでは、Bea.Tuxedo.Autogen namespace
が使用され、自動生成の .NET クラスがすべて .NET クライアント ユーティリティでまとめられています。
上記のネームスペースには、「Tuxedo .NET Workstation Client API Reference」に記載された関数に関連付けられたクラスおよび構造がすべて含まれています。
AppContext
クラスは、Tuxedo サービスへのアクセス関数の実行に使用するキー クラスです。AppContext
を使用すると、マルチコンテキスト クライアント アプリケーションで OO プログラミング手法を活用できます。
注意 : | マルチコンテキストの詳細については、『C 言語を使用した Oracle Tuxedo アプリケーションのプログラミング』の「マルチスレッドおよびマルチコンテキスト アプリケーションのプログラミング」を参照してください。 |
Tuxedo の ATMI C 関数 (たとえば、tpcall()
と tpnotify()
) はほとんどすべて AppContext クラスのメソッドとして定義されています。AppContext
クラスのインスタンスの作成は、Tuxedo ドメインとその Tuxedo ドメインで提供される呼び出しサービスに接続する上で、重要な要素です。
C または COBOL で記述されたマルチコンテキストのアプリケーションでは、通常、プログラマは 2 つの ATMI 関数 tpgetctxt()
と tpsetctxt()
を使用して、Tuxedo コンテキストを切り替える必要があります。この切り替えは、Tuxedo .NET ワークステーション クライアントを使用する場合、不要です。クラス AppContext
のインスタンスを作成すると、特定の Tuxedo コンテキストのインスタンスも作成されます。
特定の AppContext
のインスタンスに対する操作は、他の AppContext
のインスタンスに影響しません。マルチコンテキスト アプリケーションを開発し、簡単に切り替えることができます。
Tuxedo コンテキストのインスタンスを作成するには、静的クラスのコンストラクタではなく、メソッド AppContext.tpinit(TPINIT)
を呼び出す必要があります。
注意 : | Tuxedo コンテキストのインスタンスは、自動的には破棄されません。Tuxedo コンテキストのインスタンスを破棄するには、AppContext.tpterm() を呼び出す必要があります。そうしないと、以下の現象が発生する可能性があります。 |
以下のサンプルは、シングルコンテキストの Tuxedo ドメインへの接続方法を表しています。
……
TypedTPINIT tpinfo = new TypedTPINIT();
AppContext ctx1 = AppContext.tpinit(tpinfo); // Tuxedo ドメインへの接続
……
ctx1.tpterm(); // Tuxedo ドメインからの切断
以下のサンプルは、マルチコンテキストの Tuxedo ドメインへの接続方法を表しています。
……
TypedTPINIT tpinfo = new TypedTPINIT();
tpinfo.flags = TypedTPINIT.TPMULTICONTEXTS; // マルチコンテキスト フラグの設定
// 最初の Tuxedo ドメインへの接続
AppContext ctx1 = AppContext.tpinit(tpinfo);
Utils.tuxputenv("WSNADDR=//10.2.0.5:1001");
// 2 つ目の Tuxedo ドメインへの接続
AppContext ctx2 = AppContext.tpinit(tpinfo);
……
ctx1.tpterm(); // 最初の Tuxedo ドメインからの切断
ctx2.tpterm(); // 2 つ目の Tuxedo ドメインからの切断
Tuxedo .NET ワークステーション クライアントは、Oracle Tuxedo に組み込まれているバッファ型 FML
、FML32
、VIEW
、VIEW32
、CARRAY
、および STRING
をサポートしています。図 2 は、Tuxedo .NET ワークステーション クライアントの型付きバッファ クラスの階層を表しています。
Tuxedo .NET ワークステーション クライアントのクラス TypedBuffer
は、Tuxedo の具体的なバッファ型すべての基本クラスであり、低次の関数を派生クラスすべてに継承しています。クラス TypedBuffer
は抽象クラスのため、インスタンスの作成には使用できません。
Tuxedo .NET ワークステーション クライアントでは、クラス TypedString
を使用して、STRING
型バッファの文字を定義します。TypedString
のインスタンスは、tpcall()
などの AppContext
のメソッドとの通信に直接使用できます。次に使用例を示します。
……
TypedString snd_str = new TypedString ("Hello World");
TypedString rcv_str = new TypedString(1000);
AppContext ctx = AppContext.tpinit(null);
……
ctx.tpcall("TOUPPER", snd_str, rcv_str, 0);
……
ctx.tpterm();
……
Tuxedo .NET ワークステーション クライアントでは、クラス TypedFML
/TypedFML32
を使用して、ほとんどの FML C 関数を定義します。FML 型バッファを使用して Tuxedo .NET アプリケーションを開発するには、以下の手順に従います。
FML 型バッファのプログラミングの詳細については、『FML を使用した Tuxedo アプリケーションのプログラミング』を参照してください。
using Bea.Tuxedo.FML;
namespace Bea.Tuxedo.Autogen {
public class fnext_flds {
public static readonly FLDID F_short = 110; // number: 110 type: short
public static readonly FLDID F_view32 = 369098863; // number: 111 type: view32
public static readonly FLDID F_double = 134217840; // number: 112 type: double
public static readonly FLDID F_ptr = 301990001; // number: 113 type: ptr
}
} // namespace Bea.Tuxedo.Autogen
……
TypedFML fmlbuf = new TypedFML(2048);
short s = 123;
fmlbuf.Fadd(fnext_flds.F_short, s);
……
fmlbuf.Resize(3000);
……
fmlbuf.Dispose();
……
Tuxedo .NET ワークステーション クライアントでは、クラス TypedVIEW
を使用して、VIEW/VIEW32 データを作成し、アクセスします。VIEW/VIEW32 型バッファを使用して Tuxedo .NET ワークステーション クライアント アプリケーションを開発するには、以下の手順に従います。
viewcs
ユーティリティを使用して、VIEW 定義ファイルを VIEW バイナリ ファイル (.VV) にコンパイルします。詳細については、「viewc(1)」、「viewcs(1)」を参照してください。viewcs
ユーティリティを使用して、クラス TypedVIEW
から導出される C# 定義コード、および対応する .dll ライブラリ (必要に応じて) を VIEW バイナリ ファイルから生成します。TypedVIEW
を使用して、.NET アプリケーションを記述します。
クラス TypedVIEW
には、以下の 2 つのオプションがあります。
このオプションは、TypedVIEW
の最も一般的な使用法です。
viewcs
ユーティリティを使用して、派生クラス TypedVIEW
の C# 定義コードを xxx.VV ファイルから生成します。その後、C# コードを .exe
ファイルにコンパイルします。環境変数を追加する必要はありません。
viewcs(32) view1.VV view2.VV
buildnetclient -o simpapp.exe simpapp.cs view1.cs view2.cs
viewcs
ユーティリティと .NET アセンブリ環境変数を併用すると、.dll ライブラリを生成できます。viewcs
によって生成される .dll ライブラリを表示するには、.NET アセンブリ環境変数 ASSFILES
および ASSDIR
(VIEW32 の場合は、ASSFILES32
および ASSDIR32
) を適宜設定する必要があります。
注意 : | TypedView は、.NET 環境では、C# コードではなく、.dll ライブラリにリンクする必要があります。TypedView によって、クラス型が .dll ライブラリまたは .exe ファイルにコンパイルされるためです。定義が .dll ライブラリと .exe ファイルの両方にコンパイルされる場合、この 2 種類のファイルに出力されるバイナリは同じではありません。 |
上記の環境変数を使用すると、.dll
ライブラリを自動的に、または手動で生成できます。
このメソッドは、xxx.VV ファイルが複数の場合に使用できます。TypedVIEW
の C# コードを管理しやすくするには、複数の xxx.VV ファイルを 1 つの .dll ライブラリにコンパイルします。
viewcs
ユーティリティを使用して、派生クラス TypedVIEW
の C# 定義コード、および対応する .dll ライブラリを xxx.VV ファイルから生成します。libwscdnet.dll
アセンブリを手動で登録してから、.dll ライブラリを使用してクライアント アプリケーションをコンパイルします。
viewcs(32) view.dll view1.VV view2.VV
gacutil.exe /i view.dll
buildnetclient -o simpapp.exe simpapp.cs view.dll
set ASSFILES(32)=view.dll
set ASSDIR(32)=%APDIR%
特定の統合プログラミング環境 (たとえば、VB.NET および ASP.NET) には、実行環境が備わっています。クライアント アプリケーションは、.dll ファイルとして統合されています。この場合は、.dll ライブラリを手動で生成することをお勧めします。
viewcs
ユーティリティを使用して、派生クラス TypedVIEW
の C# 定義コードを xxx.VV ファイルから生成します。その後、C# コードをアプリケーションの .dll ファイルにコンパイルします。
.NET アセンブリ環境変数 ASSFILES
および ASSDIR
(VIEW32 の場合は、ASSFILES32
および ASSDIR32
) を TypedVIEW
が定義されたアプリケーションの .dll ライブラリおよびディレクトリに設定する必要があります。
viewcs(32) view1.VV view2.VV
csc /t:library /out:simpapp.dll /r:%TUXDIR%\bin\libwscdnet.dll simpapp.cs
view1.cs view2.cs
set ASSFILES(32)=simpapp.dll
set ASSDIR(32)=%APDIR%
型付きバッファのサンプル ファイル (Tuxedo .NET ワークステーション クライアント パッケージに含まれています) は、FML 型バッファおよび VIEW 型バッファの使用方法を表しています。
.NET Framework 環境の 1 つの利点は、言語の統合です。.NET アセンブリが生成されると、.NET でサポートされる言語のどれを使用しても、その .NET アセンブリでアプリケーションを開発できます。そのため、J#、VB、C++ など、.NET でサポートされる言語のどれを使用しても、Tuxedo .NET ワークステーション クライアント アプリケーションを開発できます。
Imports System
Imports Bea.Tuxedo.ATMI
Module Main
Sub Main()
Dim sndstr, rcvstr As TypedString
Dim ac As AppContext
Dim info As TypedTPINIT
info = New TypedTPINIT()
info.cltname = "vb client"
Try
ac = AppContext.tpinit(info)
sndstr = New TypedString("hello world")
rcvstr = new TypedString(1000)
ac.tpcall("TOUPPER", sndstr, rcvstr, 0)
Console.WriteLine("rcvstr = {0}"
...rcvstr.GetString(0,1000))
ac.tpterm()
Catch e as ApplicationException
Console.WriteLine("Got Exception = {0}", e)
End Try
End Sub
End Module
buildnetclient
ユーティリティは、C# ソース ファイルから .NET 実行可能ファイルへのコンパイルを効率化するために、提供されています。「buildnetclient(1)」も参照してください。buildnetclient
の構文例を以下に示します。
buildnetclient -v -o simpapp.exe simpapp.cs
Tuxedo の ATMI C 関数および FML C 関数で使用されているエラー コードのリターン メカニズムは、Tuxedo .NET ワークステーション クライアントの例外メカニズムに置き換えられます。try
ステートメントを使用すると、Tuxedo .NET ワークステーション クライアントでエラーを処理できます。エラーは 2 つのカテゴリ TPException
および FException
に定義されます。
……
try {
……
TypedTPINIT tpinfo = new TypedTPINIT();
AppContext ctx1 = AppContext.tpinit(tpinfo); // Tuxedo ドメインへの接続
……
ctx1.tpterm(); // Tuxedo ドメインからの切断
……
} catch (ApplicationException e) {
Console.WriteLine("******Error******, e = {0}", e);
}
……
Tuxedo .NET ワークステーション クライアント パッケージには、3 つのサンプル アプリケーションがバンドルされています。
サンプル アプリケーションにアクセスするには、以下の手順に従います。