Microsoft .NET コネクタ

Select

​.NET コネクタを使用すると、Mule Runtime アプリケーションでネイティブの .NET コードを実行できます。

サポートされているシナリオは、既存のバイナリアセンブリ (DLL) でコードを変更せずに実行することや、インテグレーションアプリケーションの機能を拡張する .NET コードを新たに開発することなどです。

このコネクタは、Java ネイティブインターフェース (JNI) を使用して .NET コードを実行します。JNI は Java 仮想マシン (JVM) と、ホストのオペレーティングシステムで実行されるネイティブアプリケーション間の高速プロセス間通信を可能にします。

このコネクタは Execute 操作という 1 つの操作をサポートします。ユーザは実行するクラスやメソッドを選択し、そのメソッドに対応する引数を渡すことができます。

前提条件

このドキュメントは、読者が Mule、Anypoint コネクタ、Anypoint Studio、Mule の概念、Mule フローの要素、グローバル要素に精通していることを前提としています。

ハードウェアとソフトウェアの要件および互換性に関する情報は、「コネクタリリースノート」を参照してください。

Maven でこのコネクタを使用するには、Anypoint Exchange の [Dependency Snippets (連動関係スニペット)] で pom.xml の連動関係情報を確認してください。

注意: このコネクタは、Anypoint Design Center では使用できません。

このコネクタの新機能

これは初めての Mule 4 リリースです。

Anypoint Studio 7 での接続

このコネクタを Anypoint Studio で使用するには、まず Exchange からダウンロードして必要に応じて設定します。

Studio でコネクタをインストールする

  1. Anypoint Studio で、Studio タスクバーの Exchange アイコンをクリックします。

  2. Anypoint Exchange で [Login (ログイン)] をクリックします。

  3. このコネクタを検索して [Install (インストール)] をクリックします。

  4. 画面の指示に従ってこのコネクタをインストールします。

Studio で設定する

  1. コネクタをドラッグして Studio キャンバスにドロップします。

  2. 一般設定で次の項目に入力します。

    Studio の [General (一般)] タブ
    • Scope (スコープ): モジュールの範囲。

      • Singleton (単一): .NET コンポーネントの同じインスタンスを複数のコールで共有します。このオプションは、さまざまなコールのクラスインスタンスメンバーに共有する状態を保存する場合に役立ちます。

      • Transient (一時的): 要求があった時点で .NET コンポーネントの新しいインスタンスを作成します。

    • Grant Full Trust to the assembly (アセンブリに完全信頼を付与): Mule Runtime の安定性に影響を及ぼす可能性のあるマルウェアコードの実行を阻止するために、制限された権限を使用して .NET コードをアプリケーションドメイン内で実行します。これらの制限には、限定的なファイルシステムへのアクセス、ネイティブコードの実行、ネットワークコール、レジストリアクセスなどが挙げられます。.NET コネクタはデフォルトで、完全信頼を使用するように設定されています。

      • Declared methods only (宣言されたメソッドのみ): デフォルト値は true です。

      • Include auto generated code (自動生成されたコードを含める): デフォルト値は false です。

  3. [Assembly (アセンブリ)] セクションで選択した接続種別に応じて、項目を次のとおり指定します。

    • リソース接続種別の場合 - [Path (パス)] 項目に、リソースフォルダ (デフォルトのリソースフォルダは src/main/resources) にある実行可能な .NET ライブラリへの相対パスを指定します。

      Studio のリソースアセンブリ
    • 外部接続種別の場合 - [Path (パス)] 項目に、実行可能な .NET ライブラリへのフルパスを指定します。

      Studio の外部アセンブリ
    • GAC 接続種別の場合 - [Assembly Type (アセンブリ種別)] 項目に、完全修飾種別名 (例: Namespace.ClassName) を指定します。この種の設定は、GAC (グローバルアセンブリキャッシュ) にインストールされているアセンブリに使用します。

      Studio のグローバルアセンブリ
    • レガシー接続種別の場合 - [Assembly Type (アセンブリ種別)] 項目に、完全修飾種別名 (例: Namespace.ClassName) を指定します。[Assembly Path (アセンブリパス)] には、.NET アセンブリのパス (例: C:\Projects\..dll) を指定します。

      レガシーアセンブリ

ユースケース: Studio

Studio のフロー図
  1. フローに HTTP リスナを追加します。

  2. 緑のプラス記号をクリックして設定します。

  3. [Host (ホスト)] を「localhost」、[Port (ポート)] を「8081」に設定します。

  4. [OK] をクリックします。

  5. パレットの Microsoft .NET コネクタから Execute 操作を追加します。

  6. 緑のプラス記号をクリックして、接続を設定します。

  7. 前述の「Studio での設定」セクションの説明に従って、項目を設定します。

  8. 型とメソッドのパラメータを選択して、引数を指定します。

  9. Transform Message (メッセージの変換) DataWeave コンポーネントを追加して、次のとおり設定します。

    %dw 2.0
    output application/json
    ---
    payload
  10. localhost:8081 に対して curl を実行します。

ユースケース: XML

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:dotnet="http://www.mulesoft.org/schema/mule/dotnet"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/dotnet
http://www.mulesoft.org/schema/mule/dotnet/current/mule-dotnet.xsd
http://www.mulesoft.org/schema/mule/ee/core
http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
	<http:listener-config name="HTTP_Listener_config"
	doc:name="HTTP Listener config"
		<http:listener-connection host="localhost" port="8081" />
	</http:listener-config>
	<dotnet:dot-net-config name="Microsoft_DotNet" doc:name="Microsoft DotNet">
		<dotnet:resource-connection scope="Singleton" path="DemoDotNet.dll" />
	</dotnet:dot-net-config>
	<flow name="sum-of-digits">
		<http:listener doc:name="Listener"
		config-ref="HTTP_Listener_config"
		path="/sumOfDigits"/>
		<ee:transform doc:name="Transform Message">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
	number: payload.num
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<dotnet:execute doc:name="Execute" config-ref="Microsoft_DotNet"
		type="DemoDotNet.NumberLibrary, DemoDotNet, Version=1.0.0.0,
		Culture=neutral, PublicKeyToken=PUBLIC_KEY_TOKEN"
		method="DemoDotNet.NumberLibrary, DemoDotNet, Version=1.0.0.0,
		Culture=neutral,
		PublicKeyToken=PUBLIC_KEY_TOKEN | SumOfDigits(System.Int32 number) -&gt; System.Int32"/>
		<ee:transform doc:name="Transform Message">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
			</ee:message>
		</ee:transform>
	</flow>

</mule>

Was this article helpful?

💙 Thanks for your feedback!