CORBA на Mac OS X (Какао) - PullRequest
       17

CORBA на Mac OS X (Какао)

2 голосов
/ 17 мая 2010

В настоящее время я изучаю различные способы поддержки объектов распределенной модели (то есть вычислительной модели, которая выполняется на нескольких разных компьютерах) в проекте, который изначально ориентирован на Mac OS X (с использованием Cocoa). Насколько я знаю, есть возможность использовать кластер классов около NSProxy. Но, кажется, также есть реализации CORBA с поддержкой Objective-C.

Позднее может возникнуть необходимость поддержки / включения машин Windows. В этом случае мне нужно будет использовать что-то вроде Gnustep на стороне Windows (что может быть хорошим вариантом, если это хорошо работает) или придумать комбинацию обеих технологий. Или напишите что-нибудь вручную (что, конечно, наименее желательный вариант).

Мои вопросы:

  1. Если у вас есть опыт работы с обеими технологиями (нативная инфраструктура Какао против CORBA), можете ли вы указать на некоторые ключевые особенности / проблемы любого из этих подходов? ( EDIT: Как я уже указывал в , этот поток удаленные методы пока недоступны для iPhone и iPad. С другой стороны, существуют реализации CORBA, которые работают на платформа, например " AdORB - CORBA ORB для Mac OS X и iPhone OS ".)

  2. Можно ли использовать Gnustep с какао способом, описанным выше? [ РЕДАКТИРОВАТЬ: Согласно записи Gnustep FAQ 1.1.5 это невозможно, поэтому использование нативной инфраструктуры Cocoa блокирует меня в этой технологии.]

  3. Возможно ли (и разумно выполнимо, то есть проще, чем написание сетевого уровня вручную) обмениваться данными между всеми клиентами Mac OS с использованием технологии Cocoa и с клиентами Windows через CORBA? [ РЕДАКТИРОВАТЬ: Из того, что я узнал сейчас, это возможно, но, конечно, не возможно. Сообщения должны пересылаться в обоих направлениях, т. Е. Нужен «прокси» для пересылки сообщений из одной системы в другую и наоборот. По сути это эквивалентно написанию сетевого уровня вручную без практической выгоды ни от кластера класса NSProxy, ни от CORBA.]

ОБНОВЛЕНИЕ: CORBA, кажется, действительно лучше подходит, когда гибкость и расширяемость являются проблемой. Недостатком является то, что кажется более сложным в освоении и использовании на начальном этапе, см. эту ветку (ссылка предоставлена ​​Кристофером Джонсоном - спасибо!) Для различных точек зрения на практические аспекты. Веб-сервисы являются жизнеспособным вариантом, если шаблон связи достаточно прост, см. этот поток , чтобы узнать о вариантах, которые хорошо работают на iOS. Я суммировал свои выводы в этой статье .

Ответы [ 2 ]

2 голосов
/ 14 октября 2010

Самым простым способом реализации распределенных объектов в Какао является, ну, Распределенные объекты (или в Mountain Lion, XPC ). Это действительно очень простой способ получить RMI ( вот полный пример DO ). Однако эти протоколы являются проприетарными и не могут использоваться с платформами не Apple; Хотя GNUstep действительно использует DO, и я успешно использовал их реализацию в кроссплатформенных проектах, их протокол не совместим с Apple. Так что вам придется либо использовать GNUstep в его gnu-gnu-gnu комбинированной библиотеке на Mac OS X вместо Cocoa (что я бы не рекомендовал), либо выбрать другой подход.

CORBA - один из таких "разных подходов". Основные различия между CORBA и DO:

  • в CORBA вы определяете интерфейс обмена сообщениями, используя IDL, который используется для генерации ObjC. С DO вы используете Objective-C напрямую.
  • CORBA не поддерживает "утку"; он строго типизирован, поэтому каждый метод, который вы собираетесь использовать удаленно , должен быть указан в IDL . Это также означает, что любой используемый вами метод гарантированно будет реализован на другом конце (конечно, другой конец не гарантированно будет доступен в любой реализации RMI).
  • Большая часть пользовательской базы CORBA отсутствует в ObjC (Java и C ++ более распространены).
  • CORBA имеет более широкую поддержку платформы.
  • Реализации CORBA не обязательно должны быть в ObjC.
1 голос
/ 23 августа 2010

FWIW, я бы не использовал CORBA, если у вас нет существующей инфраструктуры на основе CORBA, с которой вам нужно взаимодействовать.

В свое время CORBA была в порядке, но это «умирающая» технология, и вам будет трудно получить необходимую поддержку в будущем. Существует также довольно крутая кривая обучения.

Я бы также держался подальше от вещей, связанных с Cocoa / Gnustep, если вы хотите что-то кроссплатформенное, поскольку оно действительно не очень хорошо поддерживается нигде, кроме OS X и iOS.

Вместо того, чтобы овладеть этими устаревшими технологиями, я думаю, вам лучше потратить время на изучение способов использования веб-служб, SOAP или других основных технологий кросс-платформенной интеграции.

...