2

MicrosoftAzureクラウドを活用するAndroidアプリケーションを作成しています

  • ページblob(Blobサービス)
  • リレーショナルデータベーステーブル(SQL Azure)
  • キュー

すべてが素晴らしく見えましたが、AZUREの使用を妨げる可能性のある、かなり堅実な外観の技術的なレンガの壁にぶつかりました。つまり、Microsoft JavaAzureSDKによるJAXBの使用です。

  1. Androidでは提供されていないJAXB(バンドルする場合は非常に大きい)
  2. Dalvik VMは、JAXBでリフレクティブコールを実行できません
  3. JAXBはjavaxパッケージ構造を使用しているため、dexにコンパイルすることはできません。--core-libraryを使用して回避すると、ほぼ確実に、今後の障害が保証されます。

保護されたjavaxパッケージ構造でクラスを定義するその他のAzureJavaSDKMaven依存関係:

  • javax.xml.bind jaxb-api
  • javax.inject javax.inject
  • com.sun.jerseyjersey-コア
  • stax stax-api
  • javax.activationアクティベーション
  • javax.mailメール

Azureに問い合わせるための独自のAndroidフレンドリーAPIを作成することはこのプロジェクトの範囲を超えているため、これにより、AndroidアプリケーションをバックアップするためのAzureサービスの使用が効果的に防止されるように思われます。

他のメカニズムを介してAndroidでAzureサービスを利用した経験のある人はいますか?

4

3 に答える 3

3

(WCF を使用して) Azure WebRole でホストされている RESTful Web サービスの背後にある Azure 固有の機能のほとんどを非表示にすることをお勧めします。これは、基本的なRESTful Web サービスを提供するための Azure のセットアップについて説明するチュートリアルです。その後、Android クライアントは HTTP/JSON/XML を使用して、標準に準拠した方法で Azure と通信できます。

目標は、Android クライアントがバックエンドの Azure コンポーネントと直接通信するのではなく、Web サービスがバックエンドの Azure コンポーネントと通信するようにすることです。たとえば、次のようになります。

Android -> Azure RESTful WebRole -> Blob、SQL DB、キュー、ワーカー ロール

ただし、場合によっては、Android クライアントが (Blob REST インターフェイスを介して) Blob ストレージと直接通信する必要がある場合があります。

Android -> Blob
&
Android -> Azure RESTful WebRole -> Blob、SQL DB、キュー、ワーカー ロール

WebRole が高すぎる場合は、このチュートリアルで説明されているように、安価な RESTful Azure Web サイトに置き換えることができます。

バックエンド Azure コンポーネントと直接通信する意図したアプローチで考慮すべきもう 1 つのことは、Android クライアントが Azure アカウント キーを格納する必要があることです。これは、Android クライアントを使用している人々にアカウント パスワードを渡すことと本質的に同じです...つまり悪い考えです。

于 2012-11-23T00:04:32.600 に答える
0

現在、Windows Azure SDK for Java は Android をサポートしていません。ただし、オープンソースであるため、必要に応じてほとんど自分で行うことができます。ソースコードは

https://github.com/WindowsAzure/azure-sdk-for-java

于 2013-03-19T00:55:27.293 に答える
0

1) Microsoft は JAXB を使用していません。Java サーバーとクライアントは、JAXB を使用して SOAP Web サービスを使用します。

別の方法として、別の SOAP ライブラリを試すこともできます。例えば:

2) 別のおそらくより良いアプローチは、SOAP の代わりに REST を使用して Azure を呼び出すことです。

于 2012-11-22T07:14:14.137 に答える