warriors tutorial program developer apple ios icloud cloudkit

ios - tutorial - CloudKit-¿no hay lógica del lado del servidor?



icloud (5)

¿No puedes subir ningún código para ejecutar en los servidores de Apple?

Puedes y no puedes. No puede cargar servicios web basados ​​en código / SOAP al servidor, en lugar de ello, puede cargar / almacenar observadores en el servidor, llamado suscripción.

¿Todo bastante limitado y no realmente comparable?

Diría que en CloudKit y en MBaas cliente se comunica con el servidor a través de una interfaz más robusta y más estrecha : no se puede cargar un servicio web exótico para realizar análisis de XML, manipulaciones de la base de datos y, de este modo, activar notificaciones push, pero la arquitectura RestFull permite realizar la 4 operación básica en el almacén de datos, y con el cliente de suscripción puede recibir notificaciones sobre las operaciones INSERT / UPDATE / DELETE realizadas en las tablas.

Creo que MBaas es solo el siguiente paso en la evolución de la arquitectura servidor - cliente. Primero parece que es limitante, pero puede hacerlo todo como en el mundo de servicios web basados ​​en SOAP. El desarrollo es extremadamente rápido / escalable / cómodo de usar y más fácil de controlar cosas como permisos / configuración, mantenimiento del servidor, la seguridad casi no requiere esfuerzo.

Con CloudKit , puede concentrarse en el desarrollo de la aplicación del lado del cliente y dejar que iCloud elimine la necesidad de escribir la lógica de la aplicación del lado del servidor . CloudKit le proporciona autenticación, bases de datos privadas y públicas, servicios de almacenamiento de activos y estructurados, todo gratis con muy altos límites.

¿No puedes subir ningún código para ejecutar en los servidores de Apple?

He oído que se compara con Google App Engine y otras plataformas de computación en la nube, pero sin la capacidad de ejecutar su propio código, ¿no es todo bastante limitado y no es realmente comparable?

Por ejemplo, si quiero crear una aplicación de noticias que periódicamente publique historias sobre temas en los que el usuario está interesado, entonces esto no se puede hacer simplemente usando CloudKit porque necesitaría trabajos programados y procesamiento de datos en el servidor.

¿Alguna idea?


Lado del servidor

Como dijiste, CloudKit no permite el código del lado del servidor.

Pero hay posibilidades.

Crons

No quieres conectarte al Tablero de Tableros de iCloud todos los días para realizar el empuje agregando un registro. Una solución aquí es codificar una aplicación en un servidor mac (supongo que mac mini como servidor se volverá más popular con CloudKit) que agrega un nuevo CKRecord Daily CKRecord cada día.

Suscripciones

El concepto de suscripciones es que el cliente se registra para actualizaciones específicas. Puede crear un tipo de registro llamado Daily por ejemplo y hacer que los usuarios se registren en él. Debe consultar la documentación de Apple y los videos de WWDC14 (incluso si las suscripciones no están detalladas, es un buen punto de inicio).

Lo bueno es que las notificaciones push están vinculadas con el concepto de suscripción. Así que básicamente dices: CKRecord una notificación por cada nuevo CKRecord de tipo Daily agregado.

Fiesta baaS

¿Cuál es el punto para usar CloudKit (vs Parse y otros?)

  • Precio: CloudKit tiene un precio realmente bueno
  • Listo para ir: 2 clics dentro de XCode y usted está listo para ir
  • Consistencia del usuario: obtiene un inicio de sesión gratuito para todos sus dispositivos a través de su cuenta de iCloud. Con un sistema de privacidad muy bueno. Y puede obtener relaciones con un sistema inteligente.

Pero:

  • Estás pegado a la plataforma de Apple. Ni siquiera sabemos si podríamos exportar los datos.
  • Solo datos centrados por ahora (sin código del lado del servidor)
  • El panel de CloudKit es demasiado limitado

El futuro

CloudKit sigue siendo bastante nuevo. En la Segunda Guerra Mundial, algunos de los que estaban detrás me hicieron entender que todavía están trabajando en ello. Mis apuestas son que están trabajando en 2 puntos importantes:

  • Ejecución del código del lado del servidor a través de tareas programadas remotas
  • CloudKit for Analytics (lado de visualización)

Edición: los chicos de Apple están plenamente conscientes y preocupados por la falta de acceso a la web para los datos. Significa que un día puede ser accesible desde otras plataformas. Leí en un comentario que Apple probablemente habría comprado Parse si CloudKit no hubiera sido mejor, AFAIK intentaron comprar Parse (se dice compra de habilidades, pero realmente no lo sabemos).

Actualizar WWDC15

CloudKit ahora está disponible en JS y algunos paneles están disponibles ahora. Espera y verás.

Actualización febrero 2016

CloudKit ahora admite solicitudes de servicios web de servidor a servidor

Referencia de servicios web


CloudKit no es un servicio completo de alojamiento web. En su lugar, es un SDK para iCloud. No debería colocar un sitio web allí, solo almacenar datos de usuario que desee utilizar en múltiples aplicaciones o plataformas.

Las API de iCloud permiten que sus aplicaciones almacenen los datos de la aplicación en iCloud, manteniendo sus aplicaciones actualizadas automáticamente. Use iCloud para brindar a sus usuarios una experiencia consistente y perfecta en todos los dispositivos habilitados para iCloud.


En algunos casos , no necesitamos la lógica del lado del servidor, y solo almacenar datos estáticos puede cubrir todo el escenario de uso.

En este caso, sería muy útil si hubiera un almacenamiento de acceso gratuito en el que pueda almacenar algo. CloudKit proporciona tales productos en lugar de una plataforma de servicio completo.

Sí, es limitado. De todos modos puede ser útil para algunas personas. Por ejemplo, su caso puede ser compatible con CloudKit. Aunque CloudKit es solo un almacenamiento estático, admite suscripción . Que supervisa un conjunto de condiciones y envía la notificación de eventos al cliente. Es una suerte que la única función de trabajo en segundo plano compatible con CloudKit sea justo lo que necesita.

De todos modos, si necesita más, puede que tenga que considerar servidores completos. Por lo general, los servicios web simples con un simple soporte de ejecución de código del lado del servidor también están limitados.


Lo creas o no, realmente puedes llegar muy lejos con este enfoque.

No he usado CloudKit, pero puedo describir mi pila de aplicaciones:

AngularJS (o su marco de representación HTML del lado del cliente favorito): una sola página alojará una serie de plantillas / controladores seleccionados por el enrutador e impulsados ​​por los usuarios que cambian el ancla para seleccionar la página en la que se encuentran.

Firebase.io (o su almacenamiento en la nube favorito): todos los datos dinámicos entran en el almacén de documentos en la nube. El controlador necesita cargar los datos y renderizar la plantilla en el cliente, y cuando los datos cambian, devuélvalos. Esto también proporciona la autenticación y la autorización, ya que puede limitar el acceso a los datos.

Ahora necesita un lugar para servir HTML / CSS / JS / images ... que no requiere ''ejecución de código del lado del servidor'', solo un servidor web donde puede colocar los activos.

Usando esta técnica, puede almacenar todos los temas del usuario en la base de datos para ese usuario, y cuando la página se cargue, vaya y agregue todas las fuentes para esos temas (también almacenados en la base de datos) completamente del lado del cliente. No hay nada en su aplicación de ejemplo que realmente requiera ejecución del lado del servidor que pueda ver, siempre y cuando tenga un almacenamiento en la nube que le brinde servicios de autenticación y autorización, y un servidor web "tonto" para entregar activos estáticos.