翻譯|行業(yè)資訊|編輯:胡濤|2023-12-29 10:25:30.200|閱讀 83 次
概述:在本文中,我們將探討新的 S3 傳輸。從功能上來說,S3 與大多數(shù)人習(xí)慣使用的有很大不同,因此在本文的開頭,我們將詳細(xì)介紹它的主要功能。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在本文中,我們將探討新的 S3 傳輸。從功能上來說,S3 與大多數(shù)人習(xí)慣使用的有很大不同,因此在本文的開頭,我們將詳細(xì)介紹它的主要功能。
FastReport .NET 是適用于.NET Core 3,ASP.NET,MVC和Windows窗體的全功能報(bào)告庫(kù)。使用FastReport .NET,您可以創(chuàng)建獨(dú)立于應(yīng)用程序的.NET報(bào)告。
S3 不是像 Dropbox、Google Drive、Mega 等那樣的文件存儲(chǔ)。S3是對(duì)象存儲(chǔ)。首先,我們需要了解這兩個(gè)概念之間的區(qū)別。
文件存儲(chǔ)具有通常的分層(樹)結(jié)構(gòu)。即存儲(chǔ)其他目錄和文件的熟悉的目錄(文件夾)。
對(duì)象存儲(chǔ)相對(duì)較新(最古老的現(xiàn)在大約有 20 年歷史)。它們的實(shí)現(xiàn)略有不同,因此大多數(shù)功能都是通用的,但有些功能僅適用于 S3。
所有對(duì)象存儲(chǔ)都是“扁平的”,這意味著它們沒有層次結(jié)構(gòu),盡管它們可以“模仿”它。
開始使用 S3 時(shí)您將遇到的第一個(gè)實(shí)體是 Bucket。最接近的類比是許多編程語言中的“Map”,其中通過鍵請(qǐng)求數(shù)據(jù)。一個(gè)桶只能存放自己的文件,不能存放其他桶的文件。
關(guān)于bucket
Bucket |
|
Key |
Data |
video.mp4 |
Data |
text_file.txt |
Data |
code.pas |
Data |
使用該密鑰,您可以獲得與其對(duì)應(yīng)的元數(shù)據(jù),并根據(jù)需要自行解釋。更有趣的是在這樣的系統(tǒng)中模仿分層文件夾結(jié)構(gòu)。
Bucket |
|
Key |
Data |
video.mp4 |
Data |
folder1\text_file.txt |
Data |
folder1\video.mp4 |
Data |
folder1\folder1_1\video.mp4 |
Data |
folder2\text_file.txt |
Data |
folder1\ |
Empty |
folder1\folder1_1\ |
Empty |
folder2\ |
Empty |
某些“文件夾”與文件是相同的對(duì)象。它們只是為了視覺清晰度而采用不同的顏色。然而,它們有一個(gè)顯著特征——鍵末尾有一個(gè)斜杠 (\)。通常,這些“文件夾”不包含任何數(shù)據(jù)(盡管它們可以)。
要查看“文件夾”folder1 的內(nèi)容,我們需要按鍵前綴“folder1\”進(jìn)行過濾。但更有趣的是刪除“文件夾”。如果我們嘗試在 Web GUI 中刪除“文件夾”folder1,某些服務(wù)會(huì)允許這樣做,但其他服務(wù)會(huì)向我們顯示錯(cuò)誤“無法刪除非空文件夾”。
如果我們通過 API 刪除帶有鍵“folder1\”的單個(gè)記錄,大多數(shù) GUI 將停止渲染該特定“文件夾”。我們也將無法訪問它,但實(shí)際上,該“文件夾”內(nèi)的文件仍然存在。一旦我們?cè)俅蝿?chuàng)建一個(gè)名為folder1的“文件夾”,它就已經(jīng)包含了被遺忘的文件。該密鑰幾乎沒有限制,例如,它可以是“////”之類的內(nèi)容。這些將是名稱為空的“文件夾”。
1. 對(duì)象存儲(chǔ)要便宜得多。每個(gè)對(duì)象不綁定到特定設(shè)備,因此對(duì)象存儲(chǔ)可以輕松擴(kuò)展到所需的容量。您可以輕松租用 PB(約 1,000,000 GB)的對(duì)象存儲(chǔ)。
2. 對(duì)象存儲(chǔ)的搜索速度非???。但自然地,對(duì)象存儲(chǔ)最適合用于非結(jié)構(gòu)化(非樹)數(shù)據(jù)。
之前的所有傳輸均使用 OAuth 2 協(xié)議。理論上,S3 也可以與 OAuth 2 配合使用,但它的 API 中有內(nèi)置的身份驗(yàn)證系統(tǒng)。OAuth 2 使用客戶端 ID 和秘密 ID 獲取存在一定時(shí)間并且可以簽署任何請(qǐng)求的令牌。
S3 的內(nèi)部身份驗(yàn)證使用相同的 Client ID 和 Secret ID,基于大約 30 個(gè)變量(包括令牌創(chuàng)建時(shí)間、所需操作等),使用 SHA256HMAC 為每個(gè)操作生成新的一次性令牌。服務(wù)器僅驗(yàn)證令牌的正確生成,如果服務(wù)器接收到的令牌與服務(wù)器本身生成的令牌匹配,則執(zhí)行操作。此后,該令牌將無法再使用。
盡管該傳輸被命名為“TfrxS3IOTransport”,明確引用了AWS S3(Amazon Simple Storage Service),但它的API已被許多對(duì)象存儲(chǔ)系統(tǒng)(可以寬松地稱為類S3)復(fù)制,因此該傳輸允許您工作不僅有亞馬遜的服務(wù)。
首先,您需要從“FastReport VCL Internet Transports”選項(xiàng)卡添加適當(dāng)?shù)慕M件。
您可以使用組件上的上下文菜單。它將直接從開發(fā)環(huán)境建立連接。單擊“編輯連接”子菜單。
當(dāng)您需要使用傳輸打開或保存到文件時(shí),將可以使用以下標(biāo)準(zhǔn)授權(quán)對(duì)話框(如果之前沒有授權(quán))。
讓我們看看這個(gè)表單的所有獨(dú)特字段:
服務(wù)器 URL — API 中使用的 URL。要找到 URL,您需要閱讀文檔;對(duì)于 AWS S3,默認(rèn)情況下應(yīng)為“s3.amazonaws.com”。
客戶端 ID — 用于授權(quán)的公鑰(通常稱為訪問密鑰)。
秘密 ID — 用于授權(quán)的秘密密鑰(通常稱為秘密訪問密鑰)。
區(qū)域- 您需要閱讀文檔以了解可能的區(qū)域值。有時(shí),會(huì)有不尋常的要求:例如,在AWS S3中,您只能請(qǐng)求具有“us-east-1”區(qū)域的存儲(chǔ)桶列表。
Bucket——為了不用每次都手動(dòng)選擇Bucket,可以在此字段指定;有時(shí)桶具有特定區(qū)域的特征。
存儲(chǔ)桶樣式— 指定存儲(chǔ)桶有 2 種類型:路徑樣式 (aws.s3.com/bucket )和虛擬托管樣式 ( bucket.aws.s3.com。“路徑樣式”被認(rèn)為已過時(shí),因?yàn)橥ㄟ^特定的 DNS,可以向不同的存儲(chǔ)桶發(fā)出多個(gè)請(qǐng)求,這可能會(huì)產(chǎn)生額外的負(fù)載。有些服務(wù)支持兩種類型,有些只支持一種,有些可以針對(duì)不同的情況進(jìn)行配置。
如果連接成功,您將看到標(biāo)準(zhǔn)的FastReport VCL文件瀏覽器(下面的屏幕截圖顯示了存儲(chǔ)桶內(nèi)的文件列表)。
這樣就成功完成了連接設(shè)置?,F(xiàn)在您知道如何在 FastReport VCL 中連接到 S3。
只需要注意我們實(shí)施的最后細(xì)微差別即可。我們團(tuán)隊(duì)還沒有實(shí)現(xiàn)創(chuàng)建和刪除桶。到目前為止,存儲(chǔ)桶在視覺上與文件夾(在我們的第一個(gè) GUI 版本中)沒有什么不同,因?yàn)樗L(fēng)險(xiǎn)太大。此外,刪除文件夾及其內(nèi)容尚未實(shí)現(xiàn)。此外,缺少分段上傳大文件的功能(建議大于 100 MB 的文件)。
這種傳輸有許多配置細(xì)節(jié)和細(xì)微差別,但在某些情況下它可以是文件存儲(chǔ)的替代方案。
FastReport技術(shù)QQ群:585577353
了解更多報(bào)表開發(fā)控件,歡迎咨詢
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn