十分钟内有问必答迅雷点立即下载没反应

web前台用.net开发,后台用java开发,如何使两个系统高效、简单、紧密的交互
web前台用.net开发,后台用java开发,如何使两个系统高效、简单、紧密的交互?
前台一般是数据展现,后台做数据业务的处理,就是说前台的不会做增删改的操作?都是发送消息交由后台去处理吗?
如电子商务平台,一般采取什么方式实现前后台交互。
除了WebService,一般还有什么好的方式。
如淘宝大型电商网站一般又是怎么去实现这些的。
向各位学习!
哈哈,可以用php,ruby,python分别写一层中间件,连接.net和java,效率肯定高。
中间通过php连接。万能的php,哈哈哈
阿里全是java,有php但是没听说有.net。他们有2套 soa 的解决方案,
一个是淘宝HSF,不开源,不清楚具体内容,
一个是开源的dubbo服务,很多公司在使用,貌似不支持.net。
我以前也做过java + .net 的结构,是cs的,前端采用Silverlight,后台是java,采用webservice链接。如果你是做b/s的干嘛要用.net呢?jQuery很多开源的UI,或者很多js的开源框架可以选择,和.net的那些控件没什么区别。
--- 共有 3 条评论 ---
: JNI (Java Native Interface) 可以调用一些c,c++相关的东西,比如*.dll 啥的,但是他是.net调用java哦,你搞反了
: php在windows服务器下有个 dotnet.dll 扩展,可以调用 COM组件
Java好像也有扩展,可以直接使用java的类
阿里的dubbo服务
用mq之类的消息服务中间件解耦系统或者跨语言的rpc调用
不是骂你,闲的蛋疼。不是你傻逼,就是你主管傻逼
你意思是业务层用java写,web层用.net吧。。。。
java后端做成服务,比如rest、webservice这些……这种模式很大型网站都在采用……
java可以用rest或者sevlet暴露服务,net访问服务的方式,其实个人感觉最方便的就是webservice了。麻烦点的还可以用tcp等服务1079人阅读
最近的项目中要用到web service,通过internet 发现vb就可以实现soap的客户端,要用到MSSOAPLib.SoapClient,MSSOAPLib.SoapSerializer...这些东东.实现代码如下(老外的)VERSION 5.00Begin VB.Form Form1 && Caption&&&&&&&& =&& &Form1&&& ClientHeight&&& =&& 2475&& ClientLeft&&&&& =&& 60&& ClientTop&&&&&& =&& 345&& ClientWidth&&&& =&& 4575&& LinkTopic&&&&&& =&& &Form1&&& ScaleHeight&&&& =&& 2475&& ScaleWidth&&&&& =&& 4575&& StartUpPosition =&& 3& 'Windows Default&& mandButton Command1 &&&&& Caption&&&&&&&& =&& &Command1&&&&&& Height&&&&&&&&& =&& 615&&&&& Left&&&&&&&&&&& =&& 960&&&&& TabIndex&&&&&&& =&& 0&&&&& Top&&&&&&&&&&&& =&& 720&&&&& Width&&&&&&&&&& =&& 2295&& EndEndAttribute VB_Name = &Form1&Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = FalsePublic sClient As New MSSOAPLib.SoapClientPrivate Const c_WSDL_URL As String = _&&& &&'You need soap Type library 3.0 and microsoft xml v2.6to run this examplePrivate Sub Command1_Click()'sClient.mssoapinit c_WSL_URLDebug.Print Time&&& TranslateBabelDebug.Print Time&&& MsgBox &finish&&& &End SubPublic Sub TranslateBabel()&&& ' Purpose: Translates text from one language to another.&&& ' WSDL: &&& ' More info: & &&&&&&& Dim objClient As MSSOAPLib.SoapClient&&& ' To package SOAP request.&&& Dim objSerial As MSSOAPLib.SoapSerializer&&& ' To read SOAP response.&&& Dim objRead As MSSOAPLib.SoapReader&&& ' To connect to Web service using SOAP.&&& Dim objConn As MSSOAPLib.SoapConnector&&& ' To parse the SOAP response.&&& Dim objResults As MSXML2.IXMLDOMNodeList&&& Dim objNode As MSXML2.IXMLDOMNode&&& &&& ' Set up the SOAP connector.&&& Set objConn = New MSSOAPLib.HttpConnector&&& ' Define the endpoint URL. This is the actual running code,&&& ' not the WSDL file path! You can find it in the WSDL's&&& ' &soap:address& tag's location attribute.&&& objConn.Property(&EndPointURL&) = &&&&& ' Define the SOAP action. You can find it in the WSDL's&&& ' &soap:operation& tag's soapAction attribute for the matching&&& ' &operation& tag.&&& &&& 'GetNaturalInfo is the name of the service&&& objConn.Property(&SoapAction&) = &&&&& 'objConn.Property(&SoapAction&) = &GetNaturalInfo&&&& &&& ' Begin the SOAP message.&&& objConn.BeginMessage&&& &&& Set objSerial = New MSSOAPLib.SoapSerializer&&& ' Initialize the serializer to the connector's input stream.&&& objSerial.Init objConn.InputStream&&& &&& ' Build the SOAP message.&&& With objSerial&&&&&&& .startEnvelope&&&&&&&&&&&&& ' &SOAP-ENV:Envelope&&&&&&&& .startBody&&&&&&&&&&&&&&&&& ' &SOAP-ENV:Body&&&&&&&& ' Use the Web method's name and schema target namespace URI.&&&&&&& .startElement &GetNaturalInfo&&&&&&&& .endElement&&&&&&& .endBody&&&&&&&&&&&&&&&&&&& ' &/SOAP-ENV:Body&&&&&&&& .endEnvelope&&&&&&&&&&&&&&& ' &/SOAP-ENV:Envelope&&&& End With&&& &&& ' Send the SOAP message.&&& objConn.EndMessage&&& &&& Set objRead = New MSSOAPLib.SoapReader&&& &&& ' Initialize the SOAP reader to the connector's output stream.&&& objRead.Load objConn.OutputStream&&&&& &&& Set objResults = objRead.RPCResult.childNodes&&&&&&& &&& ' Iterate through the returned nodes.&&& For Each objNode In objResults&&&&&&& 'Debug.Print objNode.nodeValue&&&&&&& MsgBox objNode.nodeTypedValue&&&& Next objNode&&& &&&&&&& End Sub
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8098次
排名:千里之外
(6)(1)(1)(1)2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2007年1月 VB大版内专家分月排行榜第二
2012年6月 VB大版内专家分月排行榜第三2007年2月 VB大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
本帖子已过去太久远了,不再提供回复功能。PHP中使用XML-RPC构造Web Service简单入门 — 编程爱好者
PHP中使用XML-RPC构造Web Service简单入门
(加入日期:
【】【字体:
* 作者:heiyeluren
* 博客:http://blog.csdn.net/heiyeshuwu
[&&Web Service介绍 ]
Web Service就是为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前进行Web Service通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。XML-RPC比较简单,出现时间比较早,SOAP比较复杂,主要是一些需要稳定、健壮、安全并且复杂交互的时候使用。
PHP中集成了XML-RPC和SOAP两种协议的访问,都是集中在xmlrpc扩展当中。另外,在PHP的PEAR中,不管是PHP 4还是PHP 5,都已经默认集成了XML-RPC扩展,而且该扩展跟xmlrpc扩展无关,能够独立实现XML-RPC的协议交互,如果没有xmlrpc扩展,建议使用PEAR::XML-RPC扩展。
我们这里主要是以XML-RPC来简单描述Web Service的交互过程,部分内容来自PHP手册,更详细内容,建议参考手册。
[&&安装xmlrpc扩展 ]
如果你的系统中没有安装xmlrpc的php扩展,那么请正确安装。
在Windows平台下,首先把PHP安装目录下的扩展php_xmlrpc.dll放到C:\Windows或者C:\Winnt目录下,(PHP4的扩展在C:\php\extensions目录中,PHP5的扩展在C:\php\ext目录中),同时在C:\Windows\php.ini或者C:\Winnt\php.ini中把extension=php_xmlrpc.dll前面的分号&;&去掉,然后重启Web服务器后查看phpinfo()有没有XML-RPC项目就能够确定是否已经正确安装xmlrpc扩展。
在Unix/Linux平台下,如果没有安装xmlrpc扩展,请在重新编译PHP,在configure的时候请加入 --with-xmlrpc 选项,然后查看phpinfo()看是否正常安装xmlrpc。
(注意:以下操作都是建立在xmlrpc扩张正常安装前提下,请务必正确安装。)
[&&XML-RPC工作原理 ]
XML-RPC大致就是整个过程就是使用XML来进行通信。首先构造一个RPC 服务器端用来出来从RPC客户端传递过来的使用XML封装的请求,并且把处理结果通过XML的形式返回给RPC客户端,客户端就去分析XML获取自己需要的数据。
XML-RPC的服务器端必须有现成的函数提供给客户端调用,并且客户端提交的请求中的函数和方法必须和服务器端的一致,否则将无法获取所需要的结果。
下面我进行简单的代码来描述整个过程。
[&&XML-RPC实践 ]
服务器端使用xmlrpc_server_create函数产生一个服务器端,然后把需要需要暴露的RPC调用接口进行注册,接受RPC客户端POST过来的XML数据,然后进行处理,处理结果通过XML的形式显示给客户端。
代码如下: rpc_server.php
* 函数:提供给RPC客户端调用的函数
* $method 客户端需要调用的函数
* $params 客户端需要调用的函数的参数数组
* 返回:返回指定调用结果
function rpc_server_func($method, $params) {
$parameter = $params[0];
&&&if ($parameter == &get&)
&&&&&&&$return = ''This data by get method'';
&&&&&&&$return = ''Not specify method or params'';
&&&return $
//产生一个XML-RPC的服务器端
$xmlrpc_server = xmlrpc_server_create();
//注册一个服务器端调用的方法rpc_server,实际指向的是rpc_server_func函数
xmlrpc_server_register_method($xmlrpc_server, &rpc_server&, &rpc_server_func&);
//接受客户端POST过来的XML数据
$request = $HTTP_RAW_POST_DATA;
//执行调用客户端的XML请求后获取执行结果
$xmlrpc_response = xmlrpc_server_call_method($xmlrpc_server, $request, null);
//把函数处理后的结果XML进行输出
header(''Content-Type: text/xml'');
echo $xmlrpc_
//销毁XML-RPC服务器端资源
xmlrpc_server_destroy($xmlrpc_server);
服务器端构造好了,那么再构造我们的RPC客户端。客户端大致通过Socket访问XML-RPC服务器端的80端口,然后把需要调用的RPC接口封装到XML里,通过POST请求提交给RPC服务器端,最后获取服务器端返回结果。
代码如下:rpc_client.php
* 函数:提供给客户端进行连接XML-RPC服务器端的函数
* $host&&需要连接的主机
* $port&&连接主机的端口
* $rpc_server XML-RPC服务器端文件
* $request&&封装的XML请求信息
* 返回:连接成功成功返回由服务器端返回的XML信息,失败返回false
function rpc_client_call($host, $port, $rpc_server, $request) {
&&&//打开指定的服务器端
&&&$fp = fsockopen($host, $port);
&&&//构造需要进行通信的XML-RPC服务器端的查询POST请求信息
&&&$query = &POST $rpc_server HTTP/1.0\nUser_Agent: XML-RPC Client\nHost: &.$host.&\nContent-Type: text/xml\nContent-Length: &.strlen($request).&\n\n&.$request.&\n&;
&&&//把构造好的HTTP协议发送给服务器,失败返回false
&&&if (!fputs($fp, $query, strlen($query)))
&&&&&&&$errstr = &Write error&;
&&&//获取从服务器端返回的所有信息,包括HTTP头和XML信息
&&&$contents = '''';
&&&while (!feof($fp))
&&&&&&&$contents .= fgets($fp);
&&&//关闭连接资源后返回获取的内容
&&&fclose($fp);
&&&return $
//构造连接RPC服务器端的信息
$host&&= ''localhost'';
$port&&= 80;
$rpc_server = ''/~heiyeluren/rpc_server.php'';
//把需要发送的XML请求进行编码成XML,需要调用的方法是rpc_server,参数是get
$request = xmlrpc_encode_request(''rpc_server'', ''get'');
//调用rpc_client_call函数把所有请求发送给XML-RPC服务器端后获取信息
$response = rpc_client_call($host, $port, $rpc_server, $request);
//分析从服务器端返回的XML,去掉HTTP头信息,并且把XML转为PHP能识别的字符串
$split = ''&?xml version=&1.0& encoding=&iso-8859-1&?&'';
$xml =&&explode($split, $response);
$xml = $split . array_pop($xml);
$response = xmlrpc_decode($xml);
//输出从RPC服务器端获取的信息
print_r($response);
大致我们上面的例子就是提交一个叫做rpc_server的方法过去,参数是get,然后获取服务器端的返回,服务器端返回的XML数据是:
&?xml version=&1.0& encoding=&iso-8859-1&?&
&methodResponse&
&&&&string&This data by get method&/string&
&&&/value&
&/methodResponse&
那么我们再通过xmlrpc_decode函数把这个XML编码为PHP的字符串,我们就能够随意处理了,整个Web Service交互完成。
[&&结束语 ]
不管是XML-RPC也好,SOAP也罢,只要能够让我们稳定、安全的进行远程过程的调用,完成我们的项目,那么就算整个Web Service就是成功的。另外,如果可以的话,也可以尝试使用PEAR中的XML-RPC来实现上面类似的操作,说不定会更简单,更适合你使用。
简单的使用XML-RPC进行Web Service交互就完成了,部分代码参考PHP手册,想获取详细信息建议参考手册,如果文章有不正确,请指正。
本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。(
本栏最新文章
最新招聘信息使用Soap消息调用Web&Services
使用Soap消息调用Web&Services
  Web Services技术使异种计算环境之间可以共享数据和通信,达到信息的一致性。随着异种计算机环境的不断增加,我们会更加经常的调用各种不同计算机体系中编写和发布的Web Services,作者在本文中给出了使用VB应用程序调用java平台编写和发布的Web Services的实践过程, 并且分析了如何根据WSDL文件构造SOAP消息的方法。
  一 SOAP简介
  1.SOAP定义
  SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议.
  它包括四个部分:
  SOAP封装(envelop): 封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;&&& SOAP编码规则(encoding rules): 用于表示应用程序需要使用的数据类型的实例;&&& SOAP RPC表示(RPC representation): 表示远程过程调用和应答的协定;&&& SOAP绑定(binding): 使用底层协议交换信息。
  2.SOAP消息
  SOAP采用了已经广泛使用的两个协议:HTTP和XML。其中HTTP用于实现SOAP的RPC风格的传输,而XML是它的编码模式,一个SOAP请求实际上就是一个HTTP POST请求。
  其它详细的SOAP方面的信息请参考 -soap12-/
  二 WSDL简介
  WSDL (Web Services Description Language)是一种XML Application,他的作用是将一个Web Services描述为一组服务访问点.
  WSDL文档将一个Web Services描述成一组网络端点或者端口,在WSDL中,由于服务访问点和消息的抽象定义已经和具体的服务期部署和数据格式绑定分离,因此可以再次使用这些抽象对象: 消息,是对需要交换信息的抽象描述;端口类型,是对Web Service提供的操作的抽象集合。
  特定端口类型的具体协议和数据格式定义构成了一个可以从用的绑定,一个端口定义成一个可重用绑定和网络地址的关联,一组端口构成了一个服务。
  WSDL在定义Web Sevices时使用了以下元素:
  Types: 数据类型的容器,他采用一些类型系统(比如常用的XSD)&&& Message: 通信消息的抽象类型化定义&&& Operation: 服务提供的操作的抽象化描述&&& Port Type: 一个或者多个端点支持的一组操作的抽象&&& Binding: 特定端口类型的具体协议和数据格式定义&&& Port:定义为binding和网络地址的关联的单个的端点&&& Service: 一组相关的端点的结合
  详细的WSDL定义和相关信息请参考:
  三 使用WSAD开发和发布一个Web Services
  1.我们用WSAD(Websphere Studio Application Developer)创建一个HelloWorld的java类,他只有一个方法,就是返回一个字符串HelloWorld。
  // HelloWorld.java
  public class HelloWorld {& public String getString(){&&& return "Hello World!";& }}
  2.将该类作为web service 发布到WASD带的测试环境的服务器上
  发布后我们可以在web工程的wsdl文件下面找到两个.wsdl文件: HelloWorld-service.wsdl, HelloWorld-binding.wsdl,HelloWorld-binding.wsdl文件中主要描述了这个web services的服务访问点,HelloWorld-binding.wsdl文件中则描述了这个web services的通信消息的数据结构、每个访问点支持的操作、特定的断口类型的具体协议和数据格式规范的绑定等信息,其具体的含义可以参考使用 WSDL 部署 Web 服务:
  第 1 部分(/index.shtml)一文 HelloWorld-service.wsdl的内容如下:<DEFINITIONS name="HelloWorldService" HelloWorld-service.wsdl? wsdl WForecast localhost: targetNamespace="&?xml version="1.0" encoding="UTF-8"?&&definitions name="HelloWorldService" targetNamespace=""& xmlns="" xmlns:tns=""& xmlns:binding=""& xmlns:soap=""&& &import namespace="" & location=""/&& &service name="HelloWorldService"&&&& &port name="HelloWorldPort" binding="binding:HelloWorldBinding"&&&&&& &soap:address location=//localhost:808/WForecast/servlet/rpcrouter"/&&&& &/port&& &/service&&/definitions&
  HelloWorld-binding.wsdl的内容如下:
  &?xml version="1.0" encoding="UTF-8"?&&definitions name="HelloWorldRemoteInterface" targetNamespace="" xmlns="" xmlns:tns="" xmlns:xsd="" xmlns:soap=""&& &message name="getString"&&&& &part name="result" type="xsd:string"/&& &/message&& &portType name="HelloWorldJavaPortType"&&&& &operation name="getString"&&&&&& &output name="getString" message="tns:getString"/&&&& &/operation&& &/portType&& &binding name="HelloWorldBinding" type="tns:HelloWorldJavaPortType"&&&& &soap:binding
transport=""/&&&& &operation name="getString"&&&&&& &soap:operation soapAction="" /&&&&&& &output name="getString"&&&&&&&& &soap:body use="encoded" encodingStyle="" namespace="urn:HelloWorld"/&&&&&& &/output&&&& &/operation&& &/binding&&/definitions&
  3. 启动WSAD中的测试服务器
  四 用VB编写客户端程序
  1.环境准备
  要使用SOAP消息访问Web Service消息。必须先下载MicroSoft公司提供的Soap ToolKit( -US/SoapToolkit20.exe)
  2.编写VB应用
  打开VB,创建一个新的工程
  其中的文本款用于显示返回的信息。
  3.编写SOAP消息
  <S:ENVELOPE &s:Envelope xmlns:s='' xmlns:xsi='-instance' xmlns:xsd=''&&s:Body&&m:getString xmlns:m='urn:HelloWorld'&&/m: getString &&/s:Body&&/s:Envelope&
  说明:
  其中用到的" getString"就是HelloWorld-binding.wsdl中定义的defines-& portType-&operation中定义的操作,而urn:HelloWorld则是HelloWorld-binding.wsdl中defines-& portType-&operation-&soap:body定义的namespace
  4.显示处理结果
  返回的结果也是一个XML消息,如下:
  &?xml version='1.0' encoding='UTF-8'?&&SOAP-ENV:Envelope xmlns:SOAP-ENV="" xmlns:xsi="-instance" xmlns:xsd=""&&SOAP-ENV:Body&&ns1:getStringResponse xmlns:ns1="urn:HelloWorld " SOAP-ENV:encodingStyle=""&&return xsi:type="xsd:string"&Hello World!&/return&&/ns1:getStringResponse&&/SOAP-ENV:Body&&/SOAP-ENV:Envelope&.&&& 我们需要使用ToolKit中的xml解析器对他进行解析才能获取我们需要的结果:
  x.LoadXml responseXml
  String s= x.getElementsByTagName("return").Item(0).Text
  Text1.text=s
  这样我们对web service的调用和处理过程就结束了,操作的结果图示如下:
  5.整个事件的处理过程如下:
  Private Sub Command1_Click()'定义一个http对象,一边向服务器发送post消息&&& Dim h As MSXML2.ServerXMLHTTP40& &&& '定义一个XML的文档对象,将手写的或者接受的XML内容转换成XML对象 Dim x as MSXML2.DOMDocument40&&
'初始化XML对象Set x = New MSXML2.DOMDocument40 '将手写的SOAP字符串转换为XML对象x.LoadXml "&s:Envelope xmlns:s='' xmlns:xsi='-instance' xmlns:xsd=''& &s:Body&&m:getString xmlns:m='urn:HelloQuery'&&/m:getString&&/s:Body& &/s:Envelope&" '初始化http对象Set h = New MSXML2.ServerXMLHTTP40'向指定的URL发送Post消息h.open "POST", //localhost:8080/WForecast/servlet/rpcrouter"h.send (x)While h.readyState && 4Wend'显示返回的XML信息Text1.Text = h.responseText'将返回的XML信息解析并且显示返回值x.LoadXml Text1.TextText1.Text = x.getElementsByTagName("return").Item(0).TextEnd Sub五 结束语
  本文给出一个VB程序调用java平台编写的Web Services的实例,并且结合实例详细的分析了使用SOAP如何在异种计算平台之间调用Web Services通信和共享信息的过程.通过上面的实践,我们对使用SOAP调用Web Services的机制有了全面的了解.使用其它语言来实现SOAP调用Web Services的过程和方法和上面的过程大同小异,一般可以参照上面的过程来实现.
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
职称考试题目
招生信息考研政治
网络安全安全设置工具使用手机安全
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&}

我要回帖

更多关于 立即下载按钮 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信