Tuxedo .NET ワークステーション クライアント

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

Tuxedo .NET ワークステーション クライアント アプリケーションの作成

ここでは、以下の内容について説明します。

 


概要

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 ワークステーション クライアントには、以下のコンポーネントが含まれています。

制限事項

Tuxedo .NET ワークステーション クライアントには、以下の制限事項があります。

 


Tuxedo .NET ワークステーション クライアントの機能

Tuxedo .NET ワークステーション クライアントは、.NET アプリケーションと Tuxedo ワークステーションの基底の共有ライブラリ (libwsc.dlllibengine.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.dlllibwscdnet.dll の実行時のみ必要です。buildnetclient でアプリケーションのソース ファイルを .NET 実行可能ファイルにビルドする際は、不要です。
注意 : このライブラリは、今後、Microsoft .NET Framework が Microsoft Windows ファミリ以外のプラットフォームに移植された場合に使用できるように、予約されています。
図 1 .NET ワークステーション クライアントの機能

Microsoft .NET Framework

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 を手動で登録/登録解除するには、以下の手順に従います。

GUI コンフィグレーションを使用した libwscdnet.dll の登録
  1. .NET GUI コンフィグレーション プログラムを起動します。Windows のデスクトップで、[スタート|プログラム|管理ツール|Microsoft .NET Framework] をクリックします。
  2. [アセンブリ キャッシュ] を右クリックします。[追加...] をクリックします。
  3. libwscdnet.dll%TUXDIR%\bin ディレクトリから選択します。[開く] をクリックします。libwscdnet.dll が [アセンブリ キャッシュ] リストに追加されます。
GUI コンフィグレーションを使用した libwscdnet.dll の登録解除
  1. .NET GUI コンフィグレーション プログラムを起動します。Windows のデスクトップで、[スタートプログラム管理ツールMicrosoft .NET Framework] をクリックし、[アセンブリ キャッシュ] を選択します。
  2. [アセンブリ キャッシュ] リストで、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 ワークステーション クライアント アプリケーションを開発するプログラマは、以下のことを行う必要があります。

  1. .NET ラッパー クラス/インタフェースの使用
  2. Tuxedo ワークステーション クライアントの環境設定
  3. Tuxedo/WS プロトコルを介した Tuxedo サービスへのアクセス

Tuxedo .NET ワークステーション クライアントは、プログラマによる Tuxedo FML/VIEW 型バッファの使用および .NET 実行可能ファイルのビルドを支援する開発ユーティリティを備えています。「FML/FML32 型バッファ」と「VIEW/VIEW32 型バッファ」を参照してください。

 


Tuxedo .NET ワークステーション クライアントのプログラミング

Tuxedo .NET ワークステーション クライアントのインタフェースの主な変更点 (Tuxedo の ATMI および FML の C 関数との比較) は、以下のとおりです。

Tuxedo .NET ワークステーション クライアントのネームスペース

Tuxedo .NET ワークステーション クライアントのネームスペースは、2 つのカテゴリに分類されます。最初のカテゴリには、2 つのネームスペース Bea.Tuxedo.ATMIBea.Tuxedo.FML があり、ATMI および FML のラッパー クラスがまとめられています。

2 つ目のカテゴリでは、Bea.Tuxedo.Autogen namespace が使用され、自動生成の .NET クラスがすべて .NET クライアント ユーティリティでまとめられています。

上記のネームスペースには、「Tuxedo .NET Workstation Client API Reference」に記載された関数に関連付けられたクラスおよび構造がすべて含まれています。

AppContext クラス

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 ドメインへの接続方法を表しています。

コード リスト 1 C# コード サンプル: シングルコンテキスト クライアントへの接続
……

TypedTPINIT tpinfo = new TypedTPINIT();

AppContext ctx1 = AppContext.tpinit(tpinfo); // Tuxedo ドメインへの接続

……

ctx1.tpterm(); // Tuxedo ドメインからの切断

以下のサンプルは、マルチコンテキストの Tuxedo ドメインへの接続方法を表しています。

コード リスト 2 C# コード サンプル: マルチコンテキスト クライアントへの接続
……

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 に組み込まれているバッファ型 FMLFML32VIEWVIEW32CARRAY、および STRING をサポートしています。図 2 は、Tuxedo .NET ワークステーション クライアントの型付きバッファ クラスの階層を表しています。

Tuxedo .NET ワークステーション クライアントのクラス TypedBuffer は、Tuxedo の具体的なバッファ型すべての基本クラスであり、低次の関数を派生クラスすべてに継承しています。クラス TypedBuffer は抽象クラスのため、インスタンスの作成には使用できません。

図 2 Tuxedo .NET ワークステーション クライアントの型付きバッファ クラスの階層

STRING 型バッファ

Tuxedo .NET ワークステーション クライアントでは、クラス TypedString を使用して、STRING 型バッファの文字を定義します。TypedString のインスタンスは、tpcall() などの AppContext のメソッドとの通信に直接使用できます。次に使用例を示します。

コード リスト 3 TypedString クラス (C# サンプル コード)
……

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();

……

FML/FML32 型バッファ

Tuxedo .NET ワークステーション クライアントでは、クラス TypedFML/TypedFML32 を使用して、ほとんどの FML C 関数を定義します。FML 型バッファを使用して Tuxedo .NET アプリケーションを開発するには、以下の手順に従います。

  1. FML フィールド テーブル ファイルを定義します。
  2. Tuxedo .NET ワークステーション クライアント ユーティリティ mkfldcs を使用して、フィールド テーブル ファイルを C# ソース ファイルにコンパイルします。生成される C# ファイルには、フィールド テーブル ファイルに定義されたすべての FML フィールド ID の定義が含まれたパブリック クラスがあります。mkfldcs(1) も参照してください。

  3. .NET アプリケーションを記述します。
  4. TypeFML クラスのメソッドを使用して、FML データを作成し、アクセスします。

FML 型バッファのプログラミングの詳細については、『FML を使用した Tuxedo アプリケーションのプログラミング』を参照してください。

コード リスト 4 mkfldcs を使用した FML 自動生成コード (C# サンプル コード)
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
コード リスト 5 TypedFML クラス (C# サンプル コード)
……

TypedFML fmlbuf = new TypedFML(2048);

short s = 123;

fmlbuf.Fadd(fnext_flds.F_short, s);

……

fmlbuf.Resize(3000);

……

fmlbuf.Dispose();

……

VIEW/VIEW32 型バッファ

Tuxedo .NET ワークステーション クライアントでは、クラス TypedVIEW を使用して、VIEW/VIEW32 データを作成し、アクセスします。VIEW/VIEW32 型バッファを使用して Tuxedo .NET ワークステーション クライアント アプリケーションを開発するには、以下の手順に従います。

  1. VIEW 定義ファイル (.v) を定義します。
  2. Tuxedo .NET ワークステーション クライアントの viewcs ユーティリティを使用して、VIEW 定義ファイルを VIEW バイナリ ファイル (.VV) にコンパイルします。詳細については、「viewc(1)」、「viewcs(1)」を参照してください。
  3. Tuxedo .NET ワークステーション クライアントの viewcs ユーティリティを使用して、クラス TypedVIEW から導出される C# 定義コード、および対応する .dll ライブラリ (必要に応じて) を VIEW バイナリ ファイルから生成します。
  4. クラス TypedVIEW を使用して、.NET アプリケーションを記述します。
  5. クラス TypedVIEW には、以下の 2 つのオプションがあります。

    • オプション 1: 環境変数なし
    • このオプションは、TypedVIEW の最も一般的な使用法です。

      viewcs ユーティリティを使用して、派生クラス TypedVIEW の C# 定義コードを xxx.VV ファイルから生成します。その後、C# コードを .exe ファイルにコンパイルします。環境変数を追加する必要はありません。

      次に使用例を示します。

      viewcs(32) view1.VV view2.VV
      buildnetclient -o simpapp.exe simpapp.cs view1.cs view2.cs
    • オプション 2: .NET アセンブリ環境変数を使用する
    • viewcs ユーティリティと .NET アセンブリ環境変数を併用すると、.dll ライブラリを生成できます。viewcs によって生成される .dll ライブラリを表示するには、.NET アセンブリ環境変数 ASSFILES および ASSDIR (VIEW32 の場合は、ASSFILES32 および ASSDIR32) を適宜設定する必要があります。

      注意 : TypedView は、.NET 環境では、C# コードではなく、.dll ライブラリにリンクする必要があります。TypedView によって、クラス型が .dll ライブラリまたは .exe ファイルにコンパイルされるためです。定義が .dll ライブラリと .exe ファイルの両方にコンパイルされる場合、この 2 種類のファイルに出力されるバイナリは同じではありません。

      上記の環境変数を使用すると、.dll ライブラリを自動的に、または手動で生成できます。

      viewcs によって自動生成される .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%

      手動で生成する .dll ライブラリ

      特定の統合プログラミング環境 (たとえば、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 型バッファの使用方法を表しています。

Visual Basic (VB) を使用したプログラミング

.NET Framework 環境の 1 つの利点は、言語の統合です。.NET アセンブリが生成されると、.NET でサポートされる言語のどれを使用しても、その .NET アセンブリでアプリケーションを開発できます。そのため、J#、VB、C++ など、.NET でサポートされる言語のどれを使用しても、Tuxedo .NET ワークステーション クライアント アプリケーションを開発できます。

VB 言語のサンプル コードを以下に示します。

コード リスト 6 Visual Basic .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

.NET ワークステーション クライアントのビルド

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 に定義されます。

コード リスト 7 例外処理 (C# サンプル コード)
……

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 ワークステーション クライアントのサンプル

Tuxedo .NET ワークステーション クライアント パッケージには、3 つのサンプル アプリケーションがバンドルされています。

サンプル アプリケーションにアクセスするには、以下の手順に従います。

  1. 各サンプル アプリケーションのディレクトリ内の readme.nt ファイルを読みます。
  2. setenv.cmd を実行して、Tuxedo 環境変数を設定します。
  3. nmake -f xxx.nt を実行して、Tuxedo .NET ワークステーション クライアント アプリケーション、Tuxedo サーバ プログラム、および Tuxedo TUXCONFIG ファイルをビルドします。
  4. tmboot -y を実行して、Tuxedo アプリケーションを起動します。
  5. Tuxedo .NET ワークステーション クライアント アプリケーションを実行します。

 


関連項目


  ページの先頭       前  次