2017-12-02 3 views
3

既存のWindowsサービスへのコマンドラインインターフェイスを実装するための最良の方法を誰かが持っているのだろうかと思います。ベストプラクティス:.NET/Coreの既存のWindowsサービスへのCLIの追加

理想的には、次の要件を満たすことができます。

  • は、.NETのコアをサポートし、クロスプラットフォーム
  • は自己ホスト型(すなわちない独立した実行可能ファイル)
  • です作品いずれかでグローバルに登録し、利用可能です
  • 既存のWebアプリケーションを経由してリモート端末にアクセスするためのWebインターフェイスにパイプすることができます
  • otの端末で利用できます彼女のローカルネットワークデバイス

大きな要件は、これはクロスプラットフォームで動作し、Windowsに縛られていないことです。どんな提言も非常に高く評価されています!

答えて

4

「what is the best」というフレーズを特徴とする質問は、通常、主観的であるため、stackoverflowにはあまり適していません。質問には正解はないかもしれませんが、良いものがいくつかあります。

これまで数回雇ってきたオプションの1つは、telnet経由でアクセスする単純なシェル/コマンドプロンプトのようなものを実装することです。あなたはリッスンソケット(TcpListener)を開いて、送信されたテキストコマンドを受け入れるか、テキストを書き込んでいきます。シンプルなtcpサーバのウェブ上にはバケツロードの例がありますので、ここでは何もコードを提供しません。あなたのポイントに関しては:

は、.NETのコアをサポートし、それは、TCPベースのクロスプラットフォーム

を働き、これは本質的な

であることは、自己ホスト型(すなわちない独立した実行可能ファイル)

です

アプリ起動時に開始され、アプリによってホストされ、複雑なIPcは不要

グローバルに登録されており、どの端末でも利用できます(つまり、 >て、myApp doThis願い--prettyplease)

ファイアウォールは、既存のWebアプリケーション

経由でリモート端末にアクセスするためのWebインターフェイスにパイプさおそらく

コールを伝えるあなたのリモートデバイスを停止する唯一のものです

テルネットのhtml5/webベースの実装が存在します。シンプルなWebインターフェイスを作ることもできます(ブラウザをtelnetのように扱います;これらの違いはほとんどありません.HTTPプロトコルのテキストをブラウザに追加するだけです)。あなたはそれをフィルタリングし、ちょうど

最後の時間を超える対象、他のローカルネットワークデバイス

上の端子を介して利用可能であることをユーザが変えることができ、興味深いビット(URL))を取得することができます私はこれを、クレジットカード端末が使用していたサーバー上に実装しました。それはすでにリスニングソケットを持っていて、クライアントは厳密なプロトコルに従っていたので、メッセージがプロトコルと一致しなかったときに検出して、代わりにコマンドとして扱うのは簡単でした。システムはシンプルなTelnetインターフェイスを介してサーバーをリモートで設定可能になり、新しいクレジットカードの範囲とルーティングを追加し、デバッグ出力を有効にし、すべてのトラフィックをテルネットクライアントに送信し、特定のカード端末を監視されるなど。それはそれはちょうど最も最近のエラーが原因できれいにフォーマットのリストを提供すること、HttpListenerをに基づいて、あまりにもWebインターフェイスを持っていたif(command == "debug") Global.DebugLoggingStream = tcpWriterStream

command = streamreader.ReadLine()のcompsci101ものよりものnothinた、などいくつかのコンフィグ設定が...いくつかのものは、より良いのですテーブル内のWebページは80文字の列形式ではありません。最終的に私はこれをターミナルのようにアップグレードしました。ユーザはコマンドでURLを終了することができ、コマンドは実行され、結果は配列に格納されます。ページが提供されるたびに、配列がダンプされたので、それはコマンドシェルの一種となり、telnetを必要としませんでした。リアルタイムのデバッグやメッセージの表示などには便利なのでtelnetインターフェイスを使用しましたが、本当に面白くしたいのであれば、今日はそのようなことにWebソケットが存在します。

別の考えが私を襲った。 Webベースのircクライアントと組み合わされたircサーバーの実装をac#で見つけることができれば、あなたのサービスと "チャット"する方法を提供するでしょう(これはほとんどすべてですコマンドシェルは、プログラムとテキストチャットをする人間)

関連する問題