å®é
ä¸Office Web Appsä¹æ¯å¯ä»¥æ¥å
¥èªå·±å¼åçç³»ç»çãä¸é¢ä»ç»ä¸ä¸æ´åOffice Web Appsçä¸äºç论ç¥è¯ã
è¦æ³è®©èªå·±çç³»ç»ä¸Office Web Appsæ´åå°±ä¸å®è¦æ¸
æ¥ä¸äºæ¦å¿µï¼é¦å
è¦ç解ä»ä¹æ¯âWOPIâã
WOPIçè±æå
¨ç§°æ¯âWeb Application Open Platform Interfaceâï¼ä¸æå为âWebåºç¨ç¨åºå¼æ¾å¹³å°æ¥å£åè®®âã
WOPIåè®®æä¾ä¸ç³»ååºäºwebæ¹å¼çï¼ä½¿ææ¡£è½å¨Office Web Appsä¸æ¥çä¸ç¼è¾çæ¥å£æå¡ï¼Web Serviceï¼ã
åªè¦web applicationæç
§æ åï¼å®ç°äºWOPIçæ¥å£ï¼é£ä¹å°±å¯ä»¥è°ç¨Office Web Appsãä¾åå¾å¤ï¼æ¯å¦SharePointï¼Exchangeï¼SkyDriverï¼DropboxéæOffice Web Appsã
å¦æèªå·±åçwebåºç¨ä¹å®ç°äºç¸åºæ¥å£ï¼ä¹æ¯å¯ä»¥è°ç¨Office Web Appsçãå®ç°ææ¡£çå¨çº¿ç¼è¾æ¥çã
è¿æ ·æ¯å¸é¢ä¸çä¸äºåºäºActiveXçå¨çº¿Office产åæå¾å¤§çä¼å¿ã
é¦å
Office Web Appsæ¯åºäºç½é¡µææ¯ï¼æ以æ¯è·¨å¹³å°çï¼å¯ä»¥å¨iOSï¼å®åï¼WPåPC使ç¨ï¼å®ç°å¤å±ä¸ä½ã
å
¶æ¬¡Office Web Appså®ç°äºæ¡é¢Officeç大é¨ååè½ï¼è½å¨å®¢æ·æºæ²¡æå®è£
Officeçæ
åµä¸ï¼å®ç°äºç«¯ä¸çææ¡£ç¼è¾æ¥çã
ä¸é¢ä»ç»çå
容é½æ¯åºäºhttpåè®®ä¸çï¼httpsä¹æ¯ç±»ä¼¼çã
å¨WOPIç»æä¸ï¼
æ们æåæ¾Officeææ¡£çwebåºç¨å«WOPI Hostæè
WOPI Serverã
ææ¥çç¼è¾æä½Officeææ¡£çwebåºç¨å«WOPI Clientæè
å«WOPI applicationsã
æ以ï¼Office Web Appså
å½çå°±æ¯WOPI Clientçè§è²ã
SharePointï¼Exchangeï¼èªå·±å¼åçæ档管çç³»ç»å
å½çå°±æ¯WOPI Hostçè§è²ã
ä¸å¾ä¸ºæµè§å¨ï¼serverï¼clientä¸è
ç请æ±é¡ºåºåå
³ç³»ï¼
ä»ä¸å¾å¯ç¥ï¼WOPI Client åWOPI Serveråéäºä¸¤æ¬¡è¯·æ±
1. Tell me about the file
2. Give me the file
æ以WOPI clientè³å°è¦æä¾ä¸¤ä¸ªWebæå¡ã
1. ä¸ä¸ªæ¯CheckFileInfoæå¡
æ¤æå¡è¿åçæ¯è¯·æ±æ件çåºæ¬ä¿¡æ¯ï¼WOPI Host以jsonæ¹å¼è¿åç»WOPI Client.
æå¡URIæ ¼å¼ä¸è¬ä¸º
http://server/<...>/wopi*/files/<id>?access_token=<token>
æ¤æå¡è¿åçjsonæ ¼å¼ç±»ä¼¼ä¸ºï¼
{
"BaseFileName": "Sample Document.docx",
"OwnerId": "tylerbutler",
"Size": 300519,
"SHA256": "+17lwXXN0TMwtVJVs4Ll+gDHEIO06l+hXK6zWTUiYms=",
"Version": "GIYDCMRNGEYC2MJREAZDCORQGA5DKNZOGIZTQMBQGAVTAMB2GAYA===="
}
Jsonä¸è³å°è¦å
æ¬äºä¸ªå±æ§ï¼BaseFileName, OwnerId, Size, SHA256, å Version
BaseFileName: æ件åã
OwnerId: æ件ææè
çå¯ä¸ç¼å·ã
Size: æ件大å°ï¼ä»¥bytes为åä½ã
SHA256: æ件ç256ä½bitçSHA-2ç¼ç æ£åå
容ã
Version: æ件çæ¬å·ï¼æ件å¦æ被ç¼è¾ï¼çæ¬å·ä¹è¦è·çæ¹åã
æ´å¤åæ°ä»ç»è¯·åèï¼
http://msdn.microsoft.com/en-us/library/hh622920(v=office.12).aspx
2. ä¸ä¸ªæ¯GetFileæå¡
æ¤æå¡è¿åçæ¯è¯·æ±æ件çå
容ï¼WOPI host以æ°æ®æµçæ¹å¼è¿åç»WOPI Client.
æå¡URIæ ¼å¼ä¸è¬ä¸º
http://server/<...>/wopi*/files/<id>/contents?access_token=<token>
注æï¼CheckFileInfoä¸GetFileæå¡çURIæ ¼å¼åªå·®äºä¸ä¸ª/contentsï¼å
¶ä»å°æ¹çæ ¼å¼æ¯æ²¡æä¸åçãè¿ä¹åæ¯ä¸ºäºè®©WOPI clientå¯ä»¥éè¿CheckFileInfoæå¡URIæ¨å¯¼åºGetFileæå¡çURIï¼åä¸ä¸è¦å«åºå¿è£ï¼ååºçæå¡URIæ ¼å¼ç ´åäºè¿å±å
³ç³»ã
å¨ä¸è¿°URIæ ¼å¼ä¸ï¼é½æä¸ä¸ªaccess_taken身份éªè¯ä»¤çãè¿ä¸ªèº«ä»½éªè¯ä»¤çæ¯å¿
é¡»è¦æçï¼WOPI clientä¼ææ¤ä»¤çååç»WOPI Hostï¼ç±WOPI Hostéªè¯å½åç¨æ·å¯¹å½åæ件çæéãæ以å®é
ä¸Office Web Appsæ ¹æ¬ä¸æ¶åææ¡£çæé管çã
æ们å¨WOPI clientä¸æå¼ä¸ä¸ªOfficeææ¡£çurlå°å类似å¦ä¸ï¼
http://wopi-app-server.contoso.com/wv/wordviewerframe.aspx?WOPISrc=http%3A%2F%2Fmy-wopi-host%2Flocal%2Fwopi
%2Ffiles%2F1-Sample%2520Document.docx&access_token=
dc172034-c6f9-4a43-bc3f-d80dd93c1de1
è¿ä¸ªéé¢æä¸¤ä¸ªä¼ éåæ°ï¼WOPISrcåaccess_token
WOPISrcåæ°çå
容为ï¼
http://my-wopi-host/local/wopi/files/1-Sample%20Document.docxå®é
ä¸è¿ä¸ªæ¯WOPI Hostä¸çCheckFileInfoæå¡å°åã
WOPI clientä¼éè¿è¿ä¸ªå°åå ä¸access_tokenä»WOPI hostä¸è·åå°1-Sample%20Document.docxæ件çä¿¡æ¯ï¼
并ä¸éè¿è¿ä¸ªå°åæ¨å¯¼åºWOPI Hostä¸çGetFileæå¡å°åï¼éè¿GetFileæå¡è·åå°1-Sample%20Document.docxæ件çå
容ã
WOPI hostä¸å¤æä»ä¹ç±»åçæ件åºè¯¥æä¹ç¨WOPI clientæå¼ï¼WOPI clientä¼æä¾ä¸ä¸ªxmlæ件ç»WOPI hostï¼è¿ä»½xmlæ件å«WOPI Discoveryãæ ¼å¼ç±»ä¼¼å¦ä¸ï¼
<?xml version="1.0" encoding="utf-8"?>
<wopi-discovery>
<net-zone name="external-https">
<app name="Word" favIconUrl="
https://wopi-app-server.contoso.com/wv/resources/1033/FavIcon_Word.ico"
checkLicense="true">
<action name="view" ext="doc" default="true"
urlsrc="
https://wopi-app-server.contoso.com/wv/wordviewerframe.aspx?
<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>"/>
<action name="view" ext="docm" default="true"
urlsrc="
https://wopi-app-server.contoso.com/wv/wordviewerframe.aspx?
<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>"/>
â¦â¦
</app>
â¦â¦
</net-zone>
</wopi-discovery>
å¦ä¸æè¿°ï¼æå¼docæ件ï¼åºè¯¥ä½¿ç¨
https://wopi-app-server.contoso.com/ wv/wordviewerframe.aspxçurlæå¼ã
WOPI hoståºè¯¥è·åè¿ä»½æ件ä¸æ¬¡ï¼ä»¥åæå¼ä»ä¹ç±»åçæ件ï¼è°ç¨ä»ä¹urlèªå·±å¤æã