0

ハイキング クラブの Web サイト用の Android アプリのビルドを含む新しいプロジェクトがあります。Web サイトにはログイン機能があり、その後、ユーザーは利用可能なハイキングを閲覧したり、ハイキングを購読したり、他の購読者を表示したり、主催者に連絡したりできます。元のサイトは、.asp ページのフロント エンドを持つ MySQL データベースに基づいています。ほとんどのデータは、クエリ文字列の GET パラメータとしてページを介して渡されます。

Android 開発は初めてなので、いくつかのチュートリアルを読んだ後でも、いくつかのことが本当に困惑しています。私はREST Webサービスに基づくアーキテクチャを考えていますが、克服すべきいくつかの障害があり、作成することを選択しています.

REST を使用する以外に、いくつかのオプションを利用できます。

  1. 専用の Web サービスを構築する代わりに、アプリから元の .asp ページを呼び出します。これにより、作成するコードが大幅に減り、元のビジネス ロジック (クエリ EA) とログイン システム (Cookie に基づく "remember me" 機能を使用) を使用できます。欠点は、レスポンス内の (X)HTML コードを解析してアプリの GUI に表示する必要があることです。レスポンス コードの大部分は役に立たないバラスト コードです。また、建築家の観点からはあまり気分が良くありません。

  2. SOAP ベースの Web サービスの使用。私は SOAP にまったくなじみがなく、モバイル デバイスには重すぎるようです。

  3. REST サービスの使用。私はこのオプションに傾倒しており、SLIM フレームワークを使用してすでに機能しているサービスをいくつか作成しました。しかし、いくつかの問題があります。まず、REST は定義上ステートレスであり、セッションをサポートしていないようです。ただし、最初のログイン後にアプリに「Remember me」オプションが必要です。ユーザーは、明示的にログアウトしない限り、再度ログインする必要はありません。

しかし、どうすればそれを達成できるでしょうか?

最初のオプションは、ユーザーがログアウトするまで資格情報をローカルに保存する、完全にクライアント サイトのログイン/ログアウト システムを設計することです。そして、私はそれについてよく知りませんが、POST パラメーターとして、または何らかの方法で HTTP Authorization 要求ヘッダーで、各要求と共に資格情報を Web サービスに送信します。

2 番目のオプションは、RESt の原則から少し逸脱し、とにかくセッション メカニズムを使用することです。資格情報を Web サービスに送信した後、Cookie が作成され、クライアント アプリに送信されます。データベースは拡張できないため、ユーザー テーブルにトークンを保存するオプションはありません。おそらく、ユーザー名/パスワードを暗号化して Cookie としてアプリに送信し、その後の各リクエストで復号化できますか?

私はこれに少し迷っています。真剣な提案を楽しみにしています!

4

3 に答える 3

2

長期的な観点から、REST インターフェースに傾倒することが重要であると私は信じています。JSoup や WebView のアプローチは確実に機能しますが、サーバー側に完全に依存しない方法でモバイル アプリケーションを再定義/設計できる柔軟性を持つことが重要です。そこでは REST が役立ちます。サーバー側が HTML ページを変更するたびに、サーバー側に追いつく必要はありません。

REST への移行は、将来、追加のモバイル アプリケーションを作成する際にも役立ちます。また、ロードマップにそれが含まれている場合は、iOS などのさまざまなプラットフォームでも役立ちます。

于 2013-02-10T00:05:13.400 に答える
0

jsoupを使用してAndroidアプリからhtmlページを解析し、Webページの情報を再編成できます。このオプションを使用すると、アプリをすばやく開発できます。後で、RESTインターフェイスをWebサイトに追加して、データを入力することもできます。 json。HTMLページを解析したくない場合は、WebViewを使用してWebページを解析することもできます。

于 2013-02-09T20:51:12.797 に答える
0

あなたが言ったように、RESTアーキテクチャを使用することをお勧めします。Android 用のレスト クライアント ライブラリをRESTDroidとして使用できます。使用する特定の Web サービス (この場合は Parse.com) に必要な特別なヘッダーを使用した実装例があるため、ガイドを参照してください。

于 2013-02-14T08:58:00.250 に答える