0

私と何人かの友人は、playframework とモバイル アプリケーション (Android と iPhone) を使用して Web サイトを開発する予定です。そのため、モバイル アプリケーション (CRUD) 用の Web サービスをいくつか作成する必要があります。anormそこで、時間を無駄にして CRUD を作成する(すべての SQL 要求を書き込む)代わりに、playframework アプリケーションでこの Web サービスを使用することを考えました。

さて、私はあなたの意見を求めるためにここにいます。これは良いことですか?ここで最もお勧めの方法は何ですか?

ありがとうございました。

PS: Web サービスは、データベースから Netbeans を使用して自動的に生成されます。

4

1 に答える 1

5

私がこのアプローチに反対するアドバイスをする理由はさまざまです。

一般的な設計ルールは、内部データモデルをユーザーに公開しないことです。このルールには多くの種類があり、階層化アーキテクチャがおそらく最もよく知られています。

詳細には、次のような問題があります。

  1. パフォーマンスの調整:生成されたWebサービスを制御できないか、ほとんど制御できないため、これを実現するのは困難です。あなたのアプリケーションが本当にあなたを引き受けているとき、この制限に苦しむでしょう
  2. サービスにアクセスする:RESTfulWebサービスを生成するのかWS-*サービスを生成するのかわかりません。後者は、iPhone経由でアクセスするときに問題が発生します。
  3. デザインプレイと同期Webサービス:パフォーマンスに何らかの形で関連しているのは、生成されたサービスが同期してブロックされている可能性が高いという問題です。これは、プレイフレームワークが採用している非ブロックアプローチとはうまく適合しません。
  4. 抽象化レベル:データベースはセットに基づいていますが、ビジネスモデルはそうではない可能性が高いため、適切なクライアントの開発、パフォーマンスの調整、適切な検証、セキュリティなどの問題が発生します。
  5. 認証、承認、およびアカウンティング:データベースはdbシステムユーザーしか認識していないため、実行が困難です。
  6. 変更:データベースモデルを変更した場合はどうなりますか?生成されたサービスは引き続き機能しますか?列を追加するだけで、それらのイベントを採用する必要がありますか?
  7. ..。

これらの理由のいくつかは重複していますが、一般的な問題は明らかであると思います。

このアプローチの代わりに、私は次のことをお勧めします。アプリのRESTfullエンドポイントを開発しますが、これはそれほど難しくありません。これは、クライアントが開発すべき外部契約です。たとえば、 play-miniには、これを行うためのフィルタリングされていないベースのAPIが非常に必要です。これを行う間、アプリが本当に必要とする操作に焦点を合わせます。CRUDは一般に、本番環境に対応したソフトウェアについて考える場合、悪いモデルです。

データベースにアクセスする方法は、あなたがしなければならないもう1つの決定ですが、外部契約ではないため、必要に応じて変更できるため、おそらくそれほど重要ではありません。

于 2012-10-08T18:37:02.963 に答える