C# 开发XML Web Service与Java开发WebService
一.web service基本概念
Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。
XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。
Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。
WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。
UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。
二.C#开发XML web service
简单举一个例子:在VS(任何版本)中新建一个网站,选择"ASP.NET Web服务"。将项目建好后,命名为Service。建好后你会发现VS已经将框架搭建好了

这时你运行这个程序,会在你的默认浏览器出现以下效果:

一个默认的HelloWorld链接。
然后就可以编写自己需要发布的函数了,在工程App_code文件下编写这些需要发布的函数,需要在函数前面添加声明[WebMethod]。写完以后就可以发布了。
打开asmx文件如下<%@ WebService Language="C#" CodeBehind="~/App_Code/Service.cs" class="Service" %>,是一些配置信息,就是通过这个配置信息调用Service.cs中的函数发布。
如果用IIS发布得需要安装IIS,不同版本的操作系统安装方法不同,百度一下有很多教程。IIS安装完成后,在默认网站点右键,打开属性,把主目录改为你写的这个工程的目录,并修改权限之类的,启动IIS就可以了。在浏览器的输入框中输入 http://服务器地址:端口/Service.asmx,就可以查看服务了。我写的服务效果如下:

点击期中一个函数:

点击调用,可以看到调用后的返回值:

三.用JAVA开发web service
用JAVA开发webservice的方式有很多种,我采用了最简单的一种,比较适合发布简单的服务。就是以servlet的方式将服务发布出去,为了方便起见,我将下载了一个Eclipse的Tomcat插件,将这个插件拷到eclipse的plugins文件夹下,打开Eclipse就可以看见tomcat的图标了,然后再windows->Preferences里配置一下tomcat 的版本与位置即可,这样eclipse就有些类似于Myeclipse了。
我建立了一个Tomcat project(装了上述插件才会有),在WEB-INF/src文件下添加类,我添加了两个类,一个MyService.java,一个WebServiceStarter.java。其中,MyService类用来写各种需要发布的服务,需要引进的包有:
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Endpoint;
import javax.jws.WebMethod;
还需要在这个类前声明:
@WebService(targetNamespace = "http://jdk.study.hermit.org/client")
@SOAPBinding(style = SOAPBinding.Style.RPC)
在类中,每个要发布的函数前面都要加上声明:
@WebMethod
写好这个类后,写一个servlet类:
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.xml.ws.Endpoint;
public class WebServiceStarter extends HttpServlet {
private static final long serialVersionUID = 5870534239093709659L;
public WebServiceStarter() {
super();
}
public void destroy() {
super.destroy();
}
public void init() throws ServletException {
System.out.println("准备启动服务");
Endpoint.publish("http://localhost:8080/MyService", new MyService());
System.out.println("服务启动完毕");
}
}
然后点击Tomcat小图标就可以在Tomcat下运行了,在浏览器中输入:http://127.0.0.1:8080/MyService?wsdl,看到以下结果:

发布成功!
C# 开发XML Web Service与Java开发WebService的更多相关文章
- 用Jersey为Android客户端开发Restful Web Service
平时在做Android客户端的时候经常要与服务器之间通信,客户端通过服务端提供的接口获取数据,然后再展示在客户端的界面上,作为Android开发者,我们平时更多的是关注客户端的开发,而对服务端开发的关 ...
- Web Service学习-CXF开发Web Service实例demo(一)
Web Service是什么? Web Service不是框架.更甚至不是一种技术. 而是一种跨平台,跨语言的规范 Web Service解决什么问题: 为了解决不同平台,不同语言所编写的应用之间怎样 ...
- Web Service简介与开发实例
简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的 ...
- 构建安全的Xml Web Service系列之wse之证书存储位置
原文:构建安全的Xml Web Service系列之wse之证书存储位置 我们在前几天对xml web service的安全性提出了一些建议,大家可以通过以下地址访问: 构建安全的Xml Web Se ...
- 构建安全的Xml Web Service系列之初探使用Soap头
原文:构建安全的Xml Web Service系列之初探使用Soap头 Xml Web Service 从诞生那天就说自己都么都么好,还津津乐道的说internet也会因此而进入一个新纪元,可5年多来 ...
- 构建安全的Xml Web Service系列之如何察看SoapMessage
原文:构建安全的Xml Web Service系列之如何察看SoapMessage 上一篇文章地址:构建安全的Xml Web Service系列一之初探使用Soap头 (5-22 12:53) ...
- 构建安全的Xml Web Service系列之wse之错误代码详解
原文:构建安全的Xml Web Service系列之wse之错误代码详解 WSE3.0现在还没有中文版的可以下载,使用英文版的过程中,难免会遇到各种各样的错误,而面对一堆毫无头绪的错误异常,常常会感到 ...
- 构建安全的Xml Web Service系列之SSL篇
原文:构建安全的Xml Web Service系列之SSL篇 首先介绍一下SSL, SSL 的英文全称是 "Secure Sockets Layer" ,中文名为 "安全 ...
- 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告
2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...
随机推荐
- [C++]访问控制与继承(public,protect,private) 有时间再整理!!!
http://www.cnblogs.com/chio/archive/2007/06/11/779408.html http://www.cnblogs.com/SelaSelah/archive/ ...
- org.apache.hadoop.hbase.TableExistsException: hbase:namespace
Problem is here : https://community.cloudera.com/t5/Storage-Random-Access-HDFS/HMaster-not-starting- ...
- ObjectMapper处理从远程获取的Object对象
微服务中从其他服务获取过来的对象,如果从Object强转为自定义的类型会报错,利用ObjectMapper转换. ObjectMapper mapper = new ObjectMapper(); D ...
- Docker 使用指南 (六)—— 使用 Docker 部署 Django 容器栈
版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/98 来源:腾云阁 https://www.qclou ...
- dedecms 模板文件不存在,无法解析文档"的终极各种解决办法
方法一:[此对应喜欢把模板文件使用".html"的格式,] /include/arc.archives.class.php 556行 if (!preg_match(&qu ...
- mysql 存储过程 demo
-- 查看存储过程 SHOW PROCEDURE STATUS; -- 显示pro存储过程的详细信息 SHOW CREATE PROCEDURE pro; -- 删除pro存储过程 DROP PROC ...
- 设置pictureBox的边框颜色
private void pictureBox2_Paint(object sender, PaintEventArgs e) { PictureBox p = (PictureBox)sender; ...
- 打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
随着HTML5 WebSocket技术的日益成熟与普及,我们可以借助WebSocket来更加方便地打通BS与CS -- 因为B/S中的WebSocket可以直接连接到C/S的服务端,并进行双向通信.如 ...
- css3实现超过两行文字,超出用三个点显示(兼容性不行,仅供学习)
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...
- jmeter笔记4
软件测试中使用JMeter测试Web应用 JMeter作用领域 JMeter可以用于测试静态或者动态资源的性能(文件.Servlets.Perl脚本.java对象.数据库和查询.ftp服务器或者其他 ...