¿Cuál es la mejor práctica para compartir modelos entre un servidor API WEB y una aplicación cliente Android?

Tengo una aplicación de Android que habla con un servidor. NET que utiliza servicios WEB API web. Actualmente, tengo objetos de transferencia en el servidor y en el cliente.

Clase 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; } } 

Mi clase C # en el lado del servidor

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

Quiero compartir estos modelos, entre las dos aplicaciones.

He encontrado esta pregunta discutiendo compartir tipos, pero mi situación es un poco diferente. ¿Debo compartir tipos entre un servicio de API Web y su cliente? ¿Cuáles son las otras opciones?

Estoy considerando la creación de un dll de C + +, que tanto mi aplicación Android y C # aplicación podría utilizar. ¿Es esta mi mejor opción?

EDIT Estoy usando JSON para transferir los datos

La mejor opción es utilizar un formato estándar de plataforma neutra (normalmente JSON o XML). Esto le da la inmensa libertad de variar el cliente y el servidor de cualquier manera que desee y hace que el desarrollo y la prueba más fácil, ya que puede inspeccionar o generar contenido fácilmente.

Si está preguntando sobre un mecanismo fácil para representar el contenido en memoria en múltiples puntos finales, es perfectamente razonable crear un "SDK cliente" (muchos servicios en línea los publican para múltiples lenguajes de programación cada uno) que tiene estos DTO y tal vez algunas utilidades Y utilizar el lado del servidor adecuado. Generalmente no es una buena idea ponerse demasiado inteligente y hacer algo como caer en el código nativo; Mantener el código de los DTO en el idioma adecuado (como Java para Android, o tal vez C # si se utiliza Xamarin).

Ya que ya está utilizando JSON para los datos que sugiero que escribir una vez en .NET y crear su muestra de resultados JSON objetos. A continuación, utilice http://www.jsonschema2pojo.org/ para crear su POJOS incluso incluirá la anotación generada para que no sepa modificar la clase.

Otra ventaja es que puede formatearlo con estilos de anotación de jackson o GSON para serializar / des-serializar los objetos con poco esfuerzo.

Si quieres enloquecer puedes modelar todo en JSON, luego tienes un script que usa http://json2csharp.com/ para crear tu .NET y http://www.jsonschema2pojo.org/ para Java POJOs para ti. Pero no estoy seguro de que valga la pena el problema 🙂

  • No puedo conectarme a mi servicio web
  • Cómo restablecer completamente la vista web de Android antes de cargar la nueva solicitud
  • Excepción con servicio web (java.net.SocketException Permiso denegado) en Android
  • Android addJavascriptInterface equivalente en iOS
  • IBM Worklight - ¿Cómo habilito la depuración de WebView en Android?
  • Cómo autenticar servicio web sap con ksoap2
  • Cargar HTML en la vista web en Android?
  • Cómo dividir Epub Html en páginas según el tamaño de la pantalla
  • Android ViewPager + Webview, ClassCastException! Necesita una vista web en un viewpager
  • Cookies de Android para la dirección IP
  • REST y SOAP webservice en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.