PowerDotNet平台化软件架构设计与实现系列(10):文件平台
很多业务系统少不了需要进行文件管理,比如各种图片、excel、pdf、压缩包等等,为了高度可复用,我们抽象出文件平台,加强对文件进行管理。
PowerDotNet文件平台目前支持阿里云OSS、FastDFS和本地文件服务器三种上传存储类型。
根据我前面文章介绍数据库、缓存、队列等公共服务平台的一贯风格,文件平台也是只要在管理后台点一点,引入公共服务文件上传必要组件,一个应用就可以轻松实现文件管理主要功能,包括(同步或异步)上传、查看、删除、定时自动上传等。
在PowerDotNet中,目前文件平台已经被默认使用于PowerDotNet实现的支付平台、财务平台、HCRM(人员管理)和PCRM(个人用户管理)中,后续有空再简单介绍下这些业务平台系统。
环境准备
1、(必须).Net Framework4.5+
2、(必须)关系型数据库MySQL或SqlServer或PostgreSQL或MariaDB四选一
3、(必须)PowerDotNet数据库管理平台,主要使用DBKey功能
4、(必须)PowerDotNet配置中心Power.ConfigCenter
5、(必须)PowerDotNet注册中心Power.RegistryCenter
6、(必须)PowerDotNet缓存平台Power.Cache
7、(必须)PowerDotNet消息平台Power.Message
8、(必须)PowerDotNet基础数据平台Power.BaseData
9、(必须)PowerDotNet人员管理平台Power.HCRM,后续文章详细介绍
10、(必须)阿里云OSS或FastDFS或本地文件服务器,用于存储文件
一、文件存储配置
在平台管理后台,可以轻松添加文件存储配置,比如OSS、FastDFS和本地文件等。
你可以按需进行配置,比如OSS或者FastDFS(当然FastDFS被誉为配置最繁琐的开源项目就是另一个话题了,只要亲自部署一遍就会体会^_-,咩哈哈)
或者上古时期也比较常见的自己搭建本地文件服务器
文件配置支持按照多租户或多商户的方式配置多个,非常利于扩展。
文件配置设置好以后,通过和应用或者系统的绑定关系:
这样我们的应用就可以使用文件平台提供的文件管理功能了,是不是so easy?
二、文件管理
应用使用文件平台提供的公共服务组件,轻松实现图片、pdf、压缩包等文件的自动上传功能,业务系统只要在自己的系统保留业务编号和文件平台的主键关系,可以调用文件平台公共的查询API轻松实现文件查看等功能。
1、上传文件管理
2、文件预览
通常特定格式的文件上传后都支持直接在浏览器里预览,比如图片、pdf、excel等格式的文件,当然我还单独为图片开发简易图片预览功能。
3、上传补偿
支持针对特殊情况进行文件上传补偿,比如业务数据变化导致文件需要更新、文件上传很久数据迁移丢失等。
文件平台还支持特定领域一些特殊业务逻辑,如通过OCR组件生成文件异步上传、文件错误重试、按模板自动生成文件等功能,这个不是本文重点,我个人用.NET和Java都开发过,顺带一提,咩哈哈。
参考:
https://help.aliyun.com/document_detail/31817.html
https://github.com/aliyun/aliyun-oss-csharp-sdk
https://github.com/aliyun/alibabacloud-csharp-sdk
https://github.com/happyfish100
https://www.cnblogs.com/dubing/archive/2012/01/09/2316903.html
https://www.cnblogs.com/Leo_wl/p/6731647.html
PowerDotNet平台化软件架构设计与实现系列(10):文件平台的更多相关文章
- PowerDotNet平台化软件架构设计与实现系列(03):系统应用平台
为了复用和解耦,快速开发更多的系统和应用,我们对自己经常说的"系统"和"应用"进行更高级的提取和抽象. 十多年前入行,辗转至今,写过很多很多应用,个人喜欢分门别 ...
- PowerDotNet平台化软件架构设计与实现系列(01):基础数据平台
本系列我将主要通过图片和少许文字讲解通过个人自研的PowerDotNet进行快速开发平台化软件产品. PowerDotNet不仅仅是包含像Newtonsoft.Json.Dapper.Quartz.R ...
- PowerDotNet平台化软件架构设计与实现系列(02):数据库管理平台
为了DB复用和简化管理,我们对常见应用依赖的DB模块进行更高级的提取和抽象. 虽然一些ORM可以简化DB开发,但是我们还是需要进行改进和优化,否则应用越多,后期管理运维越混乱. 根据常见开发需要,数据 ...
- PowerDotNet平台化软件架构设计与实现系列(05):ETCD分布式键值存储平台
ETCD目前在PowerDotNet已经被用于注册中心和配置管理(常见的配置中心在PowerDotNet中仅仅是一个小小的模块而已)中,作为基础设施的重要组成部分,ETCD的重要性不言而喻. 本文简单 ...
- PowerDotNet平台化软件架构设计与实现系列(12):HCRM人员管理平台
技术服务于业务,良好的技术设计和实现能够大幅提升业务质量和效率. PowerDotNet已经形成了自己的开发风格,很多项目已被应用于生产环境,可行性可用性可靠性都得到了生产环境验证. 编程是非常讲究动 ...
- PowerDotNet平台化软件架构设计与实现系列(13):应用监控平台
本文再写一篇和具体业务逻辑几乎无关的公共服务应用监控平台.PowerDotNet自研的应用监控平台系统,是服务治理的重要拼图,和服务治理平台配合使用效果更好. 监控开源产品非常丰富,站在巨人的肩膀上, ...
- PowerDotNet平台化软件架构设计与实现系列(04):服务治理平台
系统和系统之间,少不了数据的互联互通.随着微服务的流行,一个系统内的不同应用进行互联互通也是常态. PowerDotNet的服务治理平台发源于早期的个人项目Power.Apix.这个项目借鉴了工作过的 ...
- PowerDotNet平台化软件架构设计与实现系列(08):缓存平台
几乎所有后端应用都会或多或少用到缓存,尤其是分布式缓存服务,以及和本地缓存构造的二级缓存.根据我们一贯的节约代码的风格,为了复用的目标,抽象出缓存平台,进行缓存管理. 考虑到很多公司都会自己造或者直接 ...
- PowerDotNet平台化软件架构设计与实现系列(11):日志平台
所有后端应用几乎都会记录日志,日志系统可以统一抽象出来提供服务. 最近被Log4j2的安全漏洞刷屏了,作为开发人员的我只能咩哈哈几次表示日志处理太难了,只有折腾过的人才知道这里面的艰辛啊. 在实现Po ...
随机推荐
- mvc中常见的属性验证
客户端验证逻辑会对用户向表单输入的数据给出一个即时反馈.而之所以需要服务器端验证,是因为来自网络的信息都是不能被信任的. 当在ASP.NET MVC设计模式上下文中谈论验证时,主要关注的是验证模型的值 ...
- Linux FTP的主动模式与被动模式
Linux FTP的主动模式与被动模式 一.FTP主被动模式 FTP是文件传输协议的简称,ftp传输协议有着众多的优点所以传输文件时使用ftp协议的软件很多,ftp协议使用的端口是21( ...
- VIM多标签页
:tabnew 增加一个标签 :tabc 关闭当前的tab :tabo 关闭所有其他的tab :tabp 或gT 前一个 :tabn 或gt 后一个 :tabs 显示 ...
- mybatis-plus分页记坑
mapper接口方法返回IPage,如果不传page会报npe,底层assert page!=null有啥用?
- node环境变量配置
1.Node.js 官方网站下载:https://nodejs.org/en/ 2.打开安装,傻瓜式下一步即可,然后配置环境变量 3.因为在执行例如npm install webpack -g等命令全 ...
- go channel 概述
精髓 将资源读进内存-->共享内存,一个个进程/线程进行处理,这是常见模式.go channel 是一种直接在进程/线程之间传递资源的方式,即以通信来共享内存.这便是go的精髓. 扩展-一些名词 ...
- 【编程思想】【设计模式】【结构模式Structural】享元模式flyweight
Python版 https://github.com/faif/python-patterns/blob/master/structural/flyweight.py #!/usr/bin/env p ...
- typora使用快捷键
1. Ctrl+/ 切换源码模式2. ```css 选择语言 回车.4. `code` ctrl+shit+` 5. # 1号标题 ctrl+1 ### 3号标题 ctrl+3 ######6号标题 ...
- 【简】题解 AWSL090429 【聚会】
这题直接换根dp 记录在要转移的点的子树中有多少牛 #include<bits/stdc++.h> using namespace std; #define ll long long #d ...
- C# .exe和.dll文件图标资源提取工具
Windows 可执行文件(.exe)和动态库文件(.dll)图标资源提取工具 GitHub 功能 图标资源预览 图标资源导出(仅支持导出 PNG 格式) 代码 获取图标资源使用了 Win32 API ...