WebServices简介

先给出一个概念 SOA ,即Service Oriented Architecture ,中文一般理解为面向服务的架构,

既然说是一种架构的话,所以一般认为 SOA 是包含了运行环境,编程模型,

架构风格和相关方法论等在内的一整套新的分布式软件系统构造方法和环境,

涵盖服务的整个生命周期。而在 SOA 的架构风格中,服务是最核心的抽象手段。

SOA 中的服务是构建在一些列基于开放标准的基础之上的,

Web 服务定义了如何在异构系统之间实现通信的标准化方法,

从而就使得 Web 服务可以跨越运行平台和实现语言,

同时也使得 Web 服务成为了实现 SOA 中服务的主要技术。

WebServices三种基本元素之 SOAP

SOAP 即 Simple Object AccessProtocol 也就是简单对象访问协议。

SOAP 呢,其指导理念是“唯一一个没有发明任何新技术的技术”,

是一种用于访问 Web 服务的协议。

因为 SOAP 基于XML 和 HTTP ,其通过XML 来实现消息描述,然后再通过 HTTP 实现消息传输。

SOAP 是用于在应用程序之间进行通信的一种通信协议。

因为是基于 XML 和HTTP 的,所以其独立于语言,独立于平台,并且因为 XML 的扩展性很好,

所以基于 XML 的 SOAP 自然扩展性也不差。

通过 SOAP 可以非常方便的解决互联网中消息互联互通的需求,

其和其他的 Web 服务协议构建起 SOA 应用的技术基础。

SOAP 协议的一个重要特点是它独立于底层传输机制,Web 服务应用程序可以根据需要选择自己的数据传输协议,

可以在发送消息时来确定相应传输机制。

由于 HTTP 协议本身的一些特点和局限性,

使得当 SOAP 使用HTTP 绑定的 Web 服务并不能满足某些企业应用的需求。

比如,HTTP 不是一个可靠传输协议,所以有可能在传输过程中出现问题,

然后 HTTP 协议基于Request/Response 模型,也就是说客户端需要在等待响应消息接收完成后才能继续执行,

而此时如果响应时间过长呢?

基于上面的这些需求,便需要选择合适的传输协议了。

关于这方面的内容的话,有点深奥了,有兴趣的可以去看看 IBM 的一些关于这方面内容的介绍。

还有一点需要提及一下,那就是 SOAP 是可以绕过防火墙的,将来将会作为 W3C 的标准进行发展。

要实现一个SOAP 型的接口,有两种方式:一种有WSDL文件方式、一中无WSDL文件方式!

无WSDL文件方式超简单:一个server端,一个client端就解决了

server.php  (服务端)代码

<?php
class Service
{
public function HelloWorld()
{
return "Hello";
}
public function Add($data)
{
$res['moudle'] = $data['moudle'];
$res['name'] = $data['name'];
$a = $res['moudle'].$res['name'];
$b = "xiix";
return array($a,$b);
}
}
$server=new SoapServer(null,array('uri' => "Server.php"));
$server->setClass("Service");
$server->handle();

  client.php (客户端) 代码

<?php
try {
$soap = new SoapClient(null, array(
"location" => "http://localhost/xiong/socket/Server.php",
"uri" => "Server.php", //资源描述符服务器和客户端必须对应
"style" => SOAP_RPC,
"use" => SOAP_ENCODED
));
$data = array(
'moudle' => 'active',
'name' => 'add',
'method' => 'post'
);
$res = $soap->Add($data);
var_dump($res);
} catch (Exction $e) {
echo print_r($e->getMessage(), true);
}

 

结果显示

错误解决:1. 提示 Client] looks like we got no XML document错误。
           服务器端文件在<?php ?> 标签前后都不要有任何数据包括空格,空行。

     2.修改php.ini ->  ;always_populate_raw_post_data = -1   把逗号注释去掉

更加详细原文链接 : http://www.cnblogs.com/phpdragon/archive/2012/06/10/2544171.html

           http://blog.csdn.net/zhuizhuziwo/article/details/8153327

php_soap扩展应用的更多相关文章

  1. PHP 扩展库

    表 6.1. PHP 扩展库 扩展库 说明 注解 php_bz2.dll bzip2 压缩函数库 无 php_calendar.dll 历法转换函数库 自 PHP 4.0.3 起内置 php_cpdf ...

  2. 64位wampserver开启curl扩展失败的问题

    今天在运行程序时报错: Fatal error:Call to undefined function curl_init()... 在网上查了一下,是因为php_curl.dll扩展没有开启的缘故,于 ...

  3. SOAP扩展PHP轻松实现WebService

    最近在一个PHP项目中对接外部接口涉及到WebService,搜索引擎上相关文章不是很多,找到的大都是引用一个号称很强大的开源软件 NuSOAP(下载地址:http://sourceforge.net ...

  4. php扩展库解释

    扩展库 说明 注解 php_bz2.dll bzip2 压缩函数库 无 php_calendar.dll 历法转换函数库 自 PHP 4.0.3 起内置 php_cpdf.dll ClibPDF 函数 ...

  5. Asp.net Boilerplate之AbpSession扩展

    当前Abp版本1.2,项目类型为MVC5. 以属性的形式扩展AbpSession,并在"记住我"后,下次自动登录也能获取到扩展属性的值,版权归"角落的白板报"所 ...

  6. 恢复SQL Server被误删除的数据(再扩展)

    恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的 ...

  7. .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法

    .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...

  8. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

  9. 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)

    前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...

随机推荐

  1. MVC Filter中加入验证并跳转

    public class BuildingFilter : ActionFilterAttribute { /// <summary> /// 验证 Building Cookie add ...

  2. iOS 模拟不同的字体大小

     真的是神器!! 参考 Creating Self-Sizing Table View Cells

  3. js插件实现点击复制内容到粘贴板,兼容IE8

    先来看下本次需要导入的文件: 第一个是jquery.js,这个不多说: 第二个是jquery.zclip.js,第三个是zeroClipboard.swf ,这两个文件的下载链接:http://www ...

  4. Django的sitemap

    1.安装 安装Sitemap APP的步骤如下: 在INSTALLED_APPS设置中添加'django.contrib.sitemaps'; 确认你的TEMPLATES设置中包含DjangoTemp ...

  5. python 获取excel表内容 生成php数组

    需求: 生成:同时处理数字类型,比如3 不能显示为3.0 [ ['type'=>3,'da_name'=>福建省平潭拓至美装饰工程有限公司,'da_aka'=>福建省平潭拓至美装饰工 ...

  6. Python单行注释与多行注释

    >>> print "hello,world"hello,world>>> 2+24#单行注释 """每行代码的后 ...

  7. js时间戳差值转日期格式

    <script> function getRemainderTime (startTime){     var s1 = new Date(startTime.replace(/-/g,  ...

  8. pmm 监控mysql、mongodb、系统

    Pmm监控 1.概述 Pmm是(percona management and monitoring)一款用于数据库(mysql.mongodb)的监控工具,是一种典型的C/S架构.本次部署采用的是do ...

  9. MySQL常用命令操作

    1. 命令行登录使用默认3306端口的MySQL: mysql -u root -p 2. 通过TCP连接管理不同端口的多个MySQL(注意:MySQL4.1以上版本才有此项功能): mysql -u ...

  10. SpringMVC 之 Hello World 入门

    1 准备开发环境和运行环境 依赖 jar 包下载,如下图所示: 2 前端控制器的配置 在我们的web.xml中添加如下配置: <!-- The front controller of this ...