SOA(Service-Oriented Architecture)
1. 概念:(有人说是一种架构,有人说是一种方法论)是一种 IT 体系结构风格,支持将您的业务转换为一组相互链接的服务或可重复业务任务,可在需要时通过网络访问这些服务和任务。这个网络可以是本地网络、Internet,也可以分散于各地且采用不同的技术,通过对来自纽约、伦敦和中国香港的服务进行组合,可让最终用户感觉似乎这些服务就安装在本地桌面上一样。可以对这些服务进行结合,以完成特定的业务任务,从而让您的业务快速适应不断变化的客观条件和需求。
2. 目前实现:在web方面主要是通过webservice以及简单 Portlet 聚合和调用服务。
3. 服务要具备的特征:
1) 松耦合性
2) 良好的服务契约
3) 对服务请求者有意义
4) 开放、基于标准的
5) 服务粒度
webservice相关概念以及用到的技术
1. 概念:Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务;一旦部署以后,其它Web Service应用程序可以发现并调用它部署的服务。
2. 技术:主要用到以下几个关键的技术和规则:
(1) XML:描述数据的标准方法。
(2) SOAP:表示信息交换的协议。
(3) WSDL:Web服务描述语言。
(4) UDDI:统一描述、发现和集成(Universal Description, Discovery, and Integration,UDDI)项目继续丰富企业用于在 UDDI 业务注册中心表示 Web 服务并建立其模型的工具集。
(实际上,WebService的主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。)
WebService框架的核心技术:SOAP、WSDL、UDDI
1. SOAP:是Web services 的通信协议。
SOAP是一种简单的、轻量级的基于XML 的机制,用于在网络应用程序之间进行结构化数据交换。SOAP包括三部分:一个定义描述消息内容的框架的信封,一组表示应用程序定义的数据类型实例的编码规则,以及表示远程过程调用和响应的约定。
2. WSDL:表示WEB服务说明语言。
WSDL文件是一个XML 文档,用于说明一组SOAP消息以及如何交换这些消息。
3. UDDI:(统一描述发现和集成) 提供一种发布和查找服务描述的方法。(UDDI 数据实体提供对定义业务和服务信息的支持)
4. wsdl:(Web Services Description Language,Web服务描述语言)是一种XML Application。
(1)Types - 数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)。
(2)Message - 通信消息的数据结构的抽象类型化定义, 使用types类型定义的参数组成消息 (接口参数信息描述)。
(3)Operation - 对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。
(4)PortType - 对于某个访问入口点类型所支持的操作的抽象集合,所有操作(Operation)集合。
上面这是个没涉及到真正的服务实现方式。
(5)Binding - 结构定义了某个PortType与某一种具体的网络传输协议或消息传输协议相绑定,从这一层次开始,描述的内容就与具体服务的部署相关了。(比如可以将PortType 与SOAP/HTTP绑定,也可以将PortType与MIME/SMTP相绑定等。)
(6)Port - 描述的是一个服务访问入口的部署细节,包括通过哪个Web地址(URL)来访问,应当使用怎样的消息调用模式来访问等。其中消息调用模式则是使用Binding结构来表示。
(7)Service- 相关服务访问点的集合。
(一个WSDL中,definition是整个文档的根元素,一个文档中可能存在多个Service元素,service是服务的入口点。 Service 中可能有多个port,每个port对应一个PortType,PortType可能对应一组operation 。)
5. WSDL中的import与include:
import 语句引入其他的命名空间(namespace),但 include 语句却是将其他的声明引入到当前命名空间
1) XSD的导入:
在导入命名空间时,必须确保您在 import 语句中使用的命名空间与您所导入模式的 targetNamespace 相同
a、同一个文件中导入:<xsd:import namespace="urn:listing3"/>
b、不同文件中导入:<xsd:import namespace="urn:listing3" schemaLocation="listing3.xsd"/>
(实际上,这可能看起来好像您能够通过使用 import 语句中(而不是 targetNamespace 中)的不同命名空间属性在文件中修改模式的命名空间,这是一个错误,您不能修改命名空间。XSD文件里的命名空间必须是urn:listing3)
c、schemaLocation和你的解析器有关,如果解析器已经知道命名空间中的模式类型,或者有其他寻找这些模式类型的方法,它就不需要定位到你所提供的位置。它的这个特性也从另一方面提示您,XSD import 语句的主要目的是导入命名空间,而不是告诉您在命名空间的何处可以找到这些声明。当然,大多数时候 XML 解析器并不了解您将要导入的命名空间,所以有必要指定 schemaLocation 属性,并且很容易忘记该属性其实仅仅是一个提示。
d、<xsd:import namespace="http://www.w3.org/2001/XMLSchema"/>像这种常用的命名空间,起始解析器都知道,必不会去到网上找资源。在这里仅仅只是提示你用到了,(不过最好写上,这是规范,如果配上比较严格的检查,可能通不过)。
2) WSDL的导入:
<xsd:schema>这里可以有:include、import、complexType、element等元素</xsd:schema>-----模式
与 XSD 导入类似,WSDL导入的namespace 属性必须和所导入WSDL 的targetNamespace 相同。WSDL导入的location属性与XSD 导入的schemaLocation属性相似,只不过是一个提示。然而,与XSD 导入的schemaLocation 属性不同的是,WSDL 导入的 location 属性是必须给出的。
a、<wsdl:import namespace="urn:listing5" location="listing5.wsdl"/>直接在wsdl的definitions的节点下。
b、模式必须是通过 XSD import 语句来导入的。您不能在模式之外执行对其他模式的查找。而且必须从模式内导入其他模式(场景:因为模式里面某个对象里的属性是复杂对象,而这个复杂对象在一个XSD文件里描述)。所以由a可知用wsdl导入是不行的,因为它在模式之外导入的。
c、<wsdl:message name="GetPhoneResponse">
<wsdl:part name="phone" type="listing5:Phone"/>
</wsdl:message>
这个用<wsdl:import namespace="urn:listing5" location="listing5.wsdl"/>是可以的。因为它们是WSDL之间的导入。
d、使用 XSD 导入,来导入模式,使用 WSDL导入,来导入 WSDL。
3) 学习地址:
http://www.ibm.com/developerworks/cn/webservices/ws-tip-imports.html
http://www.w3.org/TR/wsdl-----WSDL定义
6. include元素的作用是引入另一个xsd中的定义和声明,并且把他们作为本xsd模式文档的目标命名空间的一部分。使用include的一个要点是,被包含成员的目标命名空间必须和包含方的目标命名空间一样。使用include机制来包含定义和声明能够有效地把这些成员添加到已存在的目标命名空间中来。我们可以一个包含文档和一个被包含文档。在实际中可以使用多个include元素来包含多个文档。文档可以包括那些自身还包含其他文档的文档。然而,只有在模式文档中所有被包含的部分都由一个目标命名空间声明时,嵌套文档才是合法的。要声明与那些定义在多个模式文档中的模式相一致,实例文档只需要引用"最顶层"的文档并使用这些模式文档共同的命名空间就可以了。把包含在不同文档中的所有定义聚集在一起是处理器的责任。
7. WSDL 檔案也是一種客戶端與伺服端之間的合約。
8. 如果不喜欢服务的热部署,则可以通过更改名为 axis2.xml 的 Axis2 全局配置文件,将全局配置参数更改为以下所示,从而关闭此功能:<parameter name="hotdeployment">false</parameter>。
9. Axis2 缺省将热更新参数设置为 FALSE。如果希望使用此功能,请按照以下所示更改配置参数,从而启用此功能:<parameter name="hotupdate">true</parameter>。
分享到:
相关推荐
此代码片段展示了如何通过DOM4J库读取XML文件,以及如何在Java中处理可能出现的异常情况。 #### 总结 本文通过具体的Java代码示例,详细介绍了在Tomcat环境下利用Apache Axis框架开发WebService的方法。从环境搭建...
它可能包含了如何初始化API客户端、如何构造请求以及如何处理返回数据的代码片段,供开发者参考和学习。 总结,腾讯地图WebService地址解析接口为开发者提供了一种高效、准确的工具,将地理坐标转换为可读的地址...
通过本文的学习,我们了解了WebService的基本概念及其在Android开发中的应用。KSOAP2框架为Android开发者提供了一个简单且强大的工具来实现与服务器端的数据交换。通过具体代码示例的分析,我们可以更深入地理解...
下面是一个简化的服务类`AuthService`的代码片段,展示了如何接收和处理User对象: ```java public class AuthService { public Respond login(User user) { String name = user.getName(); String password = ...
### Delphi WebService操作数据库 #### 一、项目背景与目的 在开发Web服务时,经常需要通过Delphi与数据库进行交互,实现数据的增删改查等操作。...- **Web服务开发指南**:学习如何构建高效稳定的Web服务。
综合以上信息,这个压缩包提供了一个关于.NET中使用WebService的全面学习资源,涵盖了从基础概念到高级特性的实战应用,特别是异步处理方面,对于提升.NET开发者在WebService领域的技能大有裨益。通过阅读源代码、...
天气查询示例是一个很好的起点,通过实际操作,可以加深对WebService工作原理的理解,并学习如何创建和使用WebService客户端。在实际开发中,可以利用WebService来整合不同的业务系统,实现数据交换和功能调用。
例如,在Java中,我们可以使用以下代码片段创建一个SOAP请求: ```java URL url = new URL("http://example.com/service"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn....
- **技术文档**:详尽的文档描述整体设计、关键技术,代码片段和解释,体现项目的专业性和深度。 - **作品运行验证**:确保代码能正常运行,与文档描述一致。 - **代码质量**:良好的编码风格,如规范的变量命名、...
在给定的代码片段中,我们看到了一个使用Apache Axis库来调用Web Service的Java示例。下面将深入解析其中的关键步骤和知识点: 1. **导入必要的类库**:首先,代码导入了多个类库,包括`java.util`下的集合类,`...
实例可能包含了数据库设计、SQL查询示例,以及如何在Web服务中与MySQL交互的代码片段。 6. **开发文档**: 详尽的开发文档是任何项目成功的关键。它应涵盖服务的设计、实现、测试和部署过程,以及如何使用和维护...
在IT行业中,Spring框架是Java开发中的一个核心组件,尤其在构建企业级应用时不可或缺。...通过学习和实践提供的示例程序和使用说明书,开发者能够更好地理解和掌握这一技术,提高他们的开发效率和项目质量。
"源码" 标签表明,博文中可能包含了编写 WebService 的源代码片段,读者可以参考这些代码来了解如何在 Axis 中定义服务接口、实现服务逻辑,并将它们绑定到 SOAP 消息处理上。源码通常包括服务接口定义(如 Java ...
【WebService在.NET中的实战应用五】 在.NET框架中,WebService是一种基于XML的远程调用...通过上述知识点的学习,开发者能够更深入地理解.NET中WebService的动态调用,并能应用于实际项目中,提高开发效率和灵活性。
这个压缩包中的"调用web service代码"应该包含了完整的示例代码,你可以参考这些代码学习如何在Java项目中集成和使用Apache Axis来调用Web Service。通过深入理解和实践,你将能熟练掌握Java通过Web Service与其他...
"PRO_WEBSERVICE_TEST.prc"可能是这样的PL/SQL过程的源代码,你可以查看并学习其调用Web Service的具体实现。 3. **测试和调试**:"过程.JPG"和"结果.JPG"可能展示了调用Web Service的代码片段和执行结果。通过...
文件"po-webservice"可能是服务端或客户端的源代码文件,可能包含服务接口类、服务实现类、或者客户端调用服务的代码片段。这些代码可以帮助我们更深入地理解Web Service的实现细节。 总的来说,这个案例旨在帮助...
在IT行业中,Web服务是一种基于网络的通信协议,允许不同应用程序之间进行数据交换。...通过学习和实践这个示例,开发者可以掌握如何在手持终端上有效地利用WebService进行数据交换,从而提升应用的功能和用户体验。
在提供的代码片段中,使用了`Call`类和`Service`类,它们都是Axis框架的一部分,用于发起对Web服务的调用。 ### 三、总结 通过以上步骤,我们可以看到构建一个简单的Web服务涉及到选择合适的框架(如Axis)、编写...
在JavaScript与Web服务交互时,特别是在跨域请求中,中文字符编码可能会出现问题,这个文件可能包含了解决这些问题的技巧或代码片段。 5. **www.pudn.com.txt**:这个文件可能包含了下载压缩包的来源信息,或者是一...