服务提供者框架是指:多个服务提供者实现一个服务,系统为客户端提供多个实现,并把他们从多个实现中解耦出来。服务提供者的改变对它们的客户端是透明的,这样提供了更好的可扩展性。例如,JDBC,JMS等就是用了服务提供者框架
从字面意思看就是:实何实现服务提供者提供服务功能的设计结构,主体有服务、服务提供者。反映到我们程序中,通常有四个组件:
-
Service Interface:服务接口,将服务通过抽象统一声明,供客户端调用、由各个服务提供者具体实现。
-
Provider Registration API:服务提供者注册API,用于系统注册服务提供者,使得客户端可以访问它实现的服务。
-
Service Access API:服务访问API,用户客户端获取相应的服务。
-
Service Provider Interface:服务提供者接口,这些服务提供者负责创建其服务实现的实例。(可选)
服务接口定义服务。服务提供者接口产生服务实例。
首先我们来看一下典型的服务提供者框架的程序结构是怎么样的:
大家都知道都在我们国家盐是归定必须加碘才能在市场上卖的。食盐又分为海盐和内陆盐,食盐生产厂家在要生产食盐之前都必须去盐监局登记。
现在这个加碘是盐监局制定的一个规定,那么海盐厂商和内陆盐厂商分别有自己的加碘方式,他们对这个规定有自己不同的实现。
要加碘,我们就首先得有盐啊,那么各厂商有自己生产盐的方式。
测试代码:
上面这个例子可能不在严谨,在理解上有点费力,但是请细心想想,感悟。服务提供者框架就是这样的:服务的具体实现对于客户端是透明的,用户只知道Salt接口,并不是知道海盐和内陆盐,具体的实现由服务提供者实现。服务提供者的主要任务就是将自己注册到服务管理器中,并产生服务接口的实例。
也就是说:对服务标准制定者而言:我制定了一个服务标准,然后定义了一个类似于字典的服务管理器,提供一个注册的接口给你,你实现了服务以后就自己注册到字典里面去。我并不知道你是如何实现这个服务的。对于服务实现厂商而言,我只知道我要实现的服务标准,以及我如何注册,我只需要做两件事:1、实现服务。2、注册到服务管理器中。对最终用户而言,我只需要知道怎么用就行了,至于你们是怎么实现的跟我没半毛钱关系。
引申至JDBC中:
Connection接口就是一个服务接口,定义了很多操作,但是JDBC本身不对该服务进行实现,而是由mysql,sqlServer、Oracle、DB2等各数据库厂商去实现。然后注册到DriverManager中。 用户只需要根据注册时的KEY 去查找到相关的服务即可。
以mysql为例:
从这句我们可以看出:com.sql.jdbc.Driver是一个服务提供者,他提供服务,并注册到DriverManager中。至于mysql中Connection的具体实现,我们甚连类名都不知道(在不看源码的情况下)。
我们来看一下DriverManager中getConnection的源码实现吧。
其中最关键的是一那个For循环,drivers是一个Vector向量,他充当字典。对整个字典进行循环,对我们要查找的类和字曲中的所有的Class进行匹配,若能匹配成功即连接数据库,否则抛出异常。
好啦,关于这个概念就写到这,关键还是要自己去感觉、体会。代码这东西很多东西,只可意会,不可言传!
分享到:
相关推荐
《Net SAML2 Service Provider Framework》是一份详尽的文档,旨在介绍和解释.NET环境下的SAML2服务提供者框架的各个方面。该框架是为实现安全、标准化的身份验证与授权机制而设计的,特别适用于跨组织或跨域的用户...
首先,Dubbo服务提供者的基础是Spring框架,因此最常见的方式是通过Spring容器来启动。这需要一个`pom.xml`文件来管理项目依赖,确保引入了Dubbo和Spring的相关库。在`pom.xml`中,我们需要配置如下依赖: ```xml ...
Android Framework源码是Android操作系统的核心组成部分,包含了系统服务、库和API框架,是开发者深入理解Android系统工作原理的重要参考资料。这份最新的源码版本提供了一个深入洞察Android系统内部机制的机会,...
这个框架层包含了Android应用运行所需的各种服务、API和组件,包括Activity Manager、Content Provider、Broadcast Receiver、Service等关键元素。 1. **Activity Manager**:负责管理Android应用的生命周期,控制...
在Android系统中,框架层(Framework)是操作系统的核心部分,它为应用程序提供了API接口,使得开发者可以方便地构建各种功能丰富的应用。这篇“Android Framework经验总结”将深入探讨这一关键领域的核心概念、主要...
**Android Framework**:Android框架是Android系统的核心,它提供了应用程序运行所需的环境,包括Activity Manager(活动管理器)、Content Provider(内容提供者)、Broadcast Receiver(广播接收器)、Service...
1. **项目结构**:在Spring Boot项目中,通常分为服务提供者(Provider)和服务消费者(Consumer)两个模块。服务提供者负责暴露服务,服务消费者则调用这些服务。 2. **依赖管理**:使用Maven作为项目构建工具,...
2. **服务提供者(Provider)**:实现了服务接口,并将服务暴露出来,供其他服务消费者调用。 3. **服务消费者(Consumer)**:通过HSF框架,根据服务接口找到服务提供者并进行调用。 4. **服务注册中心(Registry)...
这个目录在Java中通常用于存储元数据,如服务提供者接口(Service Provider Interface, SPI)的配置信息,类路径信息等。在Spring框架中,它可能包含Spring的版本信息、许可证文件以及用于自动加载和识别Spring组件...
Service Manager 是 Android Framework 的核心组件之一,负责管理和启动系统服务。它主要完成了以下几个任务: - **服务注册**:允许服务向 Service Manager 注册自己。 - **服务查询**:客户端可以通过 Service ...
在Android系统中,Framework层是操作系统的核心组成部分,它介于硬件抽象层(HAL)和应用程序框架之间,提供了大量的服务和接口,使得开发者可以构建各种各样的应用程序。本篇内容将深入探讨Android Framework层的源码...
Eureka主要由两个组件构成:Eureka Server(注册中心)和服务提供者(Service Provider)。服务提供者在启动时会向Eureka Server注册自己的元数据信息,包括服务名、IP地址、端口等。Eureka Server维护一个服务...
在我们的示例项目“nacos-provider”中,我们可以看到只有一个模块,这意味着这个项目可能是一个Nacos服务提供者。通过以上步骤,我们可以将UI-dGenerator集成到这个项目中,为服务间的通信提供全局唯一的请求ID,...
1. **服务提供者(Provider)** 服务提供者是Dubbo架构中的基础组件,它负责实现并暴露服务。在Dubbo中,服务提供者需要配置服务接口、实现类、版本号、组别等信息。这些信息通常会写入到`dubbo.properties`配置...
3. **Content Providers**:内容提供者用于在不同应用间共享数据。它们可以访问SQLite数据库、文件系统或其他数据源,并允许其他应用通过标准接口查询和修改这些数据。 4. **Intent**:Intent是Android中的一个消息...
在上述配置中,`dubbo:application`定义了应用名,`dubbo:registry`指定了Zookeeper的地址,`dubbo:protocol`配置了Dubbo服务的协议和端口,`dubbo:service`和`dubbo:reference`分别用于声明服务提供者和服务消费者...
接下来,书中详细剖析了Android Framework层,这是Android应用程序的基础,包括Activity Manager、Content Provider、Broadcast Receiver、Service等四大组件的工作原理。读者将了解到如何创建和管理应用程序的生命...
这个框架包括活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供者(Content Provider),这些都是安卓应用四大组件。活动是用户界面的核心,服务则在后台运行,广播接收器监听系统...