0

私は現在、石鹸をその一部として使用するのは良い考えだと思うプロジェクトに取り組んでいますが、必要な方法でそれがどのように機能するかわかりません.

ConsoleApp という C# コンソール アプリケーションがあります。ConsoleApp には PHP Web インターフェイスもあります。私が考えているのは、PHP Web インターフェイスが何らかの方法で ConsoleApp を制御することです。そのため、Web インターフェイスのボタンをクリックすると、soap リクエストが SOAP サービスに送信され、次に SOAP サービスが送信されます。 consoleApp に情報を送信し、その結果が SoapService に返されてから PHP に返されます。

これは、SOAP サービスを分離する必要があるように思えます。1 つは php とのインターフェース用で、もう 1 つは ConsoleApp 内ですが、これは正しく聞こえません。Soap の目的を誤解している可能性があると思います。

どうすればこれを達成できますか。あなたが提供できる助けをありがとう

更新 要求に応じて、私が達成しようとしていることについてもう少し情報を追加すると思いました。

コンソール アプリでは、プログラムに渡されてから送信される電子メールを送信する電子メール サーバーとして機能し、送信できない場合は、電子メールが失敗状態になるまで数回再試行します。

Web インターフェイスは、電子メール サーバーの動作状況、つまり、受信中の電子メールの数、未処理の電子メールの数、送信済みの電子メールの数、失敗した電子メールの数を提供します。

Web ページから、電子メール サーバーをシャットダウンまたは再起動するか、失敗した電子メールの 1 つをキューに戻して処理することができます。

アイデアは、ユーザーが失敗した電子メールをキューに追加すると、コンソールアプリが受信するソープメッセージを送信し、情報をキューに追加し、コンソールアプリのログファイルにイベントを記録し、カウンターをインクリメントすることです。処理が必要な電子メールを追跡する方法。これが完了すると、Web インターフェイスに応答が返され、電子メールがキューに正常に追加されたかどうか、または何らかの理由で失敗したかどうかが示されます。

処理される電子メールが多数になる可能性があるため、数秒ごとにデータベースをポーリングし続けたくありません。データベースをポーリングすると、MySQL サーバーに大きな負荷がかかります。私はしたくないので、メールサーバーとしての石鹸は、何かをするための石鹸要求を受け取ったときにのみ何かをする必要があると考えました。

助けてくれてありがとう。

4

1 に答える 1

0

すべての Web サービスには、クライアント (この場合は PHP) とサーバー (ConsoleApp) が必要になります。2 つのエンドポイントがありますが、それでも 1 つの Web サービスです。PHP は SOAP リクエストを送信し、それを ConsoleApp が受信して処理し、SOAP レスポンスで応答します。

そのため、誰かが Web ページのボタンをクリックすると、JavaScript を使用してブラウザで SOAP エンベロープを作成して送信できます。もう 1 つの方法は、SOAP を作成して送信する PHP ページに値を POST することです。

認めざるを得ませんが、あなたのシナリオは異常に聞こえます。個人的には、Web ページがコンソール アプリと直接やり取りしているという話は聞いたことがありません。通常、Web ページは Web サーバーと通信します。サーバーは通常、ConsoleApp へのリクエストなど、非定型のリクエストを発行するサーバーです。技術的には可能ですが、予想以上に難しいと思います。

個人的には、SOAP はやめて、もっとシンプルでスケーラブルなソリューションを選びたいと思います。データベースにアクセスできると仮定すると、ユーザーがボタンをクリックすると、PHP によってデータベースにレコードが作成されます。次に、ConsoleApp は X 秒ごとにデータベースをポーリングして、新しいレコードを探します。新しいレコードが見つかると、それを処理します。

これには、単純である (ほとんどの場合、SOAP よりもデータベースへのアクセスが簡単である) およびスケーラブルである (大きな負荷が予想される場合は、任意の数の ConsoleApp を簡単に実行してすべての着信要求を処理できる) という利点があります。また、PHP ページも ConsoleApp も相互に直接依存していないため、個々のコンポーネントがシステム全体で障害を引き起こす可能性は低くなります。

于 2012-07-09T13:39:40.337 に答える