构建插件式的应用程序框架(四)----服务容器

简介:
   在 构建插件式的应用程序框架()----订立契约 一文中,可以看到我们的 IApplication 接口是派生于 IServiceContainer 接口的。为什么要派生于 IServiceContainer 呢?我们来看看 IServiceContainer 的定义,它有几个 AddService 方法和 RemoveService 方法以及从 IserviceProvider 继承过来的 GetService 方法。 Service 本身是 .NET 设计时架构的基础, Service 提供设计时对象访问某项功能的方法实现,说起来还真拗口。就我看来, ServiceContainer 机制的本质就是解耦合,就是将类型的设计时功能从类型本身剥离出来。如果你把类型的设计时功能也封装到类型里,这样的类型包含了很多只有开发人员才会用到而最终用户根本不需要的功能,使得类型既臃肿有不便于扩展。而将设计时功能剥离出来,这样类型就可以不依赖于特定的设计环境,之所以现在有这么多非官方的 .NET 设计环境可能就是这个原因吧。
        我们的插件式的应用程序框架正好也需要这样一个松散的架构,我就移花接木把它应用到我们的框架中。
       ServiceContainer .NET 提供的 IserviceContainer 的实现,如果没有特殊的需要我们不必扩展它,而是直接的利用它。在上一篇文章中我们在实现 IApplication 接口的时候就直接使用的 ServiceContainer 。我们在使用 Service 架构的时候,总是倾向于有一个根容器,各个 Service 容器构成了一个 Service 容器树,每一个节点的服务都可以一直向上传递,直到根部,而每一个节点请求 Service 的时候,我们总是可以从根节点获得。我把这个根节点比喻成一个服务中心,它汇总了所有可提供的服务,当某个对象要请求服务( GetService )只需要向根结点发送要获得的服务,根结点就可以把服务的对象传递给它。
        从另外一个角度看, ServiceContainer 为我们的插件是应用程序提供了有力的支持,利用 ServiceContainer ,你不但可以获得应用程序所提供的所有的功能,而且你还可以通过插件向应用程序添加 Service ,而你添加的 Service 又可以服务另外的 Service ,这样我们的应用程序框架就更加的灵活了。但是任何东西都是有两面性的,带来灵活的同时也为开发人员的工作增加了复杂度,所以使用 ServcieContianer 开发的应用程序必须提供足够详细的文档,否则开发人员可能根本不知道你到底有多少 Service 可以用,因为很多的 Service 是通过插件提供的,可能应用程序的作者都不会知道程序发布以后会出现多少 Service
        写了这么多,可能接触过 ServiceContainer 的朋友已经觉得罗唆了,没接触过的还是觉得说得莫明其妙。有空接着写,我会创建几个简单的服务演练演练,增强一下感性认识,呵呵。





本文转自纶巾客博客园博客,原文链接:XXXXXXXX,如需转载请自行联系原作者
目录
相关文章
|
10月前
|
存储 监控 测试技术
如何将现有的应用程序迁移到Docker容器中?
如何将现有的应用程序迁移到Docker容器中?
704 57
|
7月前
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
421 146
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
对话|企业如何构建更完善的容器供应链安全防护体系
对话|企业如何构建更完善的容器供应链安全防护体系
|
Kubernetes 安全 数据安全/隐私保护
容器云服务是什么?
容器云基于容器技术,实现应用及其依赖的标准化封装,支持跨平台快速部署和高效管理。与传统虚拟机相比,容器共享宿主机操作系统内核,资源占用少、启动快,但隔离性稍弱。Docker Engine通过Dockerfile定义应用环境并生成容器镜像,适合单机场景;Kubernetes作为行业标准编排工具,支持自动扩缩容和服务发现,适用于大规模集群管理;OpenShift提供企业级全流程平台,满足合规要求;Rancher简化多云环境下的Kubernetes管理;CoreOS Tectonic专注于安全性,适用于高安全需求领域。容器云正朝着无服务器化、智能运维和边缘协同等方向发展。
908 1
|
人工智能 监控 安全
容器化AI模型的安全防护:构建可信的AI服务
在AI模型广泛应用的背景下,容器化AI模型的安全防护至关重要。主要安全威胁包括数据窃取、模型窃取、对抗样本攻击和模型后门攻击等。为应对这些威胁,需采取多层次防护措施:容器安全(如使用可信镜像、限制权限)、模型安全(如加密、水印)、数据安全(如加密、脱敏)和推理安全(如输入验证、异常检测)。此外,利用开源工具如Anchore Engine、Falco和ART等,可进一步加强防护。遵循安全开发生命周期、最小权限原则和深度防御等最佳实践,确保AI服务的安全性和可信度。
|
缓存 JavaScript 前端开发
Dockerfile全面指南:从基础到进阶,掌握容器化构建的核心工具
Dockerfile 是容器化开发中的关键工具。理解并掌握其使用方式,不仅能提高开发效率,还能让你的应用具备更强的可移植性和灵活性。通过优化配置和合理安排构建步骤,可以打造更轻量、更高效的容器镜像。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
9月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1207 108