Сети Objective C - лучшие практики?

измените формулу QUERY с этого:

=QUERY({Sheet1!A:C,
        Sheet2!A:C}, "select *")

на это:

=QUERY({IFERROR(Sheet1!A:C, {"","",""}),
        IFERROR(Sheet2!A:C, {"","",""})}, "select * where Col1 is not null")
11
задан Allyn 25 February 2009 в 03:55
поделиться

5 ответов

И пока клиент и сервер приложения OS X и могут оба быть записаны в Objective C с помощью платформ Какао, я настоятельно рекомендовал бы, чтобы Вы смотрели на технологию Распределенных объектов (DO) в Какао. Я не попытаюсь дать учебное руководство в Распределенных Объектах здесь, просто объяснить, почему это могло бы быть полезно...

СДЕЛАЙТЕ дескрипторы асинхронные сетевые детали для Вас (все Ваши клиентские обновления могли произойти на единственном потоке). Кроме того, семантика связи с удаленным объектом (клиент к серверу или стиху визы; СДЕЛАЙТЕ двунаправлено, после того как соединение устанавливается), очень похожи на незавершенную коммуникацию. Другими словами, после того как у Вас есть ссылка на удаленный объект (действительно NSDistantObject который действует как прокси к объекту на другом конце соединения), Ваш клиентский код может отправить сообщения в удаленный объект, как будто это было локально:

[remoteServer update:client];

от клиента или

[[remoteClientList objectAtIndex:i] update:server];

с сервера. Я оставлю детали установки соединения и для получения remoteServer или remoteClient ссылки на Вас после чтения Распределенного руководства по программированию Объектов.

Оборотная сторона использования ДЕЛАЕТ то, что Вы связываетесь с Какао; будет очень трудно записать клиенту некакао или серверу, который передает использование Объекты Distirbuted. Если существует шанс, можно хотеть иметь клиент некакао или реализации сервера, Вы не должны использовать, ДЕЛАЮТ. В этом случае я рекомендовал бы что-то простое с большой поддержкой языка и межплатформенными. Стиль REST API по HTTP является хорошим вариантом. Взгляните на документацию Загрузочной системы URL Какао для получения информации о том, как реализовать Запросы HTTP и ответы. Взгляните на пример кода CocoaHTTPServer Apple или проект code.google.com того же названия информации о реализации сервера HTTP в Вашем коде Какао.

Как самая последняя опция, можно смотреть на Потоковое Руководство по программированию Какао, если Вы хотите реализовать свой собственный сетевой протокол. NSStreamподклассы позволят Вам послушать на сетевом сокете и обработать асинхронные чтения/записи к/от тому сокету. Много людей использует AsyncSocket с этой целью. Это переносит CFStream (низшего уровня) и CFSocket и делает код сети написания несколько легче.

10
ответ дан 3 December 2019 в 07:39
поделиться

В стороне разработчика яблока существует несколько сетевых примеров. Один я рекомендовал бы проверить, URLCache, который может быть загружен. Заключение в кавычки из документации Apple для этого примера:

URLCache является демонстрационным приложением для iPhone, которое демонстрирует, как загрузить ресурс от сети, сохранить ее в каталоге данных приложения и использует локальную копию ресурса. URLCache также демонстрирует, как проводить несколько кэширующейся политики:

2
ответ дан 3 December 2019 в 07:39
поделиться

Я не знаю, как Вы планируете разработать Вас система, но обычно сервер не может соединиться с клиентом; клиент должен инициировать коммуникацию. С низким пределом 50 клиентов Вы не можете смотреть на web-server/client-like реализацию...

Тем не менее существует в основном два способа обработать клиент-серверную коммуникацию: 1. Клиент опрашивает сервер периодически для получения обновлений 2. Клиент сохраняет соединение открытым для сервера и, сервер отвечает известным (поскольку в обеих сторонах понимают это), протокол.

0
ответ дан 3 December 2019 в 07:39
поделиться

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

2
ответ дан 3 December 2019 в 07:39
поделиться

Интересным вариантом является протокол BLIP от Йенса Альфке . Это похоже на урезанную версию BEEP : сетевой системы, ориентированной на сообщения. Он в основном предоставляет низкоуровневые абстракции для двунаправленного канала сообщений, поэтому вы можете сосредоточиться на размещении своего протокола связи поверх него.

У него есть достойные последователи, такие как Маркус Зарра (автор библии CoreData) и Гас Мюллер из программного обеспечения Flying Meat.

2
ответ дан 3 December 2019 в 07:39
поделиться