PHPを使用したマルチティアアプリケーション?
-
21-09-2019 - |
質問
私はPHPに比較的新しいですが、SOAのアーキテクチャと多層アプリケーションで複雑なエンタープライズ環境でのJavaプログラマを経験しました。そこに、私たちは通常、中間層でビジネスロジックとビジネスアプリケーションを実装すると思います。
私は、個人やコミュニティによって簡単に展開し、カスタマイズする必要があり、代替通貨システムをプログラミングしています。それがオープンソースになります。 PHP / MySQLは私にとって最良の選択だ理由です。
ユーザーがアカウントを持っている、と彼らはバランスを得ます。また、トータルなサービスに応じて、システムの計算価格が配信され、利用可能な総資産ます。
この手段、購入時に一連の計算が起こります。バランスと合計が更新されます。これらの導出されている数値は、何かが正常にデータベースに入れていない。
それにもかかわらず、私はこれらの更新のPHPコードなしで行われるように、DBにトリガーとストアドプロシージャを置くことに頼っています。
の人々はどう思いますか?それは良いアプローチですか?私の経験では、これが最善の解決策ではないことを私に示唆し、中間層を実装するために私を求められます。しかし、私もそれを行う方法を知ることはできません。一方、私は店のprocsので、これまで持っていることは、最も適切な私には思える。
私は私の質問を明らかにしたいと考えています。すべてのコメントは大歓迎しました。 「完璧な」解決策は存在しない可能性があります。
解決
としては、これらの日、DBから離れることは、一般的には良いことである傾向があることです。あなたは簡単にバージョンコントロールを取得し、あなただけの言語で仕事に行きます。それ以上に、私は、ストアドプロシージャがどこへ行くか、ハードな方法であることを感じています。その原料のように、あなたとあなたがMySQLでのSPと快適に感じる一方、彼らは悪くないですが、私の気持ちは、常に彼らがハンドルに難しく、デバッグにし、困難だとされています。
は、トリガーの問題で、私はそれはあなたのアプリケーションのために必要なのかどうかわかりません。計算をトリガーするイベントは、ユーザによって呼び出されるので、それらのものは、ユーザーが「待機」ページまたはその間に別のページにリダイレクトされた場合でも、PHPで発生する可能性があります。もちろん、本当のトリガは、DBのレベルでのみ行うことができますが、あなたは... PHPスクリプトX秒ごとに実行されるデーモンスレッドを使用するすべてのコストでこれを避け、ユーザ側からのトリガにイベントを取得しようとすることができます。
このすべては言った、私は、PHP上のデータアクセス層のための私のお気に入りのソリューションプラグインしたかった:教義を。それは完璧ではないですが、PHPはそれが何であるかという、それは良い十分です。あなたが何をしたいの大半を行い、そしてあなたがオブジェクトの代わりに、データベース・プロシージャでの作業など。
続けますあなたのタイトルについては、複数の層は、PHPで、完全になんとかですが、あなたはそれらを行うと、それらを尊重する必要があります。 PHPコードは、他のPHPコードを呼び出すことができ、そしてそれが今である(5.2+)うまくOOとすべてのこと。 Doがあなたの周りに表示されますPHPコードの多くは、総がらくたであっても、メソッドを使用するだけでは階層を聞かせて、まともなオブジェクト指向モデリングしないという事実を無視してください。あなたがあなた自身をやって(または既存の使用)MVCソリューションを含めて、それを実行したい場合は、すべてのことが可能です。
他のヒント
1つの問題は、あなたがDBMSの機能セットにロックしてしまうことがあります。オープンソース・ソフトウェアは、多くの場合、それは違うのDB(確かに常にではない)で使用することができるように書かれています。それは道をあなたはpostgresのまたはいくつかの他のDBMSにポートに簡単にそれを作ることになるでしょういる可能性があります。 MySQLの特定の機能の多くを使用すると、今では難しくなります。
あなたのDBサーバによって提供されているトリガやストアド・プロシージャやその他の機能を使用して絶対に何も間違っているがあります。それはあなたが単に単純なデータストアであることに、それを格下げするのではなく、DBのポテンシャルを最大限に利用している、動作し、うまく機能します。
しかし、私は確信しているあなた(と私)と一致し、ここですべての開発者のために、正反対だと思うし、それを行うと良い経験をした人少なくともとして多くのがあります。
みんなありがとうます。
私はそのようなトランザクションの整合性を制御する方が簡単かもしれないと思ったので、私は、DBのトリガーを使用していました。あなたが実現するかもしれませんが、私はまた、デシベルの知識のグリップを取得しようとしています。
開発者ですさて、私は別のサーバーに展開することによって、物理的にだけではなく、論理的にも、複数の層の上にPHPコードを広めるためのソリューションがあります見ています。
しかし、開発のこの段階で、私はその間違っていると感じていないように私は、私のトリガ/ SPソリューションに固執すると思います。複数の層に配布することは一貫して私のアプリを再設計するために私を必要とする。
誰かが代替マネーシステムを好きならば、私は人々は、PHPコードに触れた場合の計算が間違って取得することを心配する必要はありませんしながら、また、オープンソースを考えて、それは、その要件のためだけのレイアウト変更への人々のために簡単になります。
一方で、当然のことながら、私はデシベルものはデバッグに非常に入手困難かもしれないことに同意するものとします。
DB initスクリプトは、としてPHPファイルがあり、ソースコントロールにあります。)
ありがとうございました。