乘風破浪,.Net Core遇見阿里雲對象存儲OSS SDK,業界領先的雲服務存儲服務


什么是阿里雲對象存儲OSS

https://www.aliyun.com/product/oss/

阿里雲對象存儲OSSObject Storage Service)是阿里雲提供的海量、安全、低成本、高持久的雲存儲服務。其數據設計持久性不低於99.9999999999%(12個9),服務可用性(或業務連續性)不低於99.995%

image

OSS具有與平台無關的RESTful API接口,您可以在任何應用、任何時間、任何地點存儲和訪問任意類型的數據。使用阿里雲提供的API、SDK接口或者OSS遷移工具輕松地將海量數據移入或移出阿里雲OSS。

數據存儲到阿里雲OSS以后,您可以選擇"標准存儲(Standard)"作為移動應用、大型網站、圖片分享或熱點音視頻的主要存儲方式,也可以選擇成本更低、存儲期限更長的"低頻訪問存儲(Infrequent Access)"、"歸檔存儲(Archive)"、"冷歸檔存儲(Cold Archive)"作為不經常訪問數據的存儲方式。

對象存儲OSS相關概念

https://help.aliyun.com/document_detail/31817.html

  • 存儲類型(Storage Class)

OSS提供標准、低頻訪問、歸檔、冷歸檔四種存儲類型,全面覆蓋從熱到冷的各種數據存儲場景。其中標准存儲類型提供高持久、高可用、高性能的對象存儲服務,能夠支持頻繁的數據訪問;低頻訪問存儲類型適合長期保存不經常訪問的數據(平均每月訪問頻率1到2次),存儲單價低於標准類型;歸檔存儲類型適合需要長期保存(建議半年以上)的歸檔數據;冷歸檔存儲適合需要超長時間存放的極冷數據。更多信息,請參見存儲類型介紹。

  • 存儲空間(Bucket)

存儲空間是您用於存儲對象(Object)的容器,所有的對象都必須隸屬於某個存儲空間。存儲空間具有各種配置屬性,包括地域、訪問權限、存儲類型等。您可以根據實際需求,創建不同類型的存儲空間來存儲不同的數據。

  • 對象(Object)

對象是OSS存儲數據的基本單元,也被稱為OSS的文件。對象由元信息(Object Meta)、用戶數據(Data)和文件名(Key)組成。對象由存儲空間內部唯一的Key來標識。對象元信息是一組鍵值對,表示了對象的一些屬性,例如最后修改時間、大小等信息,同時您也可以在元信息中存儲一些自定義的信息。

  • 地域(Region)

地域表示OSS的數據中心所在物理位置。您可以根據費用、請求來源等選擇合適的地域創建Bucket。更多信息,請參見OSS已開通的地域。

  • 訪問域名(Endpoint)

Endpoint表示OSS對外服務的訪問域名。OSS以HTTP RESTful API的形式對外提供服務,當訪問不同地域的時候,需要不同的域名。通過內網和外網訪問同一個地域所需要的域名也是不同的。更多信息,請參見各個Region對應的Endpoint。

  • 訪問密鑰(AccessKey)

AccessKey簡稱AK,指的是訪問身份驗證中用到的AccessKey ID和AccessKey Secret。OSS通過使用AccessKey ID和AccessKey Secret對稱加密的方法來驗證某個請求的發送者身份。AccessKey ID用於標識用戶;AccessKey Secret是用戶用於加密簽名字符串和OSS用來驗證簽名字符串的密鑰,必須保密。

對象存儲OSS常見操作

  • 創建Bucket

在上傳文件(Object)到OSS之前,您需要創建一個用於存儲文件的Bucket。Bucket具有各種配置屬性,包括地域、訪問權限以及其他元數據。

  • 上傳文件

Bucket創建完成后,您可以通過多種方式上傳不同大小的文件。

  • 下載文件

文件上傳完成后,您可以將文件下載至瀏覽器默認路徑或本地指定路徑。

  • 列舉文件

當您Bucket內存儲了大量的文件后,您可以選擇列舉Bucket內的全部或部分文件。

  • 刪除文件

當您不再需要保留上傳的文件時,您可以手動刪除單個或多個文件,也可以通過配置生命周期規則自動刪除單個或多個文件。

勤學勤練

