Вопрос

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

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

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

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

Что вы думаете?

Примеры из реальной жизни будут очень признательны.

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

Это было полезно?

Решение

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

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

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

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

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

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

Наконец, технология Apple для клиент-серверных архитектур — это Веб-объекты рамки.

Другие советы

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

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

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

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

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

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

Посмотрите на API для НССоединение и NSСкачать для обработки сетевого подключения.А НСстринг класс также имеет такие методы, как + stringWithContentsOfURL:кодировка:ошибка: это может быть полезно.

Тогда есть НСКСМЛПарсер и NSXMLДокумент для чтения XML-данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top