0

過去数か月間、私は純粋に UX の目的で Ajax を使用してきました。つまり、ユーザーがフォームを送信したり、ページから移動したりせずにコンテンツにアクセスできるようにすることです。しかし、 Node.jsを使用する利点に関する記事を読んだ後、たとえば、巨大なフォームから一度にデータを送信する代わりに、マイクロリクエストをサーバーに送信することで自分のアプリケーションが利益を得ることができるかどうかについて考えるようになりました。 .

さて、私のアプリケーションが動作する方法は、私の DomainObjects が私の db テーブルとビューレイヤーのフォームの両方にかなり直接的にマップすることです。たとえば、

class Demographics extends DomainObject {

    protected $first;
    protected $last;
    protected $middle;
    protected $ssn;

    // getter, setter methods


}

ユーザーが更新する設定可能なすべてのプロパティの入力を含むフォームがあります。したがって、この時点で、データベース内の人の情報を保持する Demographics オブジェクトができました。さて、現在、ユーザーが個人の情報を更新すると、ページのデータを使用して Demographics オブジェクトが再作成されます (HTML で customerID を非表示にし、それを使用してオブジェクトを再インスタンス化しています)。これが 1. 必要であり、2. 優れた実践である場合。

ですから、私の主な質問は次のとおりです。Ajax 経由でマイクロリクエストを送信することにした場合、実際にオブジェクトを再インスタンス化する必要がありますか、またはリクエスト間で PHP を維持する何らかの「スレッド」がありますか? (つまり、以前にインスタンス化されたオブジェクトにアクセスできますか?)。

また、DomainObject を再作成し、行の ID を HTML の一般的な方法で非表示にするこの方法は、回避する必要がありますか?

4

2 に答える 2

3

すべてのリクエスト サイクルは独自のスレッドであり、本来あるべき姿です。複数の異なるユーザーが同じデータを共有することは望ましくありません。これは、データベースに保存し、リクエストごとに取得する必要があるデータの完璧な例に見えます。ただし、マイクロ Ajax リクエストのアプローチは、それ以外の場合は良いアイデアのように思えます。各リクエストは、データベース内の異なるテーブルと、場合によっては完全に異なる URL と通信でき、進行状況は毎回 DB に保存および再作成されます。

2 番目の質問については、何を達成しようとしているのかを知るために、いくつかのコードを確認する必要があります。

于 2012-06-29T00:17:41.977 に答える
1

データは何らかの方法で手動で永続化する必要があります。後続の要求を処理する同じスレッド/プロセスは、特定のフレームワークがそのような保証を中心に特別に設計されていて、それらが違反されていないことを保証できない限り、依存すべきではありません。

データを永続化/復元する正確な方法は...あなたと要件次第です;-)

  1. 状態を表示します。ポストバック データを介して状態を維持します。これには本質的に問題はありません (これは ASP.NET の ViewState の基盤です) が、維持される状態が大きくなればなるほど、より多くのデータを送受信する必要があります (数 KB では意味がなく、数 MB では.. 呼び出されません)。為に)。使用する場合は、改ざん防止ソリューションを検討してください。ページがデータ プロセスを駆動する場合に最適です。
  2. データベース; 例えばMySQL。データを永続化する優れた方法。ただし、すべてのデータにこの種の永続性が必要なわけではありません。通常、セットアップと保守は簡単です。
  3. キャッシュ; 例えば。memcached。RDMB ではありません。しかし、データを保存するための良い方法は「あったらいいな」です。多くの場合、データベースに裏打ちされたデータの「前」に配置されます。
  4. クッキー; 通常、異なる接続を「関連付ける」ために、上記の 1 つ以上と組み合わせて使用​​されます。場合によっては、追加の一時データを保存/渡すことが実行可能な方法です。
  5. セッション状態。通常は #2 または #3 を使用します (そして #4 を使用します)。View State との違いは、「サーバー上のみ」であるということです。
  6. シリアル化; 手動で構築せずに、オブジェクトを脱水/再水和するために使用できます。上記のアプローチのいずれかを使用して、生活をよりシンプルにします。

ハッピーコーディング。

于 2012-06-29T00:26:36.037 に答える