あなたは二つのことを求めているように見える -
- シリアルポート経由でいくつかのデバイス、または他をいじるますWindows上で長時間実行、永続的なアプリケーションをホストする方法。
- 他のアプリケーションからそのアプリケーションに通信する方法。
Windowsサービスは、最初の素晴らしいソリューションです。 Windowsサービスは、カスタムロジックのアプリケーションホストとして機能します。共通のUIとAPIを使用して、起動/停止と軽量の監視と設定機能を提供します。 C#でWindowsサービスを構築するのは簡単です。 GUIツールからのコマンドラインから、アプリケーションからWindowsサービスを簡単に開始および停止することができます。
WCFは主に通信インターフェイスと考えてください。 WCFを使用して、Windowsサービスによって公開される外部インターフェイスを構築することができます。 .NETまたはHTTPクライアント(RESTまたはSOAP)からアプリ(サービス)に接続する場合は、WCFが機能します。
COM .... COMが適合する場所で発生している混乱は、COMがインターフェイスメカニズム(IDispatch、IUnknownなど)をホスティング+ライフサイクルモデル(ローカルサーバー、Inprocサーバー、リモートサーバ、要求に応じて自動起動など)。 COMのホスティングとライフサイクルの仕事はうまくいったが、いつもかなりスリムであった。どんなサービスが稼働しているか、どれくらいの期間、知るのは難しいです。オンデマンドで始動と停止が難しい。
COMは、この状況では、WCFのように、主に通信インターフェイスとして重要です。コンポーネントベースのインターフェイスを使用してサービスに接続する場合、COMはWindowsサービスを補完してホスティングすることができます。
COMとWCF(RESTまたはSOAP)は互いに排他的ではなく、実際には複数のアプリケーションが複数のインターフェイスを公開しています。あなたは、どちらか一方、あるいは両方を行うことを選ぶかもしれません。間違った答えはありません、それはあなたの要求に依存します。
私がこれをやっていたら、私はWindowsサービスを使い、そのサービスからCOMインターフェイスを公開します。as described hereライフサイクルとホスティングは、Windowsサービスによって処理されます。 COMを介してサービスにアクセスできます。これは、実質的に任意のプログラミング言語またはスクリプト言語/環境を経由することを意味します。 Javascript、VB6、ExcelまたはOFfice、Python、Perlなど。
サービスからWCFインターフェイスを公開することも考えています。これにより、どのRESTクライアントも接続できるようになります。 WCFは無線電話、COMは固定電話と考えてください。時には1つしか必要ないこともあります。時には両方をしたい場合もあります。
返信いただきありがとうございます。しかし、サービス上の公開機能にはどのようにアクセスしますか?また、サーバーは別のアプリによって起動され、そのアプリが終了すると停止する必要があります。サービスにはこの機能がありますか? – cachance7
WCF経由でメソッドにアクセスします。したがって、正しい答えは、通信インターフェイスにWCFを使用し、ライフサイクルのためにWindowsサービス - サービスの開始と停止です。 – Cheeso