Рамочная рекомендация по разработке распределенных приложений для iPhone / iPad - PullRequest
2 голосов
/ 15 сентября 2010

Существует ли платформа распределенных приложений (коммерческая тоже хорошо), которая поддерживает iPhone / iPad?

Что я ищу в рамках:

  • Позволяет мне сосредоточиться на логике приложения
  • Мне не нужно кодировать "низкоуровневое" сетевое программирование (я делал это слишком много раз, поэтому я не хочу делать это снова = p)
  • Следует активно поддерживать (популярно было бы неплохо)

По сути, я могу развиваться быстрее.

Мы планируем разработать мягкое приложение клиент / сервер TCP / IP в режиме реального времени, в котором будет множество клиентов iPhone / iPad (более 30), подключенных к одному серверу по локальной сети. Сервер, скорее всего, будет работать под управлением Windows (если среда не поддерживает его).

Я озираюсь и вижу:

Я все еще решаю, использовать Objective-C или MonoTouch, но склоняюсь к MonoTouch, так как мы получим .NET Framework, а не привязываться только к миру Mac.

Пожалуйста, не стесняйтесь комментировать, если я добавлю что-либо, что не связано с моим вопросом - я новичок в мире iPhone / iPad.

Ответы [ 4 ]

2 голосов
/ 16 сентября 2010

Мы использовали WCF / Monotouch с большим успехом - есть некоторые области работы, которые не на 100%, но в большинстве случаев вы должны найти работу с WCF на monotouch на одном дыхании.

Способностьделиться всей нашей синхронизацией данных, моделью, тестами и т. д. между monodroid и monotouch, а wm7 очень круто (с некоторыми работающими - это легко и просто - вам нужно управлять несколькими файлами prj).

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

Использование SSL для связи с сервером - это PITA, но я думаю, что это скорее пример того, как Apple справилась с этим.

2 голосов
/ 15 сентября 2010

Вы должны быть более точными в своих требованиях.Если вам нужна только сериализация объектов (дегидратация / гидратация) через REST API, то все, что поддерживает POX или JSON, будет работать для вас просто отлично.Однако, если вам нужен вызов метода в стиле RPC с аутентификацией, шифрованием / цифровой подписью, транзакциями и т. Д., Вам понадобится одна из тех платформ, которые вы перечислили выше.в сторону MonoTouch WCF, так как это дает вам возможность позже перенести клиента на другие платформы (например, Windows Phone 7).Опять же, как вы сказали, сейчас это немного сложно, и если команда Mono в будущем решит, что у нее нет ресурсов, чтобы инвестировать в ее поддержку, вам может понадобиться перейти на другую структуру.Конечно, есть и недостаток, что вам нужно использовать MonoTouch для вашего приложения, и вы не можете использовать Objective-C.Конечно, учитывая недавние изменения в Соглашении для разработчиков iOS, это не такая уж большая проблема, но об этом еще нужно помнить.

(Отказ от ответственности: я работал в команде Microsoft WCF, поэтому яЯ склонен к самому продукту)

Другой вариант, который я бы выбрал, это Распределенные объекты Какао.Тем не менее, это был бы мой выбор, если сервер также работает на OS X. Я знаю, что есть Bonjour для Windows, но я сомневаюсь, что он оптимизирован для серверных сценариев, и я также не знаю, насколько богата реализация RPC от Apple поверх него.для платформы Windows.Поэтому я останусь с технологией Apple, только если буду разрабатывать исключительно для платформы Apple.

Обратите внимание, что WCF и распределенные объекты предоставят вам функциональность в стиле RPC, но они не помогут вам в каких-либо конкретных сценариях.Если вам нужен / нужен еще более высокий уровень абстракции, например, вам нужна информация о присутствии или многопользовательский чат, вам все равно придется реализовать их самостоятельно.На этом этапе, возможно, стоит взглянуть на фреймворки, которые предоставляют эти функции для вас.Примером может служить RakNet (который вы перечислили выше), который абстрагирует уровень удаленного взаимодействия и создает поверх него дополнительные функции.

1 голос
/ 16 мая 2011

Вы можете использовать JSON Touch + Vitche PHP Emission Framework , который предоставляет всю необходимую серверную часть. Также вы можете использовать эту платформу для доступа к существующим сервисам SOAP (WCF, Axis и т. Д.).

1 голос
/ 16 сентября 2010

Вы можете использовать буферы протокола Google для реализации RPC, хотя в любом случае вам понадобится некоторое сетевое программирование для транспортировки ваших сообщений.Он поддерживает генерацию интерфейса для C ++, Java, Python и Objective-C и .NET, так что вы можете создавать единый набор сообщений RPC и получать код для работы с ними практически для любой мобильной платформы.Транспортный уровень на ваших мобильных платформах вам придется реализовать самостоятельно.

http: // code.google.com/apis/protocolbuffers/ - главная страница Protobuf (C ++, Java, Python) http: // code.google.com/p/protobuf-net/ - Protobuf .NET, упомянутый в одном из комментариев http: // code.google.com/p/metasyntactic/wiki/ProtocolBuffers - Protobuf для Obj-C

...