1

多数の社内.netアプリケーションに、それらが使用されていることを通知するための軽量な方法を提供したいと思います。私の目標は、サポートチェックインやアップグレードのリマインダーの恩恵を受ける可能性のあるユーザーを追跡することです。

これは社内ネットワーク上にあります。すべてのマシン、そしておそらくUDPの間には間違いなくIP接続があります。(ただし、おそらくマルチキャストではありません。)

既知の社内共有への書き込みや既知のURLのロードは可能ですが、信頼性を犠牲にしても、アプリケーション自体への影響を可能な限り完全に最小限に抑えたいと思います。したがって、タイムアウトのリスクを冒したくはありません(たとえば、集中化されたリソースにアクセスしていて、リソースがなくなった場合)。理想的には、ワーカースレッドも起動しません。

また、複数のリスナーを許可することもできます。これは、サービスを呼び出すのではなく、ブロードキャストを検討しているもう1つの理由です。

このために安全かつ効果的に使用できる、ある種のファイアアンドフォーゲットブロードキャストメカニズムはありますか?

4

4 に答える 4

1

これには確かに多くのオプションがありますが、実装が非常に簡単で、基準を満たすのは非同期Webサービス呼び出しです。

これには、ワーカースレッドを開始する必要はありません(フレームワークは舞台裏でそれを行います)。そのリンクで概説されているオプションの1つを使用して結果をフェッチするのではなく、呼び出し元のアプリにとって意味がないため、結果を無視してください。

于 2009-11-30T18:51:36.813 に答える
0

正確には「ブラッドキャスト」ではありませんが、私は似たようなことをしました

私は社内のツールを持っており、社内で技術者以外の人が使用しています。特定のEXE(使用する場合にダウンロードするのと同じEXE)のネットワーク共有を確認し、そのファイルのバージョン番号を実行中のアセンブリと比較します。ネットワーク上のものが新しい場合は、新しいものをダウンロードするようにユーザーに警告します。

私と同じ建物内でのみ使用されるものに自動アップデーターを設定するよりもはるかに簡単です。

于 2009-11-30T19:01:14.137 に答える
0

アップグレードが問題にならない場合(つまり、古いバージョンを使用する方が良い場合はありません)、私が行ったことを同様の方法で実行できます。

人々が実際に起動するアプリケーションはアップデータプログラムであり、ネットワーク共有上のファイルバージョンとタイムスタンプをチェックし、新しいバージョンが存在する場合は、それをプログラムディレクトリにコピーします。次に、プログラムを実行します(更新されたかどうかは関係ありません)。

var current = new FileInfo(local);
var latest = new FileInfo(remote);

if (!current.Exists)
    latest.CopyTo(local);

var currentVersion = FileVersionInfo.GetVersionInfo(local);
var latestVersion = FileVersionInfo.GetVersionInfo(remote);

if (latest.CreationTime > current.CreationTime || latestVersion.FileVersion != currentVersion.FileVersion)
    latest.CopyTo(local, true);

Process.Start(local)

また、プログラム自体に、アップデーターを更新する必要があるかどうかを確認してもらいます(ファイルロックのためにアップデーターが自分自身を更新できないため)

于 2009-11-30T19:10:20.857 に答える
0

いくつかの実験の後、私はWin32メールスロットを使用して良い結果を得ています。

公式のマネージラッパーはありませんが、このような例で示されているように、関数はPInvokeを介して簡単に使用できます。

「ドメイン」メールスロットを使用すると、真のブロードキャストメカニズムが提供され、複数のリスナーが許可され、既知のサーバーは必要ありません。

于 2009-12-03T15:14:32.170 に答える