Tuxedo .NETワークステーション・クライアントの使用

     前  次    新規ウィンドウで目次を開く    PDFとして表示 - 新規ウィンドウ  Adobe Readerを入手 - 新規ウィンドウ
コンテンツはここから始まります

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

このトピックには次の項が含まれます:

 


概要

Microsoft .NETプログラマにとって、Tuxedo .NETワークステーション・クライアントは、Tuxedo .NETワークステーション・クライアント・アプリケーションの開発を効率化する、生産性向上ツールです。このツールでは、.NETプログラマとのインタフェースがオブジェクト指向(OO)であるだけでなく、コードの設計および記述もOO手法で行うことができます。

Tuxedo .NETワークステーション・クライアントは、ATMIの関数呼出しの動作をほとんどすべて継承しています。そのため、Tuxedoプログラマは、.NETクライアントのクラスを簡単に理解し、使用して、アプリケーションを記述できます。Tuxedo .NETワークステーション・クライアントは、.NETアセンブリとして公開されるため、.NET Frameworkの利点も活用されます。.NETワークステーション・クライアントは、さまざまな.NETプログラミング言語(たとえば、C#、J#、VB.NET、およびASP.NET)で使用できます。

注: Tuxedoワークステーション・クライアントは、Microsoft Framework 4.0および4.5でテスト済で、これらのバージョンを公式にサポートしています。

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は、.NETプログラミング言語で記述されたTuxedoワークステーション・クライアントを構築するため、libwscdnet.dllを参照します。それは共通言語ランタイム(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 4.0または4.5 SDKをご使用のシステムにインストールする必要があります。Oracle Tuxedoのインストーラ・プログラムでは、.NET Frameworkがインストールされているかどうかが自動的にチェックされます。インストールされている場合は、libwscdnet.dllが.NET Frameworkのグローバル・アセンブリ・キャッシュに自動的に登録されます。

.NET Frameworkがインストールされていない場合は、インストールする必要があります。.NET Frameworkは、Microsoftの.NET Developer Centerからダウンロードできます。.NET Frameworkのインストール後は、libwscdnet.dllをグローバル・アセンブリ・キャッシュに手動で登録することを強くお薦めします。

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 ATMIアプリケーションのプログラミング』「マルチスレッドおよびマルチコンテキストATMIアプリケーションのプログラミング」を参照してください。

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); // connect to Tuxedo domain

……

ctx1.tpterm(); // disconnect from Tuxedo domain

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

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

TypedTPINIT tpinfo = new TypedTPINIT();

tpinfo.flags = TypedTPINIT.TPMULTICONTEXTS; // set multi context flag

// connect to the first Tuxedo domain

AppContext ctx1 = AppContext.tpinit(tpinfo);

Utils.tuxputenv("WSNADDR=//10.2.0.5:1001");

// connect to the second Tuxedo domain

AppContext ctx2 = AppContext.tpinit(tpinfo);

……

ctx1.tpterm(); // disconnect from the first Tuxedo domain

ctx2.tpterm(); // disconnect from the second Tuxedo domain

型付きバッファ

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 ATMIアプリケーションのプログラミング』を参照してください。

リスト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ライブラリにリンクする必要があります。それによって、クラス型が.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の構文例を次に示します。

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);   // connect to Tuxedo domain

……
      ctx1.tpterm();         // disconnect from Tuxedo domain
       ……
} 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ワークステーション・クライアント・アプリケーションを実行します。

 


関連項目


  先頭に戻る       前  次