4.2.4 .NETインタフェース定義から生成したクライアントスタブの使用例
クライアントスタブの使用例を次に示します。
この例で呼び出すSPP.NETのサービスメソッドの情報は次のとおりです。
-
サービスグループ名:GRP1
-
インタフェース名:MyCompany.IGyoumuA
-
呼び出すサービスメソッド名(サービス名):Service3
-
リモートAPI機能:使用(非オートコネクトモード)
-
構成ファイル:指定あり(プロファイルID="TP1Host1")
なお,コメント中の(1),(2)などは「4.2.2 クライアントスタブの使用方法」の説明の番号に対応しています。
- 〈この項の構成〉
(1) .NETインタフェース定義の定義例(C#の場合)
namespace MyCompany { using System; public interface IGyoumuA { void Service1(string dataId, byte[] data); string[] Service2(string key); int Service3(int inCount, ref string[] ids); } }
(2) クライアントスタブの使用例(CUP.NET,C#の場合(リモートAPI機能使用時))
using System; using Hitachi.OpenTP1; using Hitachi.OpenTP1.Client; namespace MyCompany { public class CallerSample { public static void Main(string[] args) { try { TP1Client clt = new TP1Client(); // TP1Clientの生成 IGyoumuAStub server = null; // (1) クライアントスタブの生成 server = new IGyoumuAStub(clt, "GRP1"); clt.OpenRpc("TP1Host1"); // RPCオープン clt.OpenConnection(); // 常設コネクションの確立 // (2) 入力データの設定 string[] ids = {"data1", "data2", "data3"}; // (3) 同期応答型RPCに設定 server.Flags = TP1ClientFlags.DCNOFLAGS; // (4) service3を呼び出す int ret = server.Service3(3, ref ids); clt.CloseConnection(); // 常設コネクションの解放 clt.CloseRpc(); // RPCクローズ } catch (TP1UserException exp) { // Service3()からユーザ例外がスローされた } catch (TP1RemoteException exp) { // Service3()で予期しない例外発生 } catch (TP1ClientException exp) { // Client .NETが検知したエラー } catch (TP1Exception exp) { // その他スタブなど検知したエラー } catch (Exception exp) { // 予期しない例外 } } } }
(3) クライアントスタブの使用例(CUP.NET,Visual Basicの場合(リモートAPI機能使用時))
Imports System Imports Hitachi.OpenTP1 Imports Hitachi.OpenTP1.Client Namespace MyCompany Public Class CallerSample Public Shared Sub Main(ByVal args() As String) Dim clt As TP1Client Dim server As IGyoumuAStub Dim ret As Integer Dim ids() As String Try clt = New TP1Client() ' TP1Clientの生成 ' (1) クライアントスタブの生成 server = New IGyoumuAStub(clt, "GRP1") clt.OpenRpc("TP1Host1") ' RPCオープン clt.OpenConnection() ' 常設コネクションの確立 ' (2) 入力データの設定 ids = New String() {"data1", "data2", "data3"} ' (3) 同期応答型RPCに設定 server.Flags = TP1ClientFlags.DCNOFLAGS ' (4) service3を呼び出す ret = server.Service3(3, ids) clt.CloseConnection() ' 常設コネクションの解放 clt.CloseRpc() ' RPCクローズ Catch exp As TP1UserException ' Service3()からユーザ例外がスローされた Catch exp As TP1RemoteException ' Service3()で予期しない例外発生 Catch exp As TP1ClientException ' Client .NETが検知したエラー Catch exp As TP1Exception ' その他スタブなどが検知したエラー Catch exp As Exception ' 予期しない例外 End Try End Function End Class End Namespace