Все ли операции CMIS должны быть синхронными?

спецификация протокола CMIS даже не содержит слов «синхронный» или «асинхронный».

Я предполагаю, что неявно каждая операция на стороне сервера является синхронной?
Есть ли контрпримеры?

Сценарий: я создаю документ, затем сразу же перечисляю каталог, а файл еще не появляется.
Является ли этот сценарий незаконным?
(это не проблема клиента, клиент ждет ответа HTTP, прежде чем перейти к следующему инструкция)


person Nicolas Raoul    schedule 30.01.2013    source источник


Ответы (2)


CMIS синхронна и не имеет семантики для транзакций, охватывающих несколько запросов. Таким образом, каждый успешный запрос на изменение (POST, PUT, DELETE в привязке AtomPub) немедленно влияет на последующие запросы.

Сценарий, который вы изобразили, не является незаконным, его просто невозможно реализовать в CMIS. Если вам нужны асинхронные операции, вам нужно отделить клиент от CMIS и ввести промежуточный уровень, который, например:

  • кэширует состояние перед выполнением мутации CMIS
  • возвращает кэшированное значение до тех пор, пока мутация не будет успешной.
person skuro    schedule 30.01.2013
comment
Спасибо! Мне нужны асинхронные операции, я даже боялся, что они могут существовать :-) - person Nicolas Raoul; 31.01.2013
comment
тогда считайте себя в безопасности :-) - person skuro; 31.01.2013

Обычно операции CMIS должны быть синхронными. Я не знаю ни одного контрпримера. Асинхронная работа на сервере сделала бы практически невозможным создание приложений.

Предполагая, что вы используете AtomPub под прикрытием, вы можете проверить http://bitworking.org/projects/atom/rfc5023.html . Создание ресурса возвращает его URI.

Итак, я предполагаю, что вы видите либо ошибку в реализации, либо клиент использует детали реализации, не предусмотренные спецификацией. Например, репозиторий alfresco по умолчанию индексирует асинхронно (solr). Следовательно, я думаю, должна быть возможность прийти с кодом, который демонстрирует поведение, которое вы наблюдаете, поддерживая листинг поиском.

person Andreas Steffan    schedule 30.01.2013