Редактирование документов MS Office из веб-приложения: пользовательская реализация WebDaV или ...?

следовать наши установка & требование:

  • существует общедоступное веб-приложение, доступное через SSL + базовую аутентификацию. Большинство из этих приложений находятся в ASP.Net; пара унаследованных в классическом ASP. Сервер Win 2003 / IIS 6.0
  • Это приложение должно поддерживать онлайн-редактирование (в основном) документов MS Office (2007 и 2010). Сами документы хранятся в базе данных вместе с содержимым приложения.
  • В пользователи должны иметь возможность открывать документ через HTML-ссылки; соответствующее внешнее приложение Office (скажем, MS Word) должно открывать документ в режиме редактирования (с эксклюзивной блокировкой), и когда пользователь нажимает кнопку Сохранить, документ должен быть отправлен обратно в приложение.
  • желательно, чтобы никакие внешние Плагины / элементы ActiveX не развертывались на стороне клиента.

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

Если пользовательская реализация WebDAV-это путь, вы можете порекомендовать некоторые хорошие ресурсы (коммерческие / открытые Плагины IIS, образцы в .Net, docs и т. д.), Кроме http://www.webdav.org/ ? Кстати, я не предпочитаю устанавливать громоздкую CMS, такую как Sharepoint, для поддержки такого небольшого требования!

Я нашел поток на SO о пользовательской реализации WebDav: каков ваш опыт реализации / использования WebDAV? это звучит так обескураживающе : ((Avialable только на IIS root, требует проверки подлинности Windows и т. д.)

спасибо заранее!

3 ответов


Что случилось с WebDAV? Существует несколько сторонних серверных компонентов WebDAV, которые можно подключить к серверному приложению (www.webdavsystem.com, наш WebDAVBlackbox).

в качестве альтернативы вы можете создать виртуальную файловую систему на клиенте, которая будет взаимодействовать с сервером, используя какой-либо другой протокол (либо простой HTTP, если вам проще реализовать обработку таким образом, либо FTP или SFTP).


недавно я разработал простой сервер Webdav, используя в качестве базы Apache Tomcat WebdavServlet. Я просто получил источник от SVN (см. ниже) и изменил его для удовлетворения моих потребностей. Вы можете добавить код к различным методам там:

doGet
doLock
doPut
doUnlock
etc...  

Я использую его как бедный человек webdav перед корпоративной CMS, поэтому в каждом методе я добавил вызовы API, чтобы получить документ, заблокировать его, версию или что-то еще. В основном они не хотели покупать продукт webdav у поставщика, и Кот свободен.

что касается открытия файлов Office на клиенте, вам может потребоваться полагаться на библиотеку, которая поставляется с установками Office (по крайней мере, с Office XP). Обратите внимание, что компонент называется SharePoint бла-бла, но он не требует установки SharePoint в любом месте. У меня есть фрагмент JS, который использует библиотеку для примера, очевидно, вы бы изменили его в соответствии с вашими потребностями. Я понимаю, что вы сказали Нет ActiveX, но без него я не уверен на 100%, как вы откроете ссылки. Вы можете попробовать другие способы.

function webedit(id) {
        if (window.ActiveXObject) {
            var ed; 
            try {
                //Office 2003
                ed = new ActiveXObject('SharePoint.OpenDocuments.2');
            } catch (err1) {
                try {
                    //Office 2000/XP
                    ed = new ActiveXObject('SharePoint.OpenDocuments.1');
                } catch (err2) {                
                    try {
                        //Office 2007
                        ed = new ActiveXObject('SharePoint.OpenDocuments.3');
                    } catch (err3) {                
                        window.alert('Unable to create an ActiveX object to open the document. This is most likely because of the security settings for your browser.');
                        return false;
                    }
                }
            }
            if (ed) {
                ed.EditDocument('<%=webdavPath%>/webdav/'+id);
                return false;
            } else {
                window.alert('Cannot instantiate the required ActiveX control to open the document. This is most likely because you do not have Office installed or you have an older version of Office.');
                return false;
            }
        } else {
            window.alert('Internet Explorer is required to use this feature.');
        }
        return false;    
    }

Я также понимаю, что ваш сервер IIS, а не Apache, но вы всегда можете установить Tomcat с IIS (это то, что мы делаем) и использовать фильтр JK ISAPI через AJP. Во всяком случае, это один из способов делать вещи и не требует от вас ничего покупать.

источник SVN: http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/WebdavServlet.java


когда Office открывает файл по url-адресу, он проверяет, поддерживается ли WebDav по этому url-адресу. Если это так, и WebDav разрешает запись на этот url, то Office позволит пользователю редактировать файл.

получение Office для открытия файла, когда пользователь нажимает ссылку в браузере, кажется, лучше всего работает с url-адресом:

ms-word:ofe|u|https://someOfficeFile.docx

URL в этом стиле не работают, когда Office отсутствует на компьютере пользователя.

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

было бы лучше, если бы редактирование документов Office можно было полностью выполнить в браузере. Office365 это. Интеграция бизнес-приложения с Office365 осуществляется через wopi-протокол.

Office интегрируется в DropBox и подобных через этот протокол. Похоже, однако, что Microsoft еще не готова разрешить большое количество LOB-приложения для интеграции с Office365.

возможно, Microsoft когда-нибудь опубликует SDK для этой интеграции без написания WOPI с нуля.