2011-07-22 39 views
8

Tiếp theo là thiết lập của chúng tôi & yêu cầu:Chỉnh sửa tài liệu MS Office từ một ứng dụng web: triển khai WebDaV tùy chỉnh hoặc ...?

  • Có một ứng dụng web nào truy cập qua SSL + Basic Authentication. Hầu hết các ứng dụng này đều nằm trong ASP.Net; vài cái cũ trong ASP cổ điển. Máy chủ là Win 2003/IIS 6.0
  • Ứng dụng này cần hỗ trợ chỉnh sửa trực tuyến (hầu hết) tài liệu MS Office (2007 & 2010). Bản thân tài liệu được lưu trữ trong cơ sở dữ liệu, cùng với nội dung của ứng dụng.
  • Người dùng có thể mở tài liệu qua liên kết HTML; ứng dụng văn phòng bên ngoài tương ứng (nói MS Word) nên mở tài liệu ở chế độ chỉnh sửa (với khóa độc quyền) và khi người dùng nhấn nút Lưu, tài liệu sẽ được đăng trở lại ứng dụng.
  • Tốt hơn là không có plugin bên ngoài/điều khiển ActiveX cần được triển khai ở phía máy khách.

Việc triển khai WebDAV tùy chỉnh có phải là cách tiếp cận tốt nhất có thể không? Lưu ý rằng chúng tôi có thể không cần tất cả các tính năng của WebDAV để hỗ trợ các yêu cầu trên. Bạn có biết về bất kỳ lựa chọn thay thế nào không?

Nếu triển khai WebDAV tùy chỉnh là cách đi, bạn có thể giới thiệu một số tài nguyên tốt (plugin IIS thương mại/mã nguồn mở, mẫu trong .Net, tài liệu, v.v.) ngoài http://www.webdav.org/? BTW, tôi không thích cài đặt một CMS cồng kềnh như Sharepoint để hỗ trợ một yêu cầu nhỏ như vậy!

Tôi tìm thấy một chủ đề trên SO về thực hiện tùy chỉnh WebDav: What are your experiences implementing/using WebDAV? Nghe có vẻ ta quá chán nản :((avialable chỉ trên thư mục gốc IIS, yêu cầu Windows xác thực, vv)

Cảm ơn trước

Trả lời

1

Có gì sai với! WebDAV? Có tồn tại một vài thành phần máy chủ WebDAV của bên thứ ba mà bạn có thể cắm vào ứng dụng phía máy chủ của bạn (www.webdavsystem.com, WebDAVBlackbox),

Hoặc bạn có thể tạo một hệ thống tệp ảo trên máy khách sẽ liên lạc với máy chủ usi ng một số giao thức khác (hoặc HTTP đơn giản nếu bạn dễ dàng thực hiện xử lý theo cách này hoặc FTP hoặc SFTP).

+0

Cảm ơn! Tôi đã quyết định sử dụng điều này: [WebDAV với SQL backend] (http://thehojusaram.blogspot.com/2007/06/c-webdav-server-with-sql-backend-source.html) như là một điểm khởi đầu và xây dựng thành phần máy chủ của riêng tôi – Venkat

5

Gần đây tôi đã phát triển một máy chủ Webdav đơn giản bằng cách sử dụng Apache Tomcat WebdavServlet làm cơ sở. Tôi chỉ có nguồn từ SVN (xem bên dưới) và sửa đổi nó để đáp ứng nhu cầu của tôi. Bạn có thể thêm mã vào phương pháp khác nhau trong đó:

doGet 
doLock 
doPut 
doUnlock 
etc... 

Tôi đang sử dụng nó như là một mans WebDAV nghèo ở phía trước của một doanh nghiệp CMS, vì vậy trong mỗi phương pháp tôi đã thêm API gọi để lấy tài liệu, khóa nó, phiên bản nó, hoặc bất cứ điều gì. Về cơ bản họ không muốn mua sản phẩm webdav từ nhà cung cấp, và Tomcat là miễn phí.

Để mở tệp Office trên máy khách, bạn có thể cần phải dựa vào thư viện đi kèm với cài đặt Office (ít nhất là từ Office XP). Lưu ý rằng thành phần này được gọi là SharePoint blah blah nhưng không yêu cầu cài đặt SharePoint ở bất cứ đâu. Tôi có một đoạn mã js ở đây sử dụng thư viện cho một ví dụ, rõ ràng là bạn sẽ sửa đổi để đáp ứng nhu cầu của bạn. Tôi nhận ra bạn đã nói không có ActiveX, nhưng không có nó tôi không chắc chắn 100% làm thế nào bạn sẽ mở các liên kết. Bạn được chào đón để thử những cách khác.

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;  
    } 

Tôi cũng nhận ra rằng máy chủ của bạn là IIS và Apache không dựa vào, nhưng bạn luôn có thể trước Tomcat cài đặt với IIS (đó là những gì chúng ta làm) và sử dụng bộ lọc ISAPI JK trên AJP. Dù sao, đó là một cách để làm mọi thứ và không yêu cầu bạn mua bất cứ thứ gì.

SVN nguồn: http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/WebdavServlet.java

+1

Cảm ơn các mẹo phía máy khách! Khi tôi nói ActiveX không phải là một lựa chọn, tôi có nghĩa là tôi không thích cài đặt * của riêng tôi * điều khiển ActiveX mới. Tuy nhiên, nếu khách hàng đã có các điều khiển ActiveX Sharepoint, nó là một lựa chọn tốt để khám phá. Ngoài ra, tôi thấy các liên kết sau hữu ích: 1) Viết JavaScript tùy chỉnh nếu sharepoint Điều khiển không được cài đặt trên máy khách: http://sharingpoint.blogspot.com/2006_05_01_archive.html 2) Cài đặt đăng ký như được chỉ định tại đây: http: //www.webdavsystem.com/server/documentation/ms_office_read_only Đối với phía máy chủ, vui lòng xem câu trả lời của tôi cho Eugene! – Venkat

2

Khi văn phòng mở một tập tin từ một url, nó sẽ kiểm tra nếu WebDav được hỗ trợ trên url này. Nếu đúng như vậy và WebDav cho phép ghi vào url này thì Office sẽ cho phép người dùng chỉnh sửa tệp.

Bắt Office để mở file khi người dùng nhấp vào một liên kết trong trình duyệt dường như làm việc tốt nhất với một url như thế này:

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

URL theo phong cách này không có tác dụng khi văn phòng không có mặt trên máy của người dùng.

Việc tích hợp với phần mềm được cài đặt trên phần cứng của người dùng rất khó, bởi vì nhà phát triển không có quyền kiểm soát phần cứng của người dùng.

Sẽ là tốt nhất nếu chỉnh sửa tài liệu Office có thể được thực hiện đầy đủ trong trình duyệt. Office365 thực hiện điều này. Việc tích hợp một ứng dụng Line-Of-Business với Office365 được thực hiện thông qua giao thức WOPI.

Văn phòng tích hợp với DropBox và các lượt thích thông qua giao thức này. Tuy nhiên, Microsoft vẫn chưa sẵn sàng cho phép số lượng lớn các ứng dụng LOB tích hợp với Office365.

Có lẽ Microsoft một ngày nào đó sẽ xuất bản SDK để thực hiện tích hợp này mà không cần viết WOPI từ đầu.

Các vấn đề liên quan