2016-01-21 8 views
5

WEB API Webサービスを使用して.NETサーバーと通信するアンドロイドアプリケーションがあります。現在、私はサーバー上とクライアント上にオブジェクトを転送しています。WEB APIサーバーとAndroidクライアントアプリケーション間でモデルを共有するためのベストプラクティスは何ですか

Javaクラス

public class UserAction { 

    private String username; 
    private String action; 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getAction() { 
     return action; 
    } 

    public void setAction(String action) { 
     this.action = action; 
    } 
} 

サーバ側私は2つのアプリケーション間で、これらのモデルを共有したい

public class UserActionTO 
    { 
    public string Username { get; set; } 
    public string Action { get; set; } 
    } 

上の私のC#クラス。

私はこの種の共有タイプについて議論しましたが、私の状況は少し異なります。 Should I share types between a Web API service and its client ? What are the other options?

私のAndroidアプリケーションとC#アプリケーションの両方で使用できるC++ dllの作成を検討しています。これは私の最善の選択肢ですか?私はデータ

+0

私は同じ問題があった。私はバックエンド(あなたの場合はC#クラス)のための別のモデルを作成し、アンドロイド用のモデルクラスを分離しました。それはリワークでした。 – Paritosh

+0

これは私が現時点でやっていることですが、プロパティが追加されるとすぐに、はい、その両側のリワークです。私はまた、モデルが実行時に同期していないことを認識しています。 – unicorn2

答えて

2

最良のオプションは、標準的なプラットフォーム中立フォーマット(通常はJSONまたはXMLのいずれか)を使用することですを転送するためにJSONを使用しています

EDIT 。これにより、コンテンツを簡単に検査または生成できるため、クライアントとサーバーの両方を自由に変更でき、開発とテストが容易になります。

メモリ内のコンテンツを複数のエンドポイントで表現するための簡単なメカニズムを尋ねる場合は、これらのDTOを持つ「クライアントSDK」(多くのオンラインサービスがそれぞれ複数のプログラミング言語用に公開しています)おそらくいくつかのユーティリティを使用して、適切なものをサーバー側で使用します。過度に巧妙になり、ネイティブコードに落とすようなことをするのは、一般的には良い考えではありません。 DTOのコードを適切な言語(Androidの場合はJava、Xamarinの場合はC#など)にしてください。

2

既にデータ用にJSONを使用しているので、.NETで一度記述してサンプル結果のJSONオブジェクトを作成することをお勧めします。次にhttp://www.jsonschema2pojo.org/を使用してPOJOSを作成します。生成されたアノテーションも含めて、クラスを変更しないことを知っています。

もう1つの利点は、jacksonまたはGSONアノテーションスタイルを使用してオブジェクトをシリアル化/逆シリアル化することができます。

JSONのすべてをモデル化することができたら、http://json2csharp.com/を使用して.NETを作成し、http://www.jsonschema2pojo.org/ Java POJOを使用するスクリプトを作成してください。しかし、私はそれが問題の価値があるだろうか分からない:)

関連する問題