2010-12-10 3 views
3

В настоящее время я копаю способ создания сервера CardDAV на PHP. Это для небольшой разработки, которая, мы надеемся, позволит моей компании обмениваться контактами с/на многие виды устройств, обслуживаемых пользовательским бэкэндом/CRM.CardDAV Server в PHP

Я начал играть, пытаясь понять протокол, но в итоге оказался в два раза более смущенным. Затем я прочитал проекты IETF, но выяснил, что я даже не понимаю основы самого WebDAV.

В каком виде вы бы посоветовали мне узнать о CardDAV, WebDAV и обо всем, что связано?

+0

Это неудобный протокол. Но вы можете попробовать PEAR HTTP_WebDAV_Server или реализацию Horde (с VFS) для проникновения в переданный xmlish материал. – mario 2010-12-10 03:48:35

+0

Спасибо Марио, я посмотрю! – Roberto 2010-12-10 07:18:36

+0

Woah! SaberDAV может быть именно тем, что я искал, я буду изучать его, немного поиграть, и если мне удастся написать модуль, я верну свой проект, Evert. Благодаря! – Roberto 2010-12-11 04:48:59

ответ

11

Мне любопытно посмотреть, могу ли я помочь решить некоторую путаницу вокруг webdav. Большинство стандартов IETF используют язык, который кажется очень тупым.

Обоснование за WebDAV

HTTP был разработан для извлечения веб-ресурсов или я говорю чтение. Он не предназначен для создания веб-ресурса.

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

Think файловой системы

Самый короткий путь к пониманию WebDAV является его сходство обработки веб-ресурсов как файловой системы.

Как и в случае с папками, есть collections как специальный веб-ресурс, который может содержать другие веб-ресурсы. Это необходимо, чтобы выделить это как особый ресурс, потому что возможности (методы, которые будут применяться разные для нормального ресурса)

Так новый метод был рожден - mkcol

Так же, как files have attributes, web resources have meta-properties который предоставляет некоторые подробности о сети ресурс. Сам контент веб-ресурса может быть отображен по-прежнему (HTTP уже делает это для вас).

Короче говоря, вам также необходимо иметь methods to enquire into meta-properties - PROPFIND, а также изменить их - PROPATCH. Полезные нагрузки XML предназначались для поиска и извлечения этих свойств.

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

Некоторые свойства специфичны для webdav. Они были созданы из-за необходимости. Например: Resourcetype Property. Он был создан, чтобы узнать, используете ли вы специальный ресурс коллекции или обычный веб-ресурс, содержащийся в коллекции.

Помните, что GET (подобно HTTP) извлекает ресурс, PUT изменяет ресурс, а DELETE удаляет ресурс.

Ограничения HTTP

Чтобы понять WebDAV, вы должны понимать ограничения HTTP.

  1. Он не имеет гражданства, заставляя пользователя строить поиск с нуля.
  2. Вы не можете сказать, что это тоже все ресурсы в определенной коллекции.
  3. Он доступен только для чтения и не предоставляет возможности совместной работы, необходимые для создания.
  4. В нем отсутствует поддержка многоресурсных операций. Чтобы поддержать это, был создан depth header, чтобы вы могли определить, нужно ли ему работать со всеми ресурсами.

WebDAV модель ресурса

+--------+ +--------------+ 
    |Resource|... |Property  | 
    +--------+ +--------------+ 
       +------++------+ 
       |Webdav||custom| 
       +------++------+ 

    +-----------+ 
    |Dav root: /|...... 
    +-----------+  |  +--------+ 
        |.....|Resource| 
        |  +--------+ 
        |  +----------+ 
        |.....|Collection|..... +----------+ 
        '  +----------+ |...|Collection| 
              | +----------+ 
              | +--------+ 
              |....|Resource| 
               +--------+ 
0

Вы также можете попробовать DAViCal, а CalDAV и сервер CardDAV, написанный на PHP с бэкэнд Postgres. Я считаю, что это очень надёжно, но будьте осторожны: развитие остановилось хотя бы временно. В списке рассылки есть патч, доступный для совместимости DAViCAl с последними продуктами Apple (в которых есть много ошибок, которые необходимо обработать).

Код открыт с источника (не знаю, какая именно лицензия применяется), но если вы все еще хотите что-то создать самостоятельно, вы можете посмотреть, как DAViCal обрабатывает Cal- и CardDAV.

http://www.davical.org

Смежные вопросы