https://github.com/TaylorShi/HelloAliyunOss

創建解決方案及目錄

1. 新建名為"HelloAliyunOss"的解決方案

dotnet new sln -o HelloAliyunOss

image

2. 切換到"HelloAliyunOss"目錄

cd .\HelloAliyunOss\

image

創建.Net Core的Wpf項目

1. 創建名為"demoForWpfCore"的Wpf項目

dotnet new wpf -o demoForWpfCore -f net5.0

image

2. 添加"demoForWpfCore"到解決方案

dotnet sln add .\demoForWpfCore\demoForWpfCore.csproj

image

3. 切換到"demoForWpfCore"目錄

cd .\demoForWpfCore\

image

4. 運行"demoForWpfCore"項目

dotnet watch run

image

.Net Core的WPF項目安裝Aliyun.OSS.SDK包

https://www.nuget.org/packages/Aliyun.OSS.SDK.NetCore

a. 命令行安裝"Aliyun.OSS.SDK.NetCore"

dotnet add package Aliyun.OSS.SDK.NetCore

image

b. 或者項目右鍵Nuget包管理,通過可視化界面安裝"Aliyun.OSS.SDK.NetCore"

image

c. 安裝之前,Bin目錄結構

image

d. 安裝之后,Bin目錄結構

image

發現,新增了Aliyun.OSS.Core.dll這一個文件。

e. 安裝之后,運行效果

image

f. 命令行打開項目位置

explorer.exe .

image

WPF項目初始化OssClient實例

https://help.aliyun.com/document_detail/32087.html

1. 准備本地配置存儲OSS授權信息

demoForWpfCore項目上右鍵-添加-添加項,選中"應用程序配置文件"。

image

會得到一個App.config文件,初始化內容為:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
</configuration>

然后我們在configuration節點下,新建appSettings節點並且添加一些OSS需要Key。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="AccessKeyId" value="***********"/>
    <add key="AccessKeySecret" value="*********************************"/>
    <add key="Endpoint" value="http://oss-cn-hangzhou.aliyuncs.com"/>
  </appSettings>
</configuration>

image

2. 讀取本地配置存儲OSS授權信息

private static string accessKeyId;
private static string accessKeySecret;
private static string endpoint;

public MainWindow()
{
    InitializeComponent();
}

private void InitConfig()
{
    accessKeyId = ConfigurationManager.AppSettings["AccessKeyId"] ?? string.Empty;
    accessKeySecret = ConfigurationManager.AppSettings["AccessKeySecret"] ?? string.Empty;
    endpoint = ConfigurationManager.AppSettings["Endpoint"] ?? string.Empty;
}

這里我們新建三個變量accessKeyIdaccessKeySecretendpoint,在進入MainWindow窗體的時候初始化配置的值,如果為空那么就是String.Empty處理。

3. 使用授權信息初始化OssClient實例

public MainWindow()
{
    InitializeComponent();
    InitConfig();
    Loaded += MainWindow_Loaded;
}

private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    // 由用戶指定的OSS訪問地址、阿里雲頒發的AccessKeyId/AccessKeySecret構造一個新的OssClient實例。
    var ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret);
}

4. 獲取存儲空間列表並展示

<Grid Background="WhiteSmoke">
    <ListView x:Name="ListViewForBucket">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="空間名稱" Width="Auto" DisplayMemberBinding="{Binding Name}"/>
                <GridViewColumn Header="空間位置" Width="Auto" DisplayMemberBinding="{Binding Location}"/>
                <GridViewColumn Header="空間所有者" Width="Auto" DisplayMemberBinding="{Binding Owner}"/>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    // 由用戶指定的OSS訪問地址、阿里雲頒發的AccessKeyId/AccessKeySecret構造一個新的OssClient實例。
    var ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret);
    try
    {
        var buckets = ossClient.ListBuckets();
        ListViewForBucket.ItemsSource = buckets;

        Console.WriteLine("List bucket succeeded");
        foreach (var bucket in buckets)
        {
            Console.WriteLine("Bucket name:{0},Location:{1},Owner:{2}", bucket.Name, bucket.Location, bucket.Owner);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("List bucket failed. {0}", ex.Message);
    }
}

這里我們用一個GridView來展示數據,把存儲空間對應的名稱、位置、所有者展示出來。

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM