Есть ли в Какао способ, который в настоящее время считается лучшей практикой для создания многоуровневого или клиент-серверного приложения?
Я опытный веб-разработчик и очень люблю Python. Я новичок в Какао. Приложение, над которым я работаю, - это система управления пациентами для большой больницы. Ожидается, что система будет хранить огромные объемы данных с течением времени, но данные, передаваемые во время одного сеанса, очень легкие (в основном это просто текст). Предполагается, что связь осуществляется по локальной сети (проводной или беспроводной). Конечно, он должен быть очень безопасным.
Лучшее, что я мог придумать, - это написать веб-службу Python REST и подключиться к ней через приложение Какао. Возможно, я даже использую Python для написания кода самого приложения Какао.
Глядя на Cocoa, я вижу действительно отличные технологии в Cocoa, такие как CoreData, но я не мог найти ничего похожего для разработки клиентского сервера. Я просто хочу убедиться, что ничего не упускаю.
Как вы думаете?
Будем очень признательны за примеры из реального мира.
Заранее спасибо.






Как правило, применимы идеи всех других клиент-серверных фреймворков.
Взгляните на эту ссылку: http://developer.apple.com/internet/webservices/webservicescoreandcfnetwork.html
Посмотрите api для NSConnection и NSDownload для обработки сетевого подключения. Класс NSString также имеет такие методы, как + stringWithContentsOfURL: кодировка: ошибка:, которые могут быть полезны.
Затем есть NSXMLParser и NSXMLDocument для чтения XML-данных.
Какао имеет Переносимые распределенные объекты, что позволяет вам создавать клиент-серверное приложение на чистом Objective-C и Какао, которое может взаимодействовать между процессами или по сети.
К сожалению, это одна из самых сложных вещей для изучения какао. Распределенные объекты не обновлялись, чтобы не отставать от новых технологий, таких как привязки, не так много примеров или документации (и многие из руководств старые, некоторые даже предшествуют OS X). Также есть много "ошибок", даже для опытных программистов на Какао, в способе передачи объектов по сети либо в виде копии, либо в виде прокси-объекта. Например, вы можете передать NSURL с сервера, и он будет казаться нормальным, если вы преобразуете его в строку или посмотрите на него в отладчике, но ваш клиент выйдет из строя, если вы попытаетесь использовать его в NSURLConnection.
В зависимости от вашего опыта использование веб-службы может быть проще и быстрее, но все же стоит обратить внимание, если вы хотите сохранить весь проект в Какао. Вот руководство, если вы хотите увидеть пример.
Если у вас есть контроль и над клиентом, и над сервером, и вы можете ограничить клиента только OS X, я второй ответ Марка. Распределенные объекты Cocoa - это удивительная технология, которая упрощает создание клиент-серверных приложений в стиле RPC.
Если приведенные выше требования слишком строгие для вас, у вас все еще есть много вариантов, доступных для вас в мире Какао:
Вы можете закодировать все клиентское приложение на Python, используя PyObjC. При таком подходе вы можете использовать стандартный сетевой код, который вам знаком по стандартной библиотеке Python. Скрученный также хорошо интегрируется с циклом выполнения Какао (примеры в коде примера PyObjC), и я добился большого успеха, используя Twisted для сетевой связи из с в приложении Какао. Если вы решите пойти по этому пути, вы можете захотеть закодировать клиентское приложение на Objective-C и загрузить код python как плагин (используя NSBundle). py2app PyObjC может компилировать загружаемые пакеты из кода Python.
Вы можете использовать NSURLConnection для высокоуровневого доступа к HTTP-серверу.
Понизив уровень абстракции, вы можете использовать NSStream Cocoa для реализации своего сетевого протокола. Документация по классу - здесь, со ссылками на пример кода, демонстрирующий протоколы HTTP и SOAP.
Вы можете перейти на следующий уровень вниз и использовать классы CFNetwork. NSStream основан на CFNetwork, но у вас есть контроль более низкого уровня над линией с помощью CFNetwork.
Наконец, технология Apple для архитектур клиент-сервер - это фреймворк WebObjects.
Я написал сервер и клиентский класс для использования в Какао. Использование этих классов позволяет очень легко создать серверное или клиентское приложение без знания о сокетах и этих C-материалах. Просто взгляните на мой веб-сайт или на сайт проекта sourceforge.net.