Какао клиент / серверное приложение - PullRequest
10 голосов
/ 03 января 2009

Есть ли способ в Какао, который в настоящее время считается лучшей практикой для создания многоуровневого или клиент-серверного приложения?

Я опытный веб-разработчик и очень люблю Python. Я новичок в Какао, хотя. Приложение, над которым я пишу, - это система управления пациентами в большой больнице. Ожидается, что система будет хранить огромные объемы данных с течением времени, но данные, передаваемые в течение одного сеанса, очень легкие (в основном только текст). Предполагается, что связь происходит по локальной сети (проводной или беспроводной). Конечно, это должно быть очень безопасно.

Лучшее, что я могу придумать, - это написать веб-сервис Python REST и подключиться к нему через приложение Cocoa. Может быть, я даже буду использовать Python для кодирования самого приложения Cocoa.

Глядя на Какао, я вижу действительно замечательные технологии в Какао, такие как CoreData, но я не смог найти ничего похожего для разработки клиент-сервера. Я просто хочу убедиться, что я ничего не пропускаю.

Что ты думаешь?

Примеры из реального мира будут высоко оценены.

Заранее спасибо.

Ответы [ 5 ]

6 голосов
/ 04 января 2009

Если у вас есть контроль над клиентом и сервером, и вы можете ограничить клиента только OS X, я отвечу Марку вторым. Распределенные объекты Cocoa - это удивительная технология, которая делает клиент-серверные приложения в стиле RPC очень простыми.

Если приведенные выше требования слишком ограничительны для вас, у вас все еще есть много вариантов в мире какао:

  1. Вы можете закодировать все клиентское приложение на Python, используя PyObjC. При таком подходе вы можете использовать стандартный сетевой код, с которым вы знакомы из стандартной библиотеки Python. Twisted также прекрасно интегрируется с циклом запуска Cocoa (примеры в примере кода PyObjC), и я добился большого успеха, используя Twisted для сетевого взаимодействия из с в приложении Cocoa. Если вы решите пойти по этому пути, вы можете закодировать клиентское приложение в Objective-C и загрузить код Python как плагин (используя NSBundle). py2app PyObjC может компилировать загружаемые пакеты из кода Python.

  2. Вы можете использовать NSURLConnection для высокоуровневого доступа к серверу на основе HTTP.

  3. Понизив уровень абстракции, вы можете использовать NSStream Какао для реализации вашего сетевого протокола. Документация класса здесь со ссылками на пример кода, демонстрирующий протоколы HTTP и SOAP.

  4. Вы можете опустить еще один уровень и использовать классы CFNetwork. NSStream основан на CFNetwork, но вы имеете более низкий уровень контроля над линией, используя CFNetwork.

Наконец, технология Apple для клиент-серверных архитектур - это инфраструктура WebObjects .

3 голосов
/ 03 января 2009

Какао имеет Переносимые распределенные объекты , которые позволяют создавать клиент-серверные приложения в чистом Objective-C и Cocoa, которые могут взаимодействовать между процессами или через сеть.

К сожалению, это одна из самых сложных вещей в какао. Распределенные объекты не были обновлены, чтобы идти в ногу с новыми технологиями, такими как привязки, нет большого количества примеров или документации (и многие учебные пособия устарели, некоторые даже предшествуют OS X). Даже у опытных программистов Cocoa есть много «ловушек» в том, как объекты передаются по проводам в виде копии или объекта-посредника. Например, вы можете передать NSURL с сервера, и это будет нормально, если вы преобразуете его в строку или просматриваете его в отладчике, но ваш клиент потерпит крах, если вы попытаетесь использовать его в NSURLConnection.

В зависимости от вашего опыта, может быть проще и быстрее использовать веб-сервис, но все же стоит посмотреть, хотите ли вы сохранить весь проект в Какао. Вот учебник , если вы хотите увидеть пример.

1 голос
/ 03 января 2009

Как правило, идеи всех других клиент-серверных структур применимы.

Взгляните на эту ссылку: http://developer.apple.com/internet/webservices/webservicescoreandcfnetwork.html

0 голосов
/ 06 мая 2009

Я написал сервер и клиентский класс для использования в Какао. Используя эти классы, очень легко создать серверное или клиентское приложение без знания сокетов и тому подобного. Просто взгляните на мой сайт или сайт проекта sourceforge.net .

0 голосов
/ 03 января 2009

Посмотрите на API для NSConnection и NSDownload для обработки сетевого подключения. Класс NSString также имеет такие методы, как + stringWithContentsOfURL: encoding: error: , что может быть полезно.

Тогда есть NSXMLParser и NSXMLDocument для чтения XML-данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...