什么是阿里云对象存储OSS
阿里云对象存储OSS(Object Storage Service
)是阿里云提供的海量、安全、低成本、高持久的云存储服务。其数据设计持久性不低于99.9999999999%
(12个9),服务可用性(或业务连续性)不低于99.995%
。
OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。使用阿里云提供的API、SDK接口或者OSS迁移工具轻松地将海量数据移入或移出阿里云OSS。
数据存储到阿里云OSS以后,您可以选择"标准存储(Standard
)"作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的"低频访问存储(Infrequent Access
)"、"归档存储(Archive
)"、"冷归档存储(Cold Archive
)"作为不经常访问数据的存储方式。
对象存储OSS相关概念
- 存储类型(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内的全部或部分文件。
- 删除文件
当您不再需要保留上传的文件时,您可以手动删除单个或多个文件,也可以通过配置生命周期规则自动删除单个或多个文件。
勤学勤练
创建解决方案及目录
1. 新建名为"HelloAliyunOss"的解决方案
dotnet new sln -o HelloAliyunOss
2. 切换到"HelloAliyunOss"目录
cd .\HelloAliyunOss\
创建.Net Core的Wpf项目
1. 创建名为"demoForWpfCore"的Wpf项目
dotnet new wpf -o demoForWpfCore -f net5.0
2. 添加"demoForWpfCore"到解决方案
dotnet sln add .\demoForWpfCore\demoForWpfCore.csproj
3. 切换到"demoForWpfCore"目录
cd .\demoForWpfCore\
4. 运行"demoForWpfCore"项目
dotnet watch run
.Net Core的WPF项目安装Aliyun.OSS.SDK包
a. 命令行安装"Aliyun.OSS.SDK.NetCore"
dotnet add package Aliyun.OSS.SDK.NetCore
b. 或者项目右键Nuget包管理,通过可视化界面安装"Aliyun.OSS.SDK.NetCore"
c. 安装之前,Bin目录结构
d. 安装之后,Bin目录结构
发现,新增了Aliyun.OSS.Core.dll
这一个文件。
e. 安装之后,运行效果
f. 命令行打开项目位置
explorer.exe .
WPF项目初始化OssClient实例
1. 准备本地配置存储OSS授权信息
在demoForWpfCore
项目上右键-添加-添加项,选中"应用程序配置文件"。
会得到一个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>
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;
}
这里我们新建三个变量accessKeyId
、accessKeySecret
、endpoint
,在进入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来展示数据,把存储空间对应的名称、位置、所有者展示出来。