3

外部プロセス (powershell スクリプト) を開始する MVC アプリにエンドポイントを設定しています。出力が作成されたときに、出力を「ライブ」ブラウザにリダイレクトできるようにしたいと考えています。これを行う方法の例はありますか?

ありがとう!

4

2 に答える 2

1

プロセスの標準出力ストリームを読み取り、SignalRを介してブラウザーにフィードすることは機能するはずです。ここでは、SignalR の使用を開始するのに役立ついくつかの例を見つけることができます。

これは、試してみることにした場合にも役立ちます。

Hub の外部から Hub 経由でブロードキャストする(ページの下部)

私自身、SignalR を同様のシナリオ (長時間実行される操作のリアルタイムの進行状況をブラウザーにフィードする) でうまく使用しています。

于 2012-08-07T12:24:41.830 に答える
0

あなたが検討するかもしれないアプローチは、Web ブラウザーを介してリモート クエリを許可するために小さな販売時点管理アプリケーションで使用したものです。

アプリケーションの残りの部分に接続された DLL として独自のスレッドで実行される単純な Web サーバーを作成しました。アプリケーションが起動すると、Web サーバーも起動する必要があるかどうかがチェックされます。

これは、C++ および CAsynch ソケットを使用する非常に単純な Web サーバーでしたが、別のコンピューターから Web ブラウザーを使用して 2 種類のアクセスを行うことが許可されていました: (1) HTML ページ、Javascript、画像などのファイルをプルダウンします。通常の Web サーバーのように、(2) レポートを生成するなど、機能固有の URL で特定の機能コンポーネントをアクティブにします。

これを使用して、JSON で JavaScript を使用することにも成功しました。

単純な HTTP Web サーバーのソース コード サンプルをさまざまな言語で見つけることができる場所は多数あり、stackoverflow の質問にはいくつかの例とリンクがあります。

これの鍵は、Web サーバー機能に HTTP プロトコルを実装させ、追加のコンテンツをプッシュする TCP 接続を維持することです。あなたの場合の追加コンテンツは、起動したプロセスからの出力です。

したがって、これには、プロセスを起動して標準の I/O リダイレクトを実行する必要があります。これにより、起動したプロセスはパイプを介してその出力を Web サーバーに送信し、Web サーバーはパイプからプロセス出力を読み取り、それを Web サーバーに送信します。ブラウザに TCP ポートを開きます。

これを使用すると、実際に JavaScript を実行して、Web サーバーに送り返されるテキストベースのプロトコルを開発することにより、実行中のプロセスにブラウザー ユーザーがコマンドを送り返すことができます。

これの一部は、実際には Apache などの前の元の Web サーバーで使用されていた古い CGI タイプの機能に似ています。これらのサーバーが行ったことは、アプリケーションを起動することでした。通常は Perl などのスクリプトですが、C などのコンパイルされたものもあります。次に、アプリケーションから標準出力を取得し、ブラウザの TCP 接続に反映します。共通ゲートウェイ インターフェイス、それが意味するものだと思います。

于 2012-08-07T15:35:00.310 に答える