目次 前 次 PDF


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

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ワークステーション・クライアントには、以下のコンポーネントが含まれています。
ラッパー・アセンブリ: libwsclient.dll
このMicrosoft .NET Frameworkの.dllアセンブリでは、Tuxedo .NETワークステーション・クライアントの開発に使用される、Tuxedo ATMIおよびFMLの関数がラッピングされます。
ユーティリティ: viewcsviewcs32mkfldcsmkfldcs32、およびbuildnetclient
上記のユーティリティの実行可能ファイルを使用すると、TuxedoのVIEW/VIEW32型バッファおよびFML/FML32型バッファを使用して、C#コードを開発することも、C#コードをTuxedo .NETワークステーション・クライアントのアセンブリの実行可能ファイルにコンパイルすることも、効率的に行うことができます。詳細は、「viewcs、viewcs32(1)」「mkfldcs、mkfldcs32(1)」「buildnetclient(1)」を参照してください。
サンプル・アプリケーション: callapp、fmlviewapp、およびunsolapp
上記3つのサンプルは、C#を使用したTuxedo .NETワークステーション・クライアント・アプリケーションの作成方法を表しています。「Tuxedo .NETワークステーション・クライアントのサンプル」を参照してください。
制限事項
Tuxedo .NETワークステーション・クライアントには、以下の制限事項があります。
サポート範囲は、.NET言語を使用したTuxedoワークステーション・クライアントの開発に限定されています。.NET環境のTuxedoネイティブ・クライアントおよびTuxedoサーバーの開発は、サポートしていません。
MBSTRINGデータ型はサポートされていません。FLD_MBSTRING型はFMLまたはVIEWバッファではサポートされていません。
Tuxedo 11gR1以降で導入された新しいATMIの関数は、Tuxedo .NETワークステーション・クライアント・パッケージには含まれていません(たとえば、tpxmltofml32(3)tpfmltoxml32(3))。
TXトランザクション・インタフェース(たとえば、tx_open()tx_close()、およびtx_begin())は、Tuxedo .NETワークステーション・クライアントでサポートされていません。Tuxedo TPトランザクション関数だけが使用可能ます
Tuxedo .NETワークステーション・クライアントの実装には、ATMIクライアント機能が必要です。Tuxedoのインストール時、完全インストール・セットまたは.NETクライアント・インストール・セットを選択すると、ATMIクライアント・インストール・セットも自動的にインストールされます。
Tuxedo .NETクライアントのインストールおよびTuxedoのインストール・セットの詳細は、「Oracle Tuxedoシステムのインストール」を参照してください。
Tuxedo .NETワークステーション・クライアントを使用するには、Microsoft .NET Framework 4.0または4.5をインストールする必要があります。Microsoft .NET Frameworkは、Tuxedo .NETワークステーション・クライアント・パッケージにバンドルされていません。
Microsoft .NET FrameworkのダウンロードおよびMicrosoft .NET Frameworkの詳細は、Microsoftの.NET Developer Centerを参照してください。
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 Tuxedo .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は、コマンド行から登録/登録解除できます。
登録するには、次のとおりに入力します。
VS2010(.NET 4.0)の場合: %ProgramFiles(x86)% /Microsoft SDKs/Windows/v7.0A/bin/NETFX 4.0 Tools/gacutil.exe /i %TUXDIR%\bin\libwscdnet.dll
VS2012(.NET 4.5)の場合: %ProgramFiles(x86)% /Microsoft SDKs/Windows/v8.0A/bin/NETFX 4.0 Tools/gacutil.exe /i %TUXDIR%\bin\libwscdnet.dll
登録を解除するには、次のとおりに入力します。
VS2010(.NET 4.0)の場合: %ProgramFiles(x86)% /Microsoft SDKs/Windows/v7.0A/bin/NETFX 4.0 Tools/gacutil.exe /u libwscdnet.dll
VS2012(.NET 4.5)の場合: %ProgramFiles(x86)% /Microsoft SDKs/Windows/v8.0A/bin/NETFX 4.0 Tools/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関数との比較)は、以下のとおりです。
クラスAppContextは、ほとんどすべてのATMI C関数をまとめる際に使用します。
Tuxedoトランザクションはクラスとしてカプセル化されています。トランザクション関連の関数はすべてクラスTransactionのメソッドとして定義されています(たとえば、tpbegin()tpcommit()など)。
例外クラスはエラー処理を制御します。
Tuxedoの型付きバッファのカプセル化は、クラスTypedBufferおよびその派生クラスを使用して処理されます。「型付きバッファ」を参照してください。
Tuxedo .NETワークステーション・クライアントのネームスペース
Tuxedo .NETワークステーション・クライアントのネームスペースは、2つのカテゴリに分類されます。最初のカテゴリには、2つのネームスペースBea.Tuxedo.ATMIBea.Tuxedo.FMLがあり、ATMIおよびFMLのラッパー・クラスがまとめられています。
2つ目のカテゴリでは、Bea.Tuxedo.Autogen namespaceが使用され、自動生成の.NETクラスがすべて.NETクライアント・ユーティリティでまとめられています。
前述のネームスペースには、『Tuxedo .NETワークステーション・クライアントのAPIリファレンス』に記載された関数に関連付けられたすべてのクラスと構造が含まれています。
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()を呼び出す必要があります。そうしないと、以下の現象が発生する可能性があります。
ガーベッジ・コレクタ(gc)が、Tuxedoコンテキストのセッションを終了せずに、AppContextクラスのインスタンスを破棄します。
クライアントとWSHの間の接続が、タイムアウトするまで保持されます。
以下のサンプルは、シングル・コンテキストの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フィールド表ファイルを定義します。
Tuxedo .NETワークステーション・クライアント・ユーティリティmkfldcsを使用して、フィールド表ファイルをC#ソース・ファイルにコンパイルします。生成されるC#ファイルには、フィールド表ファイルに定義されたすべてのFMLフィールドIDの定義が含まれたパブリック・クラスがあります。mkfldcs(1)も参照してください
2.
.NETアプリケーションを記述します。
TypeFMLクラスのメソッドを使用して、FMLデータを作成し、アクセスします。
FML型バッファのプログラミングの詳細は、『FMLを使用したTuxedo ATMIアプリケーションのプログラミング』を参照してください。
注意:
.NETワークステーション・クライアントは、FML32バッファ内のFLD_MBSTRINGフィールドをサポートしています。詳細は、「Fmbpack32()」および「Fmbunpack32()」を参照してください。
リスト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アプリケーションを記述します。
クラス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つのサンプル・アプリケーションがバンドルされています。
基本サンプル
Tuxedo .NETワークステーション・クライアント・アプリケーションの開発方法を表しています。
型付きバッファ・サンプル
Tuxedo .NETワークステーション・クライアント・アプリケーションのFML/VIEW型バッファの使用方法を表しています。
非請求メッセージ・サンプル
Tuxedo .NETワークステーション・クライアント・アプリケーションの非請求メッセージ・ハンドラの登録方法を表しています。
 
サンプル・アプリケーションにアクセスするには、以下の手順に従います。
1.
各サンプル・アプリケーションのディレクトリ内のreadme.ntファイルを読みます。
2.
setenv.cmdを実行して、Tuxedo環境変数を設定します。
3.
nmake -f xxx.ntを実行して、Tuxedo .NETワークステーション・クライアント・アプリケーション、Tuxedoサーバー・プログラム、およびTuxedo TUXCONFIGファイルをビルドします。
4.
tmboot -yを実行して、Tuxedoアプリケーションを起動します。
5.
Tuxedo .NETワークステーション・クライアント・アプリケーションを実行します。
関連項目
viewc、viewc32(1); viewcs、viewcs32(1)
「mkfldhdr、mkfldhdr32(1)」、「mkfldcs、mkfldcs32(1)」
『C言語を使用したOracle Tuxedo ATMIアプリケーションのプログラミング』
『Oracle Tuxedo ATMI C言語関数リファレンス』
『Oracle Tuxedo ATMI FML関数リファレンス』
『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved