¿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 🙂

  • La solicitud de servicio web no funciona en el navegador android android; Pero está trabajando en el navegador de PC
  • WebViewClient shouldInterceptRequest Congela el WebView
  • Fondo-adjunto: fijo no funciona en android / móvil
  • ¿Puedo usar CloudKit en Android o en una aplicación basada en Web?
  • Android cómo enviar int y doble como namevaluepair como http post
  • Que puede reemplazar la función capturePicture
  • Depurar HTTPS peticiones / respuestas con Fiddler en Android Phone don `t trabajo
  • Se esperaba BEGIN_OBJECT pero era BEGIN_ARRAY en la línea 1 columna 2 (edición pequeña)
  • El banner de instalación de la aplicación no funciona
  • ¿Cómo obtener datos completos de cookies desde un WebView de Android?
  • Cómo detectar un gesto de desplazamiento en la vista web
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.