- 浏览: 117787 次
- 来自: ...
文章分类
最新评论
1, 自洽
以前曾经写过:
目前WebService不是自洽的,即一个WebService方法的参数和返回值不能是另外一个WebService,因此你不能在WebService的返回值上调用业务逻辑方法;顶多开发包做点手脚,包装几个getter/setter方法,或同构平台上在客户端拥有服务端的类定义,可以调用其方法,像.Net平台上的DataSet;参考开发包的处理,我们可以自己为WebService的返回值加入业务逻辑方法a,开发包无非是为客户端生成一堆代理类,完成序列化/反序列化,解析远程调用协议等
b,我们可以修改这些代理类,加入业务逻辑方法,只要不影响序列化/反序列化,解析远程调用协议那些原有的部分就行参考以前的远程过程调用协议,COM,RMI等,都能通过一个远程对象返回另外一个远程对象,可以调用各种方法,WebService完全应该定义其返回值、参数可以是另外一个WebService
最近看了<<我应该采用哪一种WSDL样式>>, 文中提到RPC/Literal编码方式的href属性,让我联想起以前的想法,其实如果规定客户端Stub必须是可序列化的,那么是否就有可能解决WebService的参数和返回值可以是另外的WebService呢(或说是另外的WebService的客户端Stub类呢)?
2. Content-Type
SOAP 1.1 HTTP/SOAP 消息的媒体类型为“text/xml”,其编码处理是在 RFC2376 中定义的。而 SOAP 1.2 HTTP/SOAP 消息的媒体类型为“application/soap+xml”,其编码处理是在 RFC3023 中定义的。这些 RFC 规范定义了下列行为:
SOAP 1.1: HTTP/SOAP 请求的字符集由 HTTP 头中的 ContentType 字符集参数确定。在 SOAP 消息的 XML 声明部分定义的编码特性将被忽略。如果不指定 ContentType 字符集参数,字符集将被视为 US-ASCII。
SOAP 1.2: HTTP/SOAP 请求的字符集由 HTTP 头中的 ContentType 字符集参数确定。在 SOAP 消息的 XML 声明部分定义的编码特性将被忽略。如果未指定 ContentType 的字符集参数,将使用在 XML 声明部分定义的编码特性。如果 ContentType 字符集参数或 XML 声明的编码特性均未定义,它将被视为 UTF-8。
SOAP 1.1: HTTP/SOAP 请求的字符集由 HTTP 头中的 ContentType 字符集参数确定。在 SOAP 消息的 XML 声明部分定义的编码特性将被忽略。如果不指定 ContentType 字符集参数,字符集将被视为 US-ASCII。
SOAP 1.2: HTTP/SOAP 请求的字符集由 HTTP 头中的 ContentType 字符集参数确定。在 SOAP 消息的 XML 声明部分定义的编码特性将被忽略。如果未指定 ContentType 的字符集参数,将使用在 XML 声明部分定义的编码特性。如果 ContentType 字符集参数或 XML 声明的编码特性均未定义,它将被视为 UTF-8。
Content-Type: text/html;charset=GB2312
Content-Type: text/xml; charset=utf-8
3,UTF-8,Axis?支持其它编码?How to ?希望各位看官给个下面问题的答案
POST /wstest/NetWebService/SampleSer<wbr></wbr>vice HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8 <!--1, how can I change it to charset=shift_jis using axis? Thanks-->
Content-Length: length
SOAPAction: "http://tempuri.org/max"
<?xml version="1.0" encoding="utf-8"?> <!--2, how can I change it to encoding="shift_jis" using axis? Thanks-->
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchem<wbr></wbr>a-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchem<wbr></wbr>a
" xmlns:soap="http://schemas.xmlsoap.org<wbr></wbr>/soap/envelope/">
<soap:Body>
<max xmlns="http://tempuri.org/">
<a>int</a>
<b>int</b>
</max>
</soap:Body>
</soap:Envelope>
Assume the operation name is not "max", but a japanese string, and I prefer shift_jis to utf-8, then what should I do?
4, 文档交换vs. RPC模型
以下内容来自<<Webservice 的设计和模式>>
RPC(Remote Procedure Call)本质上就是远程方法的调用。尽管Webservice是基于XML的但是你仍然可以使用远程方法调用这种模式来进行Webservice的实现,尤其是在那种简单的请求相应的模型中。在这个过程中,传输中的XML文件所描述的更多是有关远程方法的信息,比如方法名,方法参数等等。
而文档交换方式,与RPC相比较在XML文件中不是做远程方法的映射,而是一份完整的自包含的业务文档,当Service端收到这份文档后,先进行预处理(比如词汇的翻译和映射),然后再构造出返回消息。这个构造返回消息的过程中,往往不再是简简单单的一个方法调用,而是多个对象协同完成一个事务的处理,再将结果返回。
这两种方式的区别,类似与打电话和发邮件的不同处理方法。在目前,对于第一种方法提供了很多自动化的工具使得远程方法的调用能够很容易的完成,而后一种方法缺少一系列工具的支持,需要开发者手工完成。
尽管如此,在此还是推荐使用文档交换的方式。由于它在以下方面具有RPC所不具备的优点。
|
以下内容来自<<我应该采用哪一种WSDL样式>>
Java 方法 :
public void myMethod(int x);
RPC/Encoded
|
<message name="myMethodRequest"> |
<soap:envelope> |
WSDL 基本达到了尽可能地简单易懂的要求。
操作名出现在消息中,这样接收者就可以很轻松地把消息发送到方法的实现。
|
|
RPC/Literal
|
<message name="myMethodRequest"> |
<soap:envelope> |
WSDL 还是基本达到了尽可能地简单易懂的要求。
操作名仍然出现在消息中。
去掉了类型编码
|
您仍然不能简单地检验此消息的有效性,因为只有
<x xsi:type="xsd:int">5</x> 行包含在 Schema 中定义的内容;其余的 soap:body 内容都来自 WSDL 定义 |
Document/Litaral
|
<types> |
<soap:envelope> |
没有编码信息
您可以在最后用任何 XML 检验器检验此消息的有效性。
soap:body ( <xElement>5</xElement> )中每项内容都定义在 Schema 中 |
WSDL 变得有些复杂。不过,这是一个非常小的缺点,因为 WSDL 并没有打算由人来读取。
SOAP 消息中缺少操作名。而如果没有操作名,发送就可能比较困难,并且有时变得不可能。
|
Document/Literal
Wrapped
|
<types> |
<soap:envelope> |
没有编码信息。
出现在 soap:body 中的每项内容都是由 Schema 定义的,所以您现在可以很容易地检验此消息的有效性。
方法名又出现在 SOAP 消息中
|
WSDL 甚至更复杂,但是这仍然是一个非常小的缺点
|
发表评论
-
The Object Primer
2004-12-11 11:21 5861,书名 被翻译成“ ... -
错误处理规范
2004-12-11 16:47 756错误处理规范 〇、概念澄清 概念 解释 错误 ... -
Java,误解为何如此之深
2005-08-24 13:50 592前几天被电话面试,问J ... -
Java:画蛇添足的编码规范
2005-09-02 13:13 606前几天公司培训编码规范: 第n条: ... -
synchronized : 规则, 推论与实践
2007-07-23 22:32 46314.3.Synchronization. Rule ... -
交互设计: 股市帮凶
2008-05-04 21:30 642同事 Y 在线操作股票时, 把"买入"点成 ... -
交互设计: 火车上的厕所
2008-05-26 17:17 606有人在动车组的厕所前等了很久, 直到乘务员路过说厕所是被锁住了 ... -
设计原则与模式: 案例介绍--CppUnit
2008-06-01 20:15 610设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 671关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 709交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 610整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
Beyond Workflow : An Introduction to Vitria BusinessWare
2005-09-26 10:13 802一、简介 Busines ... -
Vitria BusinessWare: 存储与访问安全
2006-03-26 15:45 745事实上,BusinessWare使用LDAP做为存储机制和 ... -
Vitria BusinessWare: 平台与软件总线
2006-04-01 12:59 837经过一段时间的使用 ... -
Vitria BusinessWare: Web Services
2006-04-01 14:30 739BusinessWare的Web Services ... -
Web Services:WSDL 1.1 规范中的几个错误
2006-04-01 16:40 718读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个 ... -
C++/CLI:被忽视的集成技术
2006-05-17 20:02 753十几行代码,就使一个重要的旧系统组件,完全融入了基于.Ne ... -
AJP/JK:异构Web平台的集成技术
2006-05-25 21:44 706Tomcat Connector 可以将Tomcat ... -
Vitria BusinessWare: 事件与端口
2006-05-27 17:24 655Event BusinessWare是一个事件驱动的系统 ... -
WS-Security Interoperability Issues: WebSphere, JBoss, Axis and .Net
2006-08-31 22:46 837检验了一下WS-Security的互操作情况,涉及到 ...
相关推荐
- **XML**:XML是一种自描述的数据格式,用于结构化数据的交换。在Web服务中,XML被用来编码请求和响应,确保不同系统间的互操作性。 - **SOAP**:SOAP是用于在Web上传输结构化信息的协议。它定义了消息格式,并...
3. **WSDL(Web Services Description Language)**:WSDL是一种XML格式,用于描述Web服务及其接口。它定义了服务的位置、提供的操作以及如何调用这些操作,是消费者发现和理解Web服务的关键。 4. **UDDI...
随着信息技术的快速发展,Web服务(Web Services)作为一项新兴的技术,在过去的几年里受到了越来越多的应用程序开发者的关注,并逐渐成为企业间以及企业和客户之间沟通的重要手段之一。相较于传统的客户端/服务器模型...
2. **SOAP(简单对象访问协议)**:SOAP是Web服务中最常见的通信协议,用于交换结构化的、XML编码的信息。C#通过.NET框架支持SOAP协议,允许开发者创建和消费SOAP Web服务。 3. **WSDL(Web服务描述语言)**:WSDL...
- **SOAP 消息交换模型:** SOAP 支持多种消息交换模式,包括请求/响应、单向和通知等。 - **SOAP 作为 RPC 风格 Web 服务:** SOAP 可以被用来实现远程过程调用(RPC),允许客户端调用远程服务器上的方法并获取...
在IT行业中,WebServices是一种常见的应用程序接口(API)实现方式,它允许不同系统间通过网络进行通信和数据交换。本项目“轮渡开航早知道”就是这样一个利用C#和.NET框架构建的WebServices应用,其主要目标是为...
2. 实现服务类:继承自System.Web.Services.WebService的类实现上述接口,提供实际的服务逻辑。 3. 添加服务方法:在服务类中,为每个操作添加方法,这些方法将处理来自客户端的请求。 4. 配置服务:通过添加Web....
2. **语法**:与抽象模型对应的是具体的语法实现,可能是XML或其他格式,用于实际编码和交换政策信息。 3. **构建块**:定义了一组基础的构造元素,如条件、选择、交替等,它们可以组合起来描述复杂的政策需求。 4...
根据给定文件的信息,我们可以提炼出与OGC Web Services(开放地理空间联盟网络服务)相关的多个关键知识点。这些知识点涉及到了GIS(地理信息系统)领域的多种技术和服务标准。 ### OGC Web Services简介 OGC Web...
Web Services的使用则让阵地一体化管理系统能够与企业的其他系统(如ERP、CRM等)进行接口对接和数据交换,这不仅有助于自动化管理决策的制定,而且能够实现数据的跨系统共享,促进业务流程的优化。 为了实现基于...
Web服务(Web Services)是一种基于互联网的、使用标准协议(如HTTP)进行通信的技术,它允许不同的应用程序之间进行数据交换和协同工作。在.NET框架下,Web服务是通过SOAP(Simple Object Access Protocol)消息来...
- **开发模型**:该标准支持两种主要的开发模型: - **注解驱动模型**:开发者可以通过在类或方法上添加特定的注解来声明服务的行为。 - **配置文件驱动模型**:通过配置文件(如`web.xml`)来定义服务的行为。 -...
Web服务是基于开放标准(如XML、SOAP、WSDL和UDDI)的自包含、自解释的应用程序,可以通过网络进行交互。它们通常通过HTTP协议传输数据,使得跨平台集成变得简单。 **2. SOAP(Simple Object Access Protocol)** ...
8. **Web Services**:Web Services是一种基于标准的、平台无关的方式,使得不同系统之间可以互相交互数据。在C#.NET中,可以使用ASP.NET Web Services(ASMX)或WCF来创建和消费Web服务,实现跨平台的数据共享。 ...
<webServices> </webServices> </system.web> <services> <add baseAddress="http://localhost:8080/MyWebService/"/> </services> ``` 完成以上步骤后,就可以...