3

「直接データベース接続」とは、SQLiteデータベースを使用してローカルパラメータを格納するのと同じように、JDBCに似たドライバを使用して、アクティビティのコンテキスト内でリモートデータベースクエリを呼び出して実行することを意味しました。

このデータベース接続方法に関するチュートリアルやドキュメントがインターネット上でほとんど見つからないことに気付くまで、すべてではないにしてもほとんどのAndroidデバイスが抱える不安定なWi-Fi / 3Gネットワ​​ークに関係なく、データベースに接続する必要があると考えました。そのように行われる。

Android SDKでも、ローカルデータベースアクセス(別名android.database.sqlite)のみが本質的にサポートされています。また、 java.sql APIの説明には、このAPIを使用するために独自のJDBCドライバーを提供する必要があると記載されています。

それから私は、データベースに直接接続するという私の意図が、Androidの領域で最初に間違っているかどうかに気づき始めました。

Stack Overflowで提供された多数の回答を含め、多くの本、ウィキ、フォーラムを読みました。多くの人が何かを成し遂げることに集中しているように見えます。議論は「Androidデバイス用のRESTfulWebサービスを設計するにはどうすればよいですか?」から始まりました。しかし、私は完全な理解が必要です!また、元のAndroid開発者からの信頼できる引用も必要です。

4

2 に答える 2

10

いくつかの理由(ただし、ほとんどすべての理由ではありません):

  1. 存在しない:Androidには(サポートされている)JDBCドライバーはありません。

  2. 認証:パブリックネットワーク上のユーザーを認証する必要があります。

    A.サーバーと通信するときは、各ユーザーが(何らかの形式で)独自の資格情報を持っている必要があります。1つのユーザー名/パスをアプリに焼き付けることは問題を引き起こします。

    B.データベースに認証を提供させたくない。このためには、別個の認証レイヤーが必要です。

  3. 標準プロトコル:アプリがすべてのネットワーク(特にロックダウンされた企業ネットワーク)で実行されるようにする場合は、HTTP/HTTPSを使用する必要があります。これは、(ほとんど)どこでも機能する唯一のプロトコルです。

  4. ビジネスロジックの分離:さまざまなデバイスプラットフォーム(Android、iPhoneなど)をサポートしている場合は、サーバー上にすべてのビジネスロジックを配置することをお勧めします。JDBCを呼び出してからデバイスでビジネスロジックを実行する代わりに、サーバーでこれを実行する必要があります。そうすれば、DRYに準拠し(繰り返してはいけません)、単体テストも簡単になります。

于 2011-01-28T09:40:31.963 に答える
4

すべてではないにしてもほとんどのAndroidデバイスが抱える不安定なWi-Fi/3Gネットワ​​ークに関係なく、データベースに接続するにはそのようにする必要があると思いました。

ご意見をお待ちしております。私はあなたに激しく反対します。JDBCおよび同様のプロトコルは、信頼性の高い低遅延のLAN向けに設計されており、信頼性の低い高遅延のモバイルネットワーク向けに設計されています。さらに、データベースをパブリックインターネット上に表示する必要があります。つまり、データベースはハッカーの影響を受けやすくなります。

于 2011-01-28T08:42:18.937 に答える