1

私のクライアントアプリケーションをサポートするためには、バックグラウンドアプリケーションが必要です。メインクライアントアプリケーションが動作しているかどうかにかかわらず、常にクライアントマシン上で実行する必要があります。Invisible WinFormアプリケーションによるWindowsサービスの置き換えに関する提案が必要

Windowsサービスが私の最初の選択でしたが、Windowsサービスに直面する問題は、メインクライアントアプリケーションによるWindowsサービスの制御の容易さ、Windowsサービスへのパッチのリリースとインストール、およびWindowsサービスが実行できない場合のトラブルシューティングでした。

私はWindowsサービスの代替案を検討し始めましたが、可視フォームのないWindowsフォームアプリケーションが私のためにできることがわかりました。この目に見えないアプリケーションは、システムの起動時から開始し、Windowsサービスが実行するすべての作業を実行し続けます。しかし、私が開発に深く入る前に、私はこのアプローチの賛否両論を探求したいと思っています。

このアプローチに関するご意見/ご感想はありますか?

答えて

1

お客様の要件は、Windowsサービスに適しています。 Windowsサービスの主な利点は、誰かがシステムにログインしているかどうかにかかわらず、システムが起動するとすぐに起動することです。

配備の問題をソートするには、ビジネスロジックを別のアセンブリに作成し、必要な機能をwith Windowsサービスと呼んでいます。このようにして、変更されたアセンブリだけを展開することができます。

目に見えない形式のWinformアプリケーションは目的を果たしません。 HTH

+0

Logged InのユーザーのApp Dataフォルダにある一部のファイルと対話するには、Windowsサービスが必要です。私はWindowsのサービスがこれを行うことができるのだろうかと思う。 –

+0

@Arpit:ログインしたユーザーのappdataフォルダにアクセスできたようです。 http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ad116f07-9bc4-4ccd-be3a-679f95270ba3/ – JPReddy

+0

リンクされたスレッドが示しているようにサービスはログインしているかもしれないし、そうでないかもしれないユーザーについての知識がない。私の答えはここでは細かいことだ。ユーザーがログインしていなくても常に*実行されている*バックグラウンドアプリケーションが必要な理由は、あなたのプライマリアプリケーションをサポートするためには意味がありません。私はあなたのアプリをシャットダウンしたい場合、私はそれを確実に行うことができるはずです。 –

1

これはできません。ユーザーモードのアプリケーションはユーザーによって起動され、そのユーザーがログオフしたときには実行されません。これは、SessionEndingイベントの目的です。ユーザーがログオフしたとき、またはコンピュータがシャットダウンしているときに、アプリケーションを正常にシャットダウンできるようにするためです。システムの起動時に何かを起動し、常に起動させることはできません。

Windowsサービスが必要です。しかし、Windows Vista以降では、サービスがユーザーと直接対話できないことに注意してください。それらは別のプロセスで実行され、独自のUIを表示することが制限されています。あなたのニーズが正確にはっきりしないのですが、これは検討する価値のあるWindowsサービスの重要な制限です。適切なデザインは本当にこれを必要とすべきではありませんが、この新しい、より安全な行動が本当の驚きである多くの人々がいるようです。私はthis questionthis other questionに関連する答えでこれをより詳細に説明します。

関連する問題