2009-01-03 17 views
10

¿Hay alguna manera en Cocoa que actualmente se considere como la mejor práctica para crear una aplicación de servidor de varios niveles o cliente?Aplicación de cliente/servidor Cocoa

Soy un desarrollador web experimentado y realmente me encanta Python. Aunque soy nuevo en Cocoa. La aplicación que estoy jugando con la escritura es un sistema de administración de pacientes para un hospital grande. Se espera que el sistema almacene grandes cantidades de datos a lo largo del tiempo, pero los datos transferidos durante una sola sesión son muy livianos (principalmente solo texto). Se supone que la comunicación ocurre a través de una red local (cableada o inalámbrica). Tiene que ser altamente seguro, por supuesto.

Lo mejor que se me ocurre es escribir un servicio web REST de Python y conectarlo a través de la aplicación Cocoa. Tal vez incluso usaré Python para codificar la aplicación Cocoa.

En cuanto a Cocoa, veo tecnologías realmente excelentes en Cocoa como CoreData, pero no encontré nada similar para el desarrollo de servidores cliente. Solo quiero asegurarme de no perderme nada.

¿Qué opinas?

Los ejemplos del mundo real serán muy apreciados.

Gracias de antemano.

Respuesta

5

Si tiene control tanto del cliente como del servidor, y puede limitar el cliente a OS X solamente, yo respondo la respuesta de Marc. Los objetos distribuidos de Cocoa son una tecnología increíble y hacen que las aplicaciones cliente-servidor de estilo RPC sean muy fáciles.

Si los requisitos anteriores son demasiado restrictivas para usted, usted todavía tiene muchas opciones disponibles para usted en el mundo del cacao:

  1. Puede codificar toda la aplicación cliente en Python usando PyObjC. Con este enfoque, puede usar el código de red estándar con el que está familiarizado desde la biblioteca estándar de Python. Twisted también se integra muy bien con el ciclo de ejecución de Cocoa (ejemplos en el código de ejemplo PyObjC) y he tenido mucho éxito al usar Twisted para la comunicación de red desde en una aplicación Cocoa. Si elige seguir esta ruta, puede codificar la aplicación cliente en Objective-C y cargar el código python como un complemento (usando NSBundle). El py2app de PyObjC puede compilar paquetes cargables a partir del código python.

  2. Puede usar NSURLConnection para obtener acceso de alto nivel a un servidor HTTP.

  3. Descartando un nivel de abstracción, puede usar el software CocoStream NSStream para implementar su protocolo de red. La documentación de la clase es here, con enlaces a código de ejemplo que demuestra los protocolos HTTP y SOAP.

  4. Puede bajar un nivel más y utilizar las clases de CFNetwork. NSStream se basa en CFNetwork, pero tiene un control de nivel inferior sobre la línea utilizando CFNetwork.

Finalmente, la tecnología de Apple para las arquitecturas cliente-servidor es el marco WebObjects.

2

Cocoa tiene Portable Distributed Objects, que le permite crear una aplicación cliente/servidor en Objective-C puro y Cocoa que se puede comunicar a través de procesos o en una red.

Desafortunadamente, es una de las cosas más difíciles de aprender en Cocoa. Los objetos distribuidos no se han actualizado para mantenerse al día con las nuevas tecnologías, como los enlaces, no hay muchos ejemplos o documentación (y muchos de los tutoriales son antiguos, algunos incluso antes de fechar OS X). También hay un montón de "trampas", incluso para los programadores cacao experimentados, en la forma en que los objetos se transmiten a través del cable, ya sea como una copia o un objeto proxy. Por ejemplo, puede transmitir un NSURL desde un servidor y le parecerá correcto si lo convierte en una cadena o lo mira en el depurador, pero su cliente se bloqueará si intenta usarlo en una NSURLConnection.

Dependiendo de su experiencia, puede ser más fácil y rápido usar un servicio web, pero vale la pena consultarlo si desea mantener todo el proyecto en Cocoa. Aquí hay un tutorial si desea ver un ejemplo.

0

He escrito un servidor y una clase de cliente para su uso en Cocoa. El uso de estas clases hace que sea muy fácil producir una aplicación de servidor o cliente sin el conocimiento sobre los sockets y esa C-cosa Solo eche un vistazo a my website o al sourceforge.net project site.

Cuestiones relacionadas