не могу дать ответов; только некоторые вещи, которые нужно рассмотреть в произвольном порядке.
Я также предполагаю, что ваша модель заключается в том, что устройство iOS опрашивает сервер для синхронизации состояния.
Вероятно, лучше избегать прямого использования сокетов Berkeley на устройстве iOS. У iOS раньше были проблемы с низкоуровневыми сокетами, не соединяющимися после периода бездействия. По крайней мере, я бы использовал объекты NSStream или CFStream для транспорта или, если возможно, я бы использовал NSURL, NSURLConnection, NSURLRequest. Возможность асинхронной загрузки данных NSURLConnection хорошо сочетается с циклом обновления графического интерфейса iOS.
Я думаю, вам придется реализовать какую-то форму языка определения данных независимо от вашего метода реализации (RES, XML RPC, CORBA, свернуть свой собственный и т. Д.)
Данные, которые вы отправляете и получаете по проводам, вероятно, будут XML или JSON. Если вы используете XML, вам придется написать свой собственный обработчик документов XML, так как iOS реализует класс NSXMLParser, но не класс NSXMLDocument. Я бы сослался на JSON, так как синтаксический анализатор JSON вернет иерархию NSArray или NSDictionary объектов NSO, содержащих несериализованные данные.
Я работал над реализацией GSOAP, которая использовала CFStreams для транспорта. Каждый запрос и ответ обрабатывались классом, специфичным для запроса, для создания объектов, специфичных для запроса. Каждый новый запрос требовал нового определения класса для возвращаемых данных. Интерактивность поддерживалась путем запуска запросов через NSOperationQueue. Здесь много шимов. Основным преимуществом этого метода было то, что интерфейс был определен в схеме wsdl (все запросы, ответы и структуры данных были определены в одном месте.
Я не смотрел на CORBA на iOS - вам пришлось бы привязать библиотеки C ++ к своему коду и изменить транспорт для использования CFStreams. Опять же, много шимов, но преимущество в том, что протокол определен в файле idl. Также у вас будет одно соединение с сервером, вместо того, чтобы устанавливать и разрывать TCP-соединения для каждого запроса.
Мои $ .02