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の関数がラッピングされます。
•
|
ユーティリティ: viewcs、 viewcs32、 mkfldcs、 mkfldcs32、および buildnetclient
|
•
|
サンプル・アプリケーション: callapp、fmlviewapp、およびunsolapp
|
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.dll、
libengine.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.dllは libwscdnet.dllの実行時のみ必要です。 buildnetclientでアプリケーションのソース・ファイルを.NET実行可能ファイルにビルドする際は、不要です。
|
このライブラリは、今後、Microsoft .NET FrameworkがMicrosoft Windowsファミリ以外のプラットフォームに移植された場合に使用できるように、予約されています。

.
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ワークステーション・クライアント・アプリケーションを開発するプログラマは、以下のことを行う必要があります。
2.
|
Tuxedoワークステーション・クライアントの環境設定
|
3.
|
Tuxedo/WSプロトコルを介したTuxedoサービスへのアクセス
|
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.ATMIと
Bea.Tuxedo.FMLがあり、ATMIおよびFMLのラッパー・クラスがまとめられています。
2つ目のカテゴリでは、
Bea.Tuxedo.Autogen namespaceが使用され、自動生成の.NETクラスがすべて.NETクライアント・ユーティリティでまとめられています。
前述のネームスペースには、
『Tuxedo .NETワークステーション・クライアントのAPIリファレンス』に記載された関数に関連付けられた
すべてのクラスと構造が含まれています。
AppContextクラスは、Tuxedoサービスへのアクセス関数の実行に使用するキー・クラスです。
AppContextを使用すると、マルチコンテキスト・クライアント・アプリケーションでOOプログラミング手法を活用できます。
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に組み込まれているバッファ・タイプ
FML、
FML32、
VIEW、
VIEW32、
CARRAY、および
STRINGをサポートしています。
図2は、Tuxedo .NETワークステーション・クライアントの型付きバッファ・クラスの階層を表しています。
Tuxedo .NETワークステーション・クライアントのクラス
TypedBufferは、Tuxedoの具体的なバッファ・タイプすべてのベース・クラスであり、低次の関数を派生クラスすべてに継承しています。クラス
TypedBufferは
抽象クラスであり、インスタンスの作成には使用できません。

.
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();
������
Tuxedo .NETワークステーション・クライアントでは、クラス
TypedFML/
TypedFML32を使用して、ほとんどのFML C関数を定義します。FML型バッファを使用してTuxedo .NETアプリケーションを開発するには、以下の手順に従います。
Tuxedo .NETワークステーション・クライアント・ユーティリティ
mkfldcsを使用して、フィールド表ファイルをC#ソース・ファイルにコンパイルします。生成されるC#ファイルには、フィールド表ファイルに定義されたすべてのFMLフィールドIDの定義が含まれたパブリック・クラスがあります。
mkfldcs(1)も参照してください
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();
������
Tuxedo .NETワークステーション・クライアントでは、クラス
TypedVIEWを使用して、VIEW/VIEW32データを作成し、アクセスします。VIEW/VIEW32型バッファを使用してTuxedo .NETワークステーション・クライアント・アプリケーションを開発するには、以下の手順に従います。
2.
|
Tuxedo .NETワークステーション・クライアントの viewcsユーティリティを使用して、VIEW定義ファイルをVIEWバイナリ・ファイル(.VV)にコンパイルします。詳細は、 「viewc(1)」、 「viewcs(1)」を参照してください。
|
3.
|
Tuxedo .NETワークステーション・クライアントの viewcsユーティリティを使用して、クラス TypedVIEWから導出されるC#定義コード、および対応する .dllライブラリ(必要に応じて)をVIEWバイナリ・ファイルから生成します。
|
4.
|
クラス 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
•
|
オプション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%
特定の統合プログラミング環境(たとえば、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ワークステーション・クライアント・アプリケーションを開発できます。
リスト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
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に定義されます。
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およびシステム・プロセス・リファレンス』
|