我的应用程序在运行时生成一个复杂的日历,因此任何用户都有特定日期/时间的任务,并且每个任务都有描述 + 一些属性。
我被要求将此日历“发布”为 webCal。我对webcal一无所知,无论如何我想知道你们中是否有人已经尝试过并可以写下他的意见或建议。
一个问题是“如何识别用户”?由于我有一个多用户日历,如何为每个用户发布单独的日历?
我认为是一种持续运行的Delphi服务应用程序,发布日历。
我的应用程序在运行时生成一个复杂的日历,因此任何用户都有特定日期/时间的任务,并且每个任务都有描述 + 一些属性。
我被要求将此日历“发布”为 webCal。我对webcal一无所知,无论如何我想知道你们中是否有人已经尝试过并可以写下他的意见或建议。
一个问题是“如何识别用户”?由于我有一个多用户日历,如何为每个用户发布单独的日历?
我认为是一种持续运行的Delphi服务应用程序,发布日历。
这取决于您的用户是否需要对其日历的写入权限。
我曾经写过一个简单的(命令行)实用程序,可以导出单个(.ics)日历文件。如果发生更改,它会将导出的 .ics 文件上传到 Web 服务器,日历客户端(例如 Google Calendar、iCalendar、Sunbird、Outlook)可以在其中获取该文件。通过将 .ics 文件上传到每个用户的不同文件夹,可以轻松地为不同用户发布。
接下来,我安排此实用程序定期运行。当然,您可以让您的 Delphi 服务定期执行此操作。
许多日历客户端既了解http://
URL,也了解webdav://
URL。可以使用常规 HTTP 身份验证方案之一来安排身份验证。当然,您会希望使用 SSL 来保护事物。
这种方法的唯一限制是生成的日历实际上是只读的。
如果您想提供写访问权限,您将需要一个真正的 webcal 服务器。真正的 webcal 实现意味着在服务器上支持webdav协议(它本身是 HTTP 协议的扩展),并从您的 Delphi 服务中获取更改。要么,要么在 Delphi 中编写 WebDav/CalDav 服务器(例如,通过扩展组件来使用 Indy TIdWebdav 组件TIdHTTPServer
,因为 Indy 不支持 TIdWebdavServer 组件)。
OnCommandOther
根据WebDAV 规范,您必须自己处理所有特定于 webdav 的命令(使用事件) 。这个关于编写 WebDAV 服务器的问题可能会提供一些指针......
或者,您可以使用 3rd-party webdav 服务器,并从您的 Delphi 服务中获取任何更改。