Webcal 和 WebDAV/CalDAV 有什么区别?

What's the difference between Webcal and WebDAV/CalDAV?

据我了解,CalDAV 是 WebDAV 的扩展,用于管理 iCalendar 订阅。

而 Webcal 是一个 URL 方案,它做同样的事情,但没有标准化。

我在这吗? 什么是 pros/cons 两种方式?

CalDAV 是一种协议,扩展了 WebDAV,因此是 HTTP。

Webcal 是 AFAIK 由 Apple 发明的 URI 方案,与 "http" 具有完全相同的语义,只是 Safari(可能还有其他一些浏览器)知道 URI 指的是日历,因此无需获取资源即可调用 "right" 应用程序。

(当然正确的做法是检查媒体类型(content-type header 字段)然后调用匹配的应用程序。

所以这是一个 anti-pattern(Apple 使用 "itms" URI 再次完成)。

Julian 所说的一切,但大概真正的问题是关于普通 iCalendar-over-HTTP(通常称为 webcal、'iCalendar subscription' 或 'subscribed calendar')和 CalDAV 之间的区别。或者换句话说:CalDAV 添加了什么。

简单地说:在 iCoHTTP 中,您通常将整个日历存储在一个 URL 下, 像“http://yahoo.com/sports/nba/schedule-2015.ics”(或 webcal:)。这个URL 代表一个完整的日历并且几乎总是只读的(您不能对此 URL 执行 PUT)。这是为什么?因为要 add/change/delete 此类日历中的单个事件,您需要 re-transfer 完整日历。

在CalDAV中一个日历就是一个WebDAVcollection,有一个URL表示日历,例如:'http://icloud.com/calendars/joe/home/' and then you have one child URL for each event. Like 'http://icloud.com/calendars/joe/home/buy-beer.ics', 'http://icloud.com/calendars/joe/home/family-meeting.ics'等等。然后,您可以删除、放置等 collection.

的单个项目

总结: 如果您只是想发布一个很少更改并通过其他方式(如 CMS)管理的日历,您可以使用 iCal-over-HTTP。 如果你想提供一个日历,用户(或者可能是一群人)可以从他们的日历客户端中更改,你想使用 CalDAV。

CalDAV 也有一组扩展,例如许多 CalDAV 服务器可以自动为您执行日程安排操作(设置会议等)。有与其他人共享日历等的扩展。

P.S.: 这有点令人困惑,但是,Apple 也有使用 WebDAV 管理 iCalendar 订阅的方法。但这是与 CalDAV 一起工作的另一件事。