-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[refact] 重新整理项目架构 #84
Comments
最开始我也有一些分开的想法, 但是没有进行. 我之前是考虑让LocalCacheService实现IMailService, 但是落库还是得依赖LocalCacheService或者DbClient. |
我对解耦完全赞成,希望你能进行一些工作 |
这样可以不?(很粗略) 回答你的疑问:
|
可能还需要对联系人的头像数据 (byte[]) 也进行缓存 |
抱歉, 我理解能力不咋样, 是否意味着我们还需要准备一个责任链的实现? 这样看的话似乎本地缓存需要实现IMailService接口, 当做一个源来使用. |
不需要, UI 层只需要注入读取接口, 由读取接口负责进行 Pipeline 相关的操作. 个人的理解, 可能有误 |
我认为在实现上可以靠事件驱动来完成状态监听,最上层用户动作之后,发送一个获取事件从上层传递这个事件往下,中间链路拿到这个事件后往下发送,并监听下一层链路的执行结果或者状态监听(如更新事件) |
以下是一些个人的想法, 不喜勿喷, 本人是菜鸡一枚.
目前项目结构已经有些混乱, 违反了 SOLID 原则. 可以整理整理项目的架构, 不然代码可维护性降低, 越往之后的开发越困难.
现状: 目前 OutlookService 已经与 Cache 强耦合, 违反了 SRP 原则.
建议将
OutlookService
与 Cache 解耦.OutlookService
的唯一职责应当是与 Outlook 服务器进行通信并返回内容. 不应当在 OutlookService 中放入缓存读写的相关逻辑Cache 应当单独为一层, 不与任何组件进行强耦合, 以提高复用性和单一性.
可以为数据库抽象出
IRepository<TEntity>
接口以便抽象后进行依赖注入.Cache 可在实际 Service 上层, 当无 Cache 或 Cache 过期 或 手动刷新则 向下一级进行获取并存储 Cache
ActualMailService / CacheMailService 可以同时继承同一个基类以便可以随时互换
这个基类可以提供查询邮箱各项基本信息的接口 (包括 folder, mails, maildetail 等)
以上仅为个人想法, 不喜勿喷. 本人是菜鸡一枚
The text was updated successfully, but these errors were encountered: