0

Windows Presentation Foundation を使用して大規模なデスクトップ アプリケーションを開発しています。現在、アプリケーションは内部使用向けですが、最終的には商用製品として販売される予定です。私は現在、MV-VM デザイン パターンのバリエーションを使用して、UI コンポーネント (つまり、ウィンドウ、ユーザー コントロール) からできるだけ多くのコードを除外しています。ある時点で、パブリック API を公開して、顧客がアプリケーションを拡張できるようにしたいと考えています。また、別の .NET アプリケーションからパブリック API を使用して、アウトプロセスでアプリケーションを自動化することさえできるかもしれません。デスクトップ アプリケーション用のパブリック API を設計した経験があまりないので、ベスト プラクティスに関する情報を探しています。

以下は、私が現在持っているいくつかの質問です。

1) 独自のプロセスで実行されている別の .NET アプリケーションからプロセス外で自動化できるように WPF アプリケーションを設計するにはどうすればよいですか? たとえば、顧客がコンソール アプリケーションを実行していて、WPF アプリケーションの開始を自動化し、WPF アプリケーションで特定のウィンドウを開きたいとします。これがどのように達成できるかわかりません。コンソール アプリを実行していて、コードを使用して WPF アプリケーションの新しいインスタンスを作成しようとすると、次のエラーが表示されます:「同じ AppDomain に複数の System.Windows.Application インスタンスを作成できません」。このエラーが発生するのは、コンソール アプリが現在の AppDomain で WPF アプリケーションを開始できないために発生することを理解していますが、.

2) 私が求めていることは、COM+ を使用して Excel をアウトプロセスで実行できるようにする Excel の自動化に多少似ていることを理解しています。ただし、Excel はアンマネージ コードで記述されており、WPF アプリケーションは明らかに 100% マネージ コードです。別の .NET アプリケーションからパブリック API オブジェクト モデルを介して WPF デスクトップ アプリケーションをプロセス外で制御できるようにするために、COM+ に頼る必要があるでしょうか?

3) パブリック API を介してアプリケーションを自動化できるようにしたい場合、.NET Remoting を検討する必要がありますか? それとも、.NET Remoting は廃止されたと見なされますか?

4) 実行時に読み込まれる動的アドインの使用を許可する方法をよく理解しています。ただし、アドインのコードが WPF アプリケーションを操作するために使用できるパブリック API が必要です。デスクトップ アプリケーションの API 設計に関する優れたリソースは何ですか?

フィードバックをいただければ幸いです。別の .NET アプリケーションからの自動化を可能にするパブリック API を使用した .NET デスクトップ アプリケーションの開発に関する情報を見つけることは非常に困難でした。

ありがとう、クリス。

4

1 に答える 1

0

はい、Office オートメーション モデルは、依然としてプロセス外のオートメーションを実装するための主要な方法です。何よりも、ほぼすべての言語がサポートされているためです。.NET で実装するのはそれほど簡単ではありません。アウトプロセスの COM アクティベーションをすぐにサポートしていません。COM+ でそれを行う方法については、ここを読み始めてください。

はい、クライアントが .NET アプリの場合、Remoting も確実に機能します。完全に廃止されたわけではありませんが、事実上 WCF に置き換えられています。

于 2010-01-26T15:27:43.063 に答える