2009-04-22 9 views
0

バッチファイルでアクティブにできるアプリケーションを作成する必要があります。どのような種類のアプリケーションが非対話的に実行するのに最適でしょうか?

アプリケーションは、ファイル名の単一の文字列パラメータを受け入れます。次に、このファイルで何らかの処理を実行し、別のファイルを所定の場所にドロップして終了します。

アプリケーションは実際のユーザーと対話する必要はありません。

私の推奨プラットフォームはC#を使用している.netです。

私はもともとコンソールアプリケーションを作成する予定でしたが、これが最善の考えであるかどうかは分かりません。

このタスクを実行する最も良い方法は何ですか?バッチファイルによってトリガされるWindowsサービスを作成する方法はありますか?これはもっと望ましいですか? Windowsフォームプロジェクトがもっと望ましいでしょうか?

答えて

3

オプション1:コンソールアプリケーション。 Windowsスケジューラを使用してスケジュール時刻に実行します。 (推奨)

オプション2:組み込みのスケジューラまたはポーラーが組み込まれたWindowsサービスです。

0

インタラクティブでない場合は、単にコンソールをバックグラウンドに置き、そのままにしておくことができるので、コンソールはほとんど確実に動作します。

0

特定のフォルダに配置するファイルを監視するWindowsサービスを作成できます。バッチファイルは、そのフォルダにファイルを置くだけです。

ただし、これを行うよりよい理由があることをお勧めします。 「コンソールプログラムを実行してファイル名を指定するだけのバッチジョブよりも、どのように優れていますか」と尋ねます。

1

開発するのが最も速いのは、Windowsスケジュールタスク(または同様のもの)によってトリガーされるバッチファイルを持つコンソールアプリケーションです。

このようにして、スケジューリングフレームワークを用意するのではなく、アプリケーション自体の機能を開発するだけで済みます。

また、ロギング、簡単にカスタマイズ可能なスケジューリング、エラー報告などのスケジュールされたタスクによって提供される機能を利用することもできます。Windows Schdeduledタスクの別のオプションは、SQL Server Scheduled Jobsを使用することです。職歴。

あなたがそのパスを辿ると、独自のWindowsサービスを作成した場合に排除できる余分な依存関係があります。 さらに、展開が問題になる場合は、インストーラを使用してWindowsサービスを作成することで、インストールプロセスをより詳細に制御できます。

0

常時接続のコンソールアプリケーションではなく、問題のフォルダを監視するFileSystemWatcherを持つWindowsサービスです。これが彼らの目的であり、システムが失敗した場合は、ファイルを保存する必要はありません.Windowsの起動時にファイルを置く必要はありません。自動的にサービスが開始されるように設定するだけです。次のように私は会社の方針として採用することを私の以前の雇用主を説得

3

私のお気に入りのオプション、および1つは、次のとおりです。

すべてのサーバー型のアプリケーションは、任意の並べ替えの無い直接接続UIで書かれています。これをコンソールアプリケーションとしてコンパイルするか、Windowsアプリケーションとしてコンパイルするか、それとも設計段階では無関係であれ、.NETではコンパイラスイッチを切り替えるという違いがあります。しかし、プログラムは人間の介入なしに実行されているので、通常はサービスとして実行するように設計されています。サービスコントロールマネージャは起動とシャットダウンを処理し、失敗した場合にアプリケーションを再起動し、デスクトップアプリケーションを書くときに自分で行うことは難しいことです。

次に、サーバーアプリケーションはネットワーク経由で接続して、接続する「管理者」を取得します。この管理接続はあなたのUIです。 SSLの暗号化と認証のようなことは、あなたとあなたの会社に任されていますが、その基盤には、人間が読める、ラインベースのインターフェイスを構築することをお勧めします。そうすれば、telnetで接続し、 "show connections"、 "drop user 52"、 "restart"のようなコマンドを発行することができます。このインタフェースを使用して、あらゆる種類の管理上の動作、およびあらゆる種類のステータスと統計情報を公開する必要があります。まず第一に、これはデバッグに役立ち、第二に、次のステップにつながります。

最後にUIをビルドします。おそらく単純なものでしょう。このUIの設定の一部は、接続するホストとポート、および認証ビットを指定することです。 UIアプリケーションは、サービスを実行しているマシンに接続し、ネットワーク管理インターフェースを介してコマンドを発行し、結果を解釈します。私たちの会社では、新しいUIはそれぞれ、より大きなプロジェクトの一部としてスナップインモジュールでした。このプロジェクトでは、さまざまなサーバーとその状態を表す赤と緑のライトがほとんど表示されません。サーバーをクリックすると、そのサーバーに「ドリルダウン」し、その状態または構成のさまざまな側面を調べることができます。

プロジェクトはわずか1〜2台のサーバーで小さなプログラムとして開始されましたが、すばやく成長し、さまざまなオペレーティングシステムや世界中の多数の都市で実行される数多くのサービスを実行するサーバーを増やしました。このシンプルなUIポリシーにより、1つのシートから、あるいは異なるオフィスの異なるデスクで、何百ものサービスを簡単に追跡および制御することができました。

スケーラビリティとは、作成したプログラムのボタンをコンピュータの前に置く必要がないということです。

関連する問題