¿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
- Android Fuera de línea Webapp Resources
- ¿Cómo llamar a un servicio web .NET desde android?
- WebView no carga los activos correctamente
- Android 4.1 webview javascript no funciona.
- Obtener enlace de clic de evento en una vista web Android
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
- Android webview tiene borde blanco alrededor de él y cómo puedo deshacerme de él?
- Cómo habilitar la depuración remota / inspector de la aplicación Android de WebKit mediante WebView?
- Soap 1.2 android Proporcione una acción de jabón válida
- Utiliza una página HTML como Live Wallpaper en Android
- Android: WebView no puede mostrar el signo de porcentaje '%'
- ¿Cómo maneja un servidor las solicitudes de servicio web de varios clientes?
- Android y su lenta webview. Hardware acelerado es buggy
- No puedo conectarme a mi servicio web
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 🙂
- Android ListView arrastrar y soltar para nido de abeja y ICS "Error: informe caída resultado: false"
- Inhabilitar y grabar los elementos de la lista