2016-06-23 12 views
0

LAN経由でWindows Formsアプリケーションのすべてのインスタンスを実行する関数を呼び出す方法はありますか?他のコンピュータで関数を呼び出す方法は?

自分のジョブリストのダッシュボードを含むアプリケーションがあります。別のPCの別のユーザーがジョブを作成してこのユーザーに割り当てることを希望します。作成して保存したら、GetJobs();メソッドを更新したいと思います。私はまだこれほど先進的なことはしていないので、簡単に行ってください:)

+0

別のコンピュータ上のプログラム内での機能は、大きなジャンプです。そこには、考慮すべき点がたくさんあります:ファイアウォール、プログラムが実行されているユーザーアカウント、プログラム内の関数を呼び出すために使用する*インタフェース*の種類。 1つのoptinonは、WinFormsを使用せず、機能を処理するコンピュータ上に「サービス」を設定することです。少なくとも、WinFormsプログラムでは、何らかのリスナー設定(TCPソケット)またはリモートプロシージャコールまたはパイプ設定が必要です。インタフェースの種類は、考えて設計する必要があります。 –

+0

@ChrisWalsh:これらのすべての考慮事項は、約20年前に行われ、解決されました。この技術は[COMまたはDCOM](https://msdn.microsoft.com/en-us/library/windows/desktop/aa366757.aspx)と呼ばれています([DCOMの履歴](https://msdn.microsoftも参照)。 .com/en-us/library/6zzy7zky.aspx))、リモートプロシージャコールをローカルプロシージャコールと同じくらい簡単に行うために必要なすべての機能を実装しています。プロキシとマーシャリングはすべて自動的に行われます。 – IInspectable

+0

@IInspectable、あなたは私または元のポスターに対処することを意味しましたか? –

答えて

3

Chris Walshは彼のコメントで優れたアドバイスをしています。それは、Windowsフォームアプリケーションは、お互いに通信することが可能であり、とにかく私にとっては最も簡単な方法は、WCF、自己ホストサーバーです。通常、サーバーコードはUIスレッドで実行されません。少なくとも、私はそれをお勧めしません。実際、すべてのWCFは、UIをブロックしないように、Windows Formsアプリケーションのバックグラウンドスレッドで実行し続けることをお勧めします。 WCFには、処理する必要のある多くのエラー条件があります。

もう1つのことは、メッセージキューと呼ばれるMSMQです。それはあなたのためのジョブのキューを格納することができ、電源が失われてもそれらを失うことはありません。

0

SQL Server Express Editionがデータベースバックエンドとしてインストールされているとします。

この方法で、認証を使用してデータベースに接続し、そこにジョブを直接追加できます。

他のコンピュータで、更新ボタンまたはポーリングを追加して変更を加えます。これには、自分でサービスを書く必要がなく、ユーザがいなくてもPCの電源が切れていてもジョブを作成できるという利点があります。

データベースをホストするサーバーは1つだけ必要です。

関連する問題