2011-06-02 88 views
0

我用一個簡單的方法創建了一個WCF項目,該方法返回一個byte []和一個int(id#)的pdf,並且具有用戶名+密碼以及用於消息安全性的自定義驗證器和用於傳輸安全性的SSL。現在客戶告訴我他假設我要創建一個RESTful API。我對REST沒有任何經驗,但我已經看到你可以在WCF中創建一個REST項目(這正是我希望與我的解決方案的其餘部分進行交互的原因)。WCF RESTful API

首先,您可以在RESTful API中以相同的方式提供pdf嗎?我將int設置爲out參數以便將其返回給客戶端,我可以假設out參數的功能也一樣嗎?

其次,我可以使用相同種類的安全設置嗎?我假設SSL仍然會保護傳輸,但我似乎無法找到一個很好的示例或基本安全教程。如果需要,我可以使用不同的安全方法。

回答

1

REST比SOAP不同,甚至WCF在您不使用繁瑣的「信封」不幸的是那些信封爲您提供像你正在使用的身份驗證方案的功能(和OUT參數,等等)

請參閱Best Practices for securing a REST API/web service

您可以使用基本身份驗證+ SSL進行身份驗證。儘管你必須加密基本認證,否則它是不安全的。至於OUT參數,看起來像下面這樣的複合基於XML的結果是一條路可走:

GET

可以返回XML,如:

<result> 
    <intValue>4</intValue> 
    <pdfByteString><![CDATA[bytestring...etc.]]></pdfByteString> 
</result> 

實際上,它看起來像WCF確實有一些內置的功能來幫助你,這個白皮書應該提供一個體面的介紹:

http://msdn.microsoft.com/en-us/library/ee391967.aspx#Y1720

+0

感謝您的快速回復。微軟在這方面確實有一些很好的文檔。所以我可以只返回pdf旁邊的其他參數?這非常有幫助。我瞭解你所談論的一切,除了你在那裏的。您如何建議將PDF傳遞給客戶?我加載一個模板,然後用iTextSharp將一些字段寫入它。然後,我只需要以某種方式把它交給他們。 – 2011-06-02 13:12:44

+0

我會將PDF轉換爲服務器端的字節數組,然後返回該字節數組的字符串表示形式,無論哪個更容易。然後客戶端需要在寫入文件系統的內存中處理字節數組並將其發送給用戶。我認爲這是沒有問題的,因爲這是一個Web服務(沒有人會輸入服務的URL到他們的瀏覽器,並期待「另存爲」對話框,對吧?) – mikey 2011-06-02 13:23:35

+0

而不是字節作爲字符串,你可以考慮base64編碼,或「基於引用」的實現,在這裏討論:http://msdn.microsoft.com/en-us/library/ms996427.aspx#infoset_whitepaper_topic2a – mikey 2011-06-02 13:29:55