版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
流行的软件体系结构概述随着计算机硬件技术和网络通信技术的发展,网络计算经历了从集中式计算到分布式计算的重大演变,新的分布式网络计算要求软件实现跨空间、跨时间、跨设备、跨用户的共享,导致软件在规模、复杂度、功能上的极大增长,迫使软件向异构协同工作、各层次上集成、可反复重用的工业化道路上前进。新的软件开发模式必须支持分布式计算、浏览器/服务器结构、模块化和构件化集成,可用不同的标准构件组装而成。概述提供一种手段,使应用软件可用预先编好的、功能明确的产品部件定制而成,并可用不同版本的部件实现应用的扩展和更新。利用模块化方法,将复杂的难以维护的系统分解为互相独立、协同工作的部件,并努力使这些部件可反复重用。突破时间、空间及不同硬件设备的限制,利用客户和软件之间统一的接口实现跨平台的互操作。构件技术为满足上述要求,构件技术应运而生构件技术被认为是未来几年软件发展的基础。目标是达到需求、体系结构、设计、实现的重用,并使系统具有更好的适应性、伸缩性和可维护性。借鉴汽车制造业和建筑业的思想,采用流水线生产方式的预制件装配方式预制件要求并不苛刻,只要能重用就可以构件技术通过使用购买或定制构件这一新的解决方案可以有效地提高产品的质量,加快产品开发速度,这种开发技术称为“基于构件的开发技术”软件复用软件产品的复用软件过程的复用:基于构件的复用基于构件的复用构件的开发构件的管理基于构件组装的系统开发
构件必须遵循某一特定的构建模型,并且针对某一特定的构件平台抽象面向对象技术已达到类级重用(代码重用),以类为封装的单位。重用粒度太小,不足以解决异构互操作和效率更高的重用。构件更推广了对象封装的内涵,对一组类的组合进行封装(也可以不包括类,比如包括传统的过程),并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。在不同层次上,构件均可以将底层的多个逻辑组合成高层次上的粒度更大的新构件,甚至直接封装到一个系统,使模块的重用从代码级、对象级、架构级到系统级都可能实现。构件的属性是可独立配置的单元构件必须具有原子性,本身不可拆分;必须与其所部属的环境以及其他构件很好地分离必须很好地封装自己的构成部件可以作为第三方的组装单元被复合使用不但具备良好的内聚性,还必须具有清晰的规格说明来描述其依赖条件和所提供的服务。这样,第三方厂商能够将一个构件与其他构件组装在一起。即构件只通过定义良好的接口与外部环境交互。没有外部可见的状态不应当与自身备份有所区别,在任何环境中,最多仅有特定构件的一个备份构件技术分布式构件技术CORBA规范Sun的Java平台Microsoft的.NET平台分布式构件体系结构J2EE.NET提供事物完整性、消息传递、目录服务、安全、异常处理、远程访问等。基于CORBA的分布式构件技术OMG(对象管理学会)是一个由业界760多个公司组成的工业协会,目的是为了共同制定一个大家都遵循的分布式对象计算标准,将对象和分布式系统技术集成为一个可相互操作的统一结构,既支持现有的平台也将支持未来的平台集成。OMA(对象管理体系),基础是ORB(对象请求中介)标准,不仅提供了CORBA基础架构说明,还提供了一系列服务,如安全、交易和消息传递等。针对ORB,OMG制定了CORBA规范。OMA对象管理体系结构对象请求代理(ObjectRequestBroker)CORBA服务(CORBAService)应用对象(ApplicationObject)水平CORBA设备(HorizontalCORBAFacility)垂直CORBA设备(VerticalCORBAFacility)CORBA服务提供适用于实现对象的一些基本功能,如对象的命名服务、对象交易服务(对象并行、对象存储、对象产生和消亡、事件消息响应以及事务交易的一致性保证)和持久状态服务(PersistentStateService,PPS)等。是发布对象系统必不可少的公共服务,是底层支持的必需服务。CORBA设备水平CORBA设备:在各种工业部门中针对所有类型CORBA应用的元素包括用户接口和系统管理设备针对大多数类型的应用,不考虑设备被使用的领域垂直CORBA设备:只在特殊垂直市场和工业中针对某些应用的功能,也称领域CORBA设备包括某些特殊领域的应用,比如在会计业中的总账和分期偿付,制造业的自动化店层控制设备。应用对象位于OMA层次结构的最顶层,可以是分布系统中的任何成分,如程序、进程、类实例。通常会根据独立的应用被定制,并不需要标准化,所以这一类的对象并不受OMG标准的影响。必须符合OMA的标准接口。OMA中的对象作为服务者被动态地引用,并且以唯一的标识提供服务。对象间的交互通过ORB实现对象请求代理是OMA的核心部分当应用对象在分布对象系统中请求服务时,就是以系统客户的身份,通过ORB与系统中其他对象完成交互OMG进一步给出了OMA对象管理体系结构的ORB开放标准CORBA体系结构CORBA规范包括ORB、接口定义语言(IDL)、存根(Stub)、框架(Skeleton)、对象适配器、动态调用接口CORBA体系结构接口库InterfaceRepository实现库ImplementationRepository
对象请求中间件核心(ORBCore)
动态调用客户StubORB接口对象适配器静态服务Skeleton动态服务Skeleton客户程序(Client)对象实现(Server)ORB的任务就是把客户发出的请求传送给目标对象,并把目标对象的执行结果返回给请求客户。它屏蔽了了对象位置、对象实现、对象执行状态、对象通信机制和数据表示。CORBA体系结构IDL:客户目标对象发送请求必须知道目标对象所具备的操作。IDL提供了对象定义的手段,使得请求对象了解服务对象。IDL是说明性语言,只对对象接口定义,不提供任何实现细节的描述。IDL把编译后的代码映射到具体的编程语言,并且产生客户Stub和服务Skeleton。
对象请求代理(ObjectRequestBroker)
客户程序(Client)对象实现(Objectimplementation)请求(Request)IDLStubIDLStubCORBA体系结构接口库InterfaceRepository实现库ImplementationRepository
对象请求中间件核心(ORBCore)
动态调用客户StubORB接口对象适配器静态服务Skeleton动态服务Skeleton客户程序(Client)对象实现(Server)存根(Stub)是客户端的代码,客户应用程序通过存根向服务器应用程序发送请求,CORBA体系结构接口库InterfaceRepository实现库ImplementationRepository
对象请求中间件核心(ORBCore)
动态调用客户StubORB接口对象适配器静态服务Skeleton动态服务Skeleton客户程序(Client)对象实现(Server)框架(Skeleton)是服务器端的代码,提供对象适配器转发的请求调度到对象实现上的适当操作的代码。CORBA体系结构接口库InterfaceRepository实现库ImplementationRepository
对象请求中间件核心(ORBCore)
动态调用客户StubORB接口对象适配器静态服务Skeleton动态服务Skeleton客户程序(Client)对象实现(Server)对象适配器(ObjectAdapter)是ORB核心的上层机制。它负责接受服务请求,完成实例化服务对象,向对象传送请求,为服务指定对象引用和提供运行环境。CORBA体系结构接口库InterfaceRepository实现库ImplementationRepository
对象请求中间件核心(ORBCore)
动态调用客户StubORB接口对象适配器静态服务Skeleton动态服务Skeleton客户程序(Client)对象实现(Server)通过对象适配器,ORB服务方给客户应用提供了一个假象(虚拟环境),即服务对象都是活动着的,随时等待客户应用发来请求。ORB通过适配器将目的对象分成组,每组通过特定的对象适配器来满足特定的需求。基于Java的分布式构件技术1996年1月,Sun公司正式发布了Java1.01998年夏末又推出了Java2.01999年Sun公司推出三个版本的Java2平台:J2ME:是Java2PlatformMicroEdition的缩写,即Java2平台微型版,适用于开发小型设备和智能卡上的应用系统,如手机和掌上电脑的操作系统等J2SE:是Java2PlatformStandardEdition的缩写,即Java2平台标准版,适用于创建普通台式电脑上的应用系统,如PC机、小型工作站的应用软件等J2EE:是Java2PlatformEnterpriseEdition的缩写,即Java2平台企业版,适用于创建服务器端的大型应用软件和服务系统。J2EE平台使用多层分布式应用模型,根据功能划分成各个构件,这些构件根据其在多层J2EE环境中所处的层被安装在不同的机器上。下图是三个J2EE应用。J2EE应用1J2EE应用2J2EE应用3客户端应用程序动态HTML页面动态HTML页面客户层Web层业务层EIS层客户端机器J2EE服务器机器数据库服务器机器JSP页面JSP页面EJBEJB数据库数据库数据库J2EE平台最基本的Java构件是在J2ME中的JavaBean,它是按照特定格式编写的Java类JavaBean包括实例变量(InstanceVariable)和get()、set()方法来访问实例变量的数据。这种格式大大简化了程序设计。J2EE的构件在JavaBeans基础上进行了拓展。J2EE构件客户端构件:Java应用程序和AppletWeb构件:JavaServerPages(JSP)和JavaServlet业务逻辑构件:EnterpriseJavaBeans(EJB)这些构件在开发完成后,部署到相应的容器中。客户端构件Java应用程序是运行在应用客户容器内部的单个程序,应用客户容器提供了支持消息、远程调用、数据库连接和查询服务的API,容器所需的API主要有:J2SE、JME、JNDI、RMI-IIOP和JDBC,这些容器由应用服务器供货商提供。Applet运行在Applet容器中,这种容器是支持Java技术的基本浏览器。作为一个Java构件模型,目标是创建可下载的轻量级构件,来丰富客户端网页的视觉效果。Applet需要J2SEAPI的支持。Web构件JSP和Servlet是运行在Web容器中基于Web的构件。Web容器由Web服务器所支持。是JSP和Servlet在运行时的执行环境,容器所需的API主要有:J2SE、JMS、JNDI、JTA、JavaMail、JAF、RMI-IIOP和JDBC。JSP和Servlet提供了动态内容显示、处理以及与显示相关的格式的机制。JSP技术为Web客户端产生动态内容提供了一种可扩展的方式。目的在于生成能够处理动态内容的Web页面,这些页面处理的数据会发生变化,因此业务处理逻辑也会相应发生变化。一个JSP页面是一个基于文本的文档,它的写法很像网页,用来描述怎样处理Request和产生Response.通常由JSP标记、HTML标记和嵌入其中的Java代码组成。服务器在页面被客户端请求后对这些Java代码进行处理,然后生成HTML页面返回给客户端浏览器。JSP技术随着JSP技术的发展,JSP页面中嵌入的Java代码已经越来越少了,取代这些代码的是一些用户自定义的标记和JSP的标准标记(JSTL,JSP标准标签库)。扩展标记的使用令JSP页面变得越来越清晰,结构越来越完整。Servlet是运行在服务器上的小程序,可被看作是服务器端的Applet,实际上一个Servlet就是扩展Web服务器功能的一个Java类。是作为CGI(CommonGatewayInterface,通用网关接口)的替代物发展起来的,具有可移植性、灵活性以及易编写等优点。接受客户端发来的请求并对它们进行处理,然后生成响应,并将它们发送给客户端。Servlet技术是JSP的基础,JSP页面在运行前都必须转化及编译成Servlet形式。是Web构件,所以必须要运行在Web服务器上。业务逻辑构件EJB构件是J2EE的核心,是实现企业级应用中业务逻辑的Java构件。EJB构件驻留在EJB容器中。EJB容器为EJB构件提供了一组标准的系统服务,其中包括事务管理、持久性、安全性和并发控制等。通过EJB容器以及使用XML对构件的部署进行说明,构件开发者便可以从实现上述系统服务中解脱出来。EJB容器降低了EJB构件开发的复杂程度,提高了构件开发的效率,保证了构件的可移植性。EJB规范定义了EJB构件与EJB容器之间的交互机制。业务逻辑构件EJB是运行在独立服务器上的构件,客户端通过网络对EJB对象进行调用。通过RMI技术,J2EE将EJB构件创建为远程对象,客户端通过网络调用EJB对象。客户端进行调用时,不是采用RMI注册表提供的命名服务进行查找,而是使用JNDI技术查找EJB对象。JNDI屏蔽掉了RMI命名服务的实现细节,使客户端程序更具通用性。EJB构件实体Bean(EntityBean)提供了对持久数据(如数据库中存储的数据)进行操作的接口对应持久数据的对象视图通过与某个持久数据相关联的实体bean,客户可对该数据进行查询、更新等操作。通过两种机制来持久保存对象:容器管理持久性(CMP)Bean管理持久性(BMP)EJB构件会话bean(SessionBean)是一种对连接EJB容器的客户程序的扩展,主要用于实现业务处理逻辑,以及提供对业务层访问的接口。分为两种:有状态会话bean:提供保存会话状态信息的功能,每个会话bean实例都与一个特定的客户相关联;无状态会话bean:不保存客户的会话状态信息,每次服务,同一个客户不一定对应同一个会话bean实例。EJB构件消息驱动bean(Message-drivenBean)是JMS(JavaMessageService,Java消息服务)与EJB集成的结果。没有向客户端公开接口,消息驱动EJB构件不能由客户直接获得其引用而进行调用,客户只能通过消息系统进行间接的调用。为客户和EJB构件之间提供了一种异步的通信能力EJB构件大多数EJB构件(不包括消息驱动bean)由以下远程接口、本地接口和Bean类组成:远程接口(remoteinterface)声明了相应Bean类公开的所有业务方法必须遵循EJB规范必须由javax.ejb.EJBObject派生本地接口(homeinterface)声明了与EJB构件生命周期有关的方法客户可以使用本地接口中提供的方法创建、查找和删除EJB构件方法的实现由EJB容器负责,EJB开发人员只需要提供方法的原型必须由javax.ejb.EJBHome派生EJB构件大多数EJB构件(不包括消息驱动bean)由以下远程接口、本地接口和Bean类组成:Bean类实现EJB构件的业务逻辑方法用户通过远程接口调用这些方法所有Bean类都必须实现的最基本的接口是javax.ejb.EnterpriseBean一般不直接实现javax.ejb.EnterpriseBean接口,而是实现相应的Bean类型的接口消息驱动EJB构件没有本地接口和远程接口EJB构件EJB构件运行在EJB容器中,EJB容器为EJB构件提供事务管理、持久性、安全性和并发控制等系统服务。当EJB构件被装入到容器中时,需要向容器说明EJB构件将如何部署到容器中去,以及希望容器提供哪些服务。通过一个XML格式的部署描述文件说明。部署描述文件EJB基本信息:指明EJB的名称、远程接口、本地接口及Bean类EJB管理要求:指明EJB容器应该如何管理BeanEJB持久性要求:指明实体Bean是由自己管理持久性,还是由容器管理持久性EJB事务处理要求:指明容器的安全策略J2EE构件包括Java应用程序、Applet、JSP、Servlet、EJB可以打包成模块(module)并以JavaArchive(JAR)文件的形式发布一个模块通常包含了相关的构件、相关文件和用来描述怎样部署构件的部署描述文件(XML文件)。通过模块可以用一些相同构件来组装不同的J2EE应用,实现了构件技术的目标——重用基于.NET平台的分布式构件技术微软没有提出一整套标准,逐渐引入构件技术,可获益于以前的成功技术,如VisualBasic控件、对象链接和嵌入(OLE)、OLE数据库连接(ODBC)、ActiveX、微软事务服务器技术(MTS)、ActiveServerPage(ASP)。COM(ComponentObjectModel,组建对象模型)是从Windows3.1中最初为支持复合文档而使用OLE技术发展而来的,经历了OLE2/COM、ActiveX、DCOM和COM+等几个阶段。COM为代码的重用提供了一种模块化、面向对象的方式定义了定位和识别其他组件功能的标准方式,组件可用各种语言编写和使用是微软平台上所有构件的基石但是。。。COM组件不容易编写提供的功能取决于编写所用的语言很难部署COM服务器组件的开发人员必须确保组件的新版本与旧版本兼容,但有时新旧版本不兼容,被称为“DLLHell”.NET框架
NET框架和NET组件可以避开COM设计的复杂性,使程序员更容易得到组件化的体系结构是用于构建和运行下一代Internet应用程序和XMLWeb服务的平台提供了一个高效并标准的环境,用于将现有资源与下一代应用程序和服务进行集成,以便灵活地解决企业级应用程序部署和操作的难题。.NET框架的体系结构
通用语言运行时(CommonLanguageRuntime)类库(ClassLibrary)数据和XML(ADO.NET)Web服务用户界面ASP.NETVBC++C#Perl…VisualStudio.NET.NET框架
主要包括公共语言运行时(CLR)和.NET基类库(FCL)在开发技术方面,提供了全新的数据库访问技术ADO.NET、Web应用开发技术ASP.NET和Windows编程技术WindowsForms在开发语言方面,提供了对VB、C++、C#等多种语言的支持VisualStudio.NET为.NET框架集成了大多数工具公共语言运行时位于操作系统之上,.NET框架的最低一层,是框架的基础为宿主托管应用程序提供虚拟环境提供更多的功能和特性统一和简化的编程模型,使用户不必迷惑于Win32API和COM,避免了DLL版本和更新问题,简化了应用程序的发布和升级多种语言之间的交互自动的内存和资源管理公共语言运行时基于CLR的代码称为托管代码(ManagedCode)当运行托管代码时,通过针对公共语言运行时的编译器生成微软中间语言(MicrosoftIntermediateLanguage,MSIL),同时生成所需的元数据,在代码运行时再使用即时编译器(JustinTimeCompiler)生成相应的机器代码来执行大部分情况下,代码只在第一次被调用时被即时编译,其后便被缓存在内存中以便下次执行时没有延迟。未调用的代码决不会被即时编译。即时编译会影响系统性能,但是即时编译器能优化所产生的本机代码,以适应它所运行的主机处理器,因此即时编译器运行效率优于普通代码。托管环境中运行代码的好处即时编译器将通用中间语言指令转换为本机代码,扮演了代码验证的角色,可以确保代码是类型安全的,避免了不同组件之间可能存在的类型不匹配的问题托管代码占用的资源可以被回收。CLR包含一个复杂的垃圾回收器,垃圾回收器自动跟踪代码创建的对象的应用,当别的进程需要使用对象占用的内存时,它可销毁这些对象。CLR负责处理对象的内存布局、管理对象的应用、自动垃圾收集,从根本上解决了内存泄露和无效内存应用的问题,大大减轻了开发人员的负担,提高程序的健壮性。.NET基类库
系统框架服务一套在标准语言库中使用的基本类库,如集合、输入/输出、字符串及数据类。提供了访问操作系统和其他服务的类,如网络、线程、全球化和加密的类包括数据访问类库及开发工具,如调试和剖析服务使用的类ADO.NET组件为基于网络的可扩展应用程序和服务提供了数据访问服务.NET基类库
XML数据组件提供了对XML数据的操作支持支持ADO.NET数据与XML数据之间的转换Windows表单组件提供了强大的Windows应用程序模型和丰富的Windows用户接口,包括传统的ActiveX控件和WindowsXP界面,如透明的、分层的、浮动的窗口等.NET基类库
ASP.NET应用服务用于处理基于HTTP的请求,采用编译方式大大提高了它的性能使用基于构件的Microsoft.NET框架配置模板支持应用程序的实时更新,提供高速缓存服务ASP.NETWeb表单支持传统的将HTML内容和脚本代码混合的ASP方式提供了一种将应用程序代码和用户接口内容分离的、更加结构化的方法(CodeBehind方法).NET基类库
Web服务ASP.NET应用服务体系架构为使用ASP.NET建立Web服务提供了一个高级的可编程的模型使用这个模型,开发人员不需要理解HTTP、SOAP或其他网络服务规范面向服务的体系结构
过去40年里,软件体系结构用于处理日益增长的软件复杂性,但是复杂性仍在继续增加,传统的体系结构好像已经达到了它们处理此类问题的极限。为减少异构性、互操作性和不断变化的需求所带来的问题,需要一种新的、不受技术约束的软件体系结构,它应该具有松散耦合、位置透明、协议独立的特征。面向服务的体系结构(Service-OrientedArchitecture,SOA)可解决上述问题SOA
继面向对象、基于构件的软件架构方法之后被提出的一种新的体系结构来源于早期的基于构件的分布式计算方式,用以解决复杂环境下的分布式应用,即解决“异构集成”和“系统演化”两个问题所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,可以以定义好的顺序调用这些服务来形成业务流程服务、对象和构件之间的关系
服务层构件层面向服务的设计面向构件的设计面向对象的设计类层基于SOA的系统可使用构件组装服务,也可使用面向对象的设计来构建单个服务SOA
服务是封装成用于业务流程的可重用构件的应用程序功能服务是细粒度的,也可以是粗粒度的,取决于业务流程每个服务都有良好的接口,通过该接口就可以发现、发布和调用服务。企业可以选择将自己的服务向外发布到业务合作伙伴,也可以选择在组织内部发布服务。服务还可以由其他服务组合而成SOA中的角色
服务消费者(ServiceConsumer):是一个应用程序、一个软件模块或需要一个服务的另一个服务。它发起对注册中心的服务的查询,通过传输绑定服务,并且执行服务功能。服务消费者根据接口契约来执行服务。服务提供者(ServiceProvider):是一个可通过网络寻址的实体,它接受和执行来自消费者的请求。它将自己的服务和接口契约发布到服务注册中心,以便服务消费者可以发现和访问该服务。SOA中的角色
服务注册中心(ServiceRegistry):是服务发现的支持者,包含一个可用服务的存储库,并允许感兴趣的服务消费者查找服务提供者接口。SOA中各个角色的协作
服务注册服务消费者服务提供者发现发布绑定与调用服务描述服务服务描述SOA中的操作
发布:为了使服务可访问,需要发布服务描述以使服务消费者可以发现和调用它发现:服务请求者定位服务,方法是查询服务注册中心来找到满足其标准的服务绑定和调用:在检索完服务描述之后,服务消费者继续根据服务描述中的信息来调用服务SOA中的构件
服务:可以通过已发布接口使用服务,并且允许服务消费者调用服务服务描述:服务描述指定服务消费者与服务提供者交互的方式。它指定来自服务的请求和响应的格式。服务描述可以指定一组前提条件、后置条件和/或服务质量(QoS)级别SOA的特征
动态服务发现服务接口契约服务是自包含和模块化的服务支持互操作性服务是松散耦合的服务是位置透明的服务是由组件组成的组合模块基于Web服务的SOA实现Web服务建立在开放标准和独立于平台的协议的基础之上,是包括XML、SOAP、WSDL和UDDI在内的技术集合。Web服务通过HTTP使用SOAP(SimpleObjectAccessProtocol
),以便在服务提供者和消费者之间进行通信。通过WSDL(WebServiceDefinitionLanguage)定义的接口公布服务,WSDL的语义用XML定义。UDDI是一种语言无关的协议,用于和注册中心进行交互以及查找服务。Web服务核心技术XML:由W3C(WorldWideWebConsortium,万维网联盟)发布的XML(eXtensibleMarkupLanguage,可扩展标记语言)是Web服务规范的基石。使用标记来界定内容,具有良好的扩展性和平台无关性,已成为业界数据交换的标准语言,也是W
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上海货运从业资格证考试题
- 2025年本溪道路货运驾驶员从业资格考试题库
- 2025年重庆货车资格证科目一
- 希沃白板填空活动插入方法
- 《操作系统原理实验》课件
- 2025服装厂购销合同范本参考
- 航空服务人员聘用合同
- 职场心理关爱师劳动合同
- 高速公路太阳能路灯安装施工合同
- 化工废物处理施工协议
- 往来冲账合同范例
- 工装垫资合同范例
- 2022年四川省眉山市公开招聘警务辅助人员(辅警)笔试专项训练题试卷(3)含答案
- 【MOOC】金融风险管理-中央财经大学 中国大学慕课MOOC答案
- 2025年1月“八省联考”考前猜想卷英语试题02 含解析
- 【MOOC】数字电子技术基础-东北大学 中国大学慕课MOOC答案
- 种植槟榔合作合同模板
- 压力性损伤的治疗
- 医药销售培训课程
- 2024年行政执法考试题库及答案(题)
- 2024-2025学年五年级科学上册第四单元《健康生活》测试卷(教科版)
评论
0/150
提交评论