0

WebフロントエンドにPHP、データベースにMongoDBを用いたWebプロジェクト(会計ソフト)を企画しています。また、おそらく iPhone と Android 用のモバイル AP、REST API などもあるでしょう。できるだけ多くの共有機能を使用して、生のデータベース (設計パターン MVC または MVP の「モデル」) に中間層を書き込む必要があります。そのようなシナリオで中間層を書くスマートな方法は何ですか?

検討中のオプション:

1) 中間層を PHP ライブラリとして記述します。プラス: PHP フロントエンドへの接続は非常に簡単ですが、他のユースケース (モバイル AP、REST API...) にはあまり適していません。編集:セキュリティと分離にもあまり適していません。

2) 中間層をサーバー側で実行されるコードとして MongoDB サーバー上に記述します。しかし、制限が多すぎて (db.eval() 書き込みロック、1 つのシャードのみ)、この MongoDB 機能の使用は推奨されていないようです。サーバー側のコード実行機能を拡張する MongoDB 拡張機能を探していましたが、見つかりませんでした。

3) PHP、python、Node.js などで中間層を独立した Web サービスとして記述します。私が見る主な問題 - MongoDB は BSON で通信します。多くの中間層関数は、単純な MondoDB クエリを実行します。結果を他のシリアライゼーション標準で再エンコードする必要があるよりも(BSONはMongoDB固有であるため)、結果をクライアントに送信する必要があります-これは私には大きな無駄のようです.

より良い解決策が見つからない限り、おそらくバリアント 1) を使用しますが、アドバイスをいただければ幸いです。

4

2 に答える 2

0

私がGoogleグループに置いた答えをここに置きます。

2番目のポイントは、実際にはサーバー側ではなく、MongoDBに付属する組み込みのJSエンジン内で実行されることです。あなたが言うように、これはこれを行うためのひどい方法でしょう。

3番目のポイントはそれほど悪くはありません。PHPを使用して単一のエントリポイントを作成するか、JSONを使用して通信するだけで、MongoDBへのPHPドライバーがハードワークを実行します。BSONについて心配する必要はありません。ただし、これには大きなセキュリティ上の欠陥があります。1つは、MongoDBクエリを直接受け入れるインターフェイスを開く必要があることです。このようなインターフェイスは、「セキュリティで保護されている」場合でも、すぐにセキュリティのブラックホールになります。

私の意見では、最初のポイントを使用する方が良いとは言えません。それは、独自のライブラリを作成する必要があることを決定するからです。代わりに、Kohona、Lithium、YiiなどのPHPフレームワークを使用します。そのようなものがおそらくあなたの最善の策でしょう。

于 2012-11-27T08:37:20.297 に答える
-1

コメントするには長すぎるため、これは答えです。


ポイント1)に関しては、明らかに、PHP がどのように機能するかを理解していません。そうでなければ、次のことを知っていたでしょう。

  • モバイルアプリはバズワードです。PHP は、少なくとも 2004 年からモバイル デバイスにサービスを提供しています。
  • REST API.... PHP は Web 用の言語で、REST クラスは 20 行以内で記述できます。
  • セキュリティは、何を使用するかではなく、どのように使用するかに依存します。同じロジックでは、の代わりに MongDB を使用しているため、安全ではありません$someOtherDbPackage
于 2012-11-27T07:41:33.340 に答える