基础拾遗------webservice详解

基础拾遗

基础拾遗------特性详解

基础拾遗------webservice详解

基础拾遗------redis详解

基础拾遗------反射详解

基础拾遗------委托详解

基础拾遗------接口详解

基础拾遗------泛型详解

基础拾遗-----依赖注入

基础拾遗-----数据注解与验证

基础拾遗-----mongoDB操作

基础拾遗----RabbitMQ

前言

  工作当中常用的服务接口有三个wcf,webservice和webapi.首先第一个接触的就是webservice,今天大致总结一下。

1.webservice概念相关

1.1.Web Service也叫XML Web Service WebService

  是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在 Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

1.2.XML:(Extensible Markup Language)扩展型可标记语言。

  面向短期的临时数据处理、面向万维网络,是Soap的基础。它被设计的宗旨是描述数据(XML),而非显示数据(HTML)。后面单独博客进行详细介绍。

1.3.Soap:(Simple Object Access Protocol)简单对象存取协议。

  是XML Web Service 的通信协议。其指导理念是“唯一一个没有发明任何新技术的技术”。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的 调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"><soap:Header><m:Trans xmlns:m="http://www.w3schools.com/transaction/"soap:mustUnderstand="1">234</m:Trans>
</soap:Header><soap:Body><m:GetPrice xmlns:m="http://www.w3schools.com/prices"><m:Item>Apples</m:Item></m:GetPrice>
</soap:Body>
</soap:Envelope>

 

1.4.WSDL:(Web Services Description Language) Web服务描述语言

  WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。

  • Types - 数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)。
  • Message - 通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。
  • Operation - 对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。
  • PortType - 对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。
  • Binding - 特定端口类型的具体协议和数据格式规范的绑定。
  • Port - 定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点。
  • Service- 相关服务访问点的集合。WSDL文档元素的结构图
  • WSDL 描述了 Web服务的三个基本属性:

    (1)服务所提供的操作

    (2)如何访问服务

    (3)服务位于何处(通过 URL 来确定就 OK 了)

1.5.UDDI (Universal Description, Discovery, and Integration)

  是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服 务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览 以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

2. .net webservice

  上面的理论知识就算您不清楚,想要使用webservice还是没有任何难度的,不信您往下看。

2.1.创建webservice(vs2013)

  2.1.1.新建一个webservice项目(文件->新建->项目->C#->Web服务应用程序)

  建完这个工程,我们将看到一个叫ServiceDome.asmx的文件,就先常见webfrom一样它类似与aspx,我们直接打开cs代码文件即可,asmx文件至今没考虑过他有什么用.如果你什么都还没做的话,将看见一个被注释掉的helloworld的WebMethod,把注释去掉,在运行,你就可以得 到最简单的webservice运行实例了.点击"helloworld"将执行其方法.显然,这个函数对我们的意义只在于宏观的了解了下web服务的写 法.

  2.1.2.WebMethodAttribute详解

[WebMethod(Description="备注信息")]   public string HelloWorld()   {   return "Hello World";   } 

  如上,WebMethodAttribute此特性是表示可以从远程 Web 客户端调用该方法。

  其中WebMethod包括以下6个属性

  (1)Description: 

    是对webservice方法描述的信息。就像webservice方法的功能注释,可以让调用者看见的注释。

  (2).EnableSession:

    指示webservice否启动session标志,主要通过cookie完成的,默认false。

 

public static int i=0;
[WebMethod(EnableSession=true)]
public int Count()
{
i=i+1;return i;
} 

  如上Count()回和保存的session类似把信息保留下来。

  (3)MessageName:

    主要实现方法重载后的重命名.

[WebMethod]
public int Add(int i, int j) {
return i + j;
}
[WebMethod(MessageName="Add2")]
public int Add(int i, int j, int k) {
return i + j + k;
}
} 

  (4).TransactionOption:

    指示 XML Web services 方法的事务支持。

  (5).CacheDuration:

    Web支持输出高速缓存,这样webservice就不需要执行多遍,可以提高访问效率,而CacheDuration就是指定缓存时间的属性。

public static int i=0;
[WebMethod(EnableSession=true,CacheDuration=30)]
public int Count()
{
i=i+1;
return i;
}

  (6).BufferResponse:

    配置WebService方法是否等到响应被完全缓冲完,才发送信息给请求端。普通应用要等完全被缓冲完才被发送的!只有当已知 XML Web services 方法将大量数据返回到客户端时,才需要将 BufferResponse 设置为 false。对于少量数据,将 BufferResponse 设置为 true 可提高 XML Web services 的性能。当 BufferResponse 为 false 时,将对 XML Web services 方法禁用 SOAP 扩展名。

2.2.实现webservice

  特性说完就要说我们的webserviece服务接口的实现了,其实对于他的实现和我们实现一个类没有太大的区别。、

        [WebMethod]public string SynCardToDreams(int start, int end){try{DateTime begin = DateTime.Now;UserSignService userService = new UserSignService();bool ret = userService.SynChroCardToDreams(start, end);DateTime endTime = DateTime.Now;double total = (endTime - begin).TotalMinutes;string retmsg = ret ? "同步成功" : "同步失败";return "本次同步用时 " + total + "分钟;" + retmsg;}catch (Exception ex){return "同步失败:" + ex.ToString();}}

2.3.调用webservice

在要使用服务的项目处右击添加服务引用

然后在程序当中直接实例化调用此方法即可:

  //调用方法TestServiceReference.TestServiceSoapClient testService = new TestServiceReference.TestServiceSoapClient();int result = testService.Add(1, 2);

前端调用

<script type="text/javascript">$(function () {$.ajax({type: 'POST',url: 'TestService.asmx/ADD',data: '{ A: 4,B:4}',dataType: 'json',contentType: "application/json",success: function (data) {alert(data.d);}});});
</script>

 3.修改webservice服务地址:

3.1修改配置文件

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  <configSections>  </configSections>  <system.serviceModel>  <bindings>  <basicHttpBinding>  <binding name="PointStoreServiceSoap" />  </basicHttpBinding>  </bindings>  <client>  <endpoint address="http://localhost:25548/WebServiceDom.asmx"  binding="basicHttpBinding" bindingConfiguration="PointStoreServiceSoap"  contract="PointStoreService.PointStoreServiceSoap" name="PointStoreServiceSoap" />  </client>  </system.serviceModel>  
</configuration> 

 

转载于:https://www.cnblogs.com/kmonkeywyl/p/5726035.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java gc时自动收dump_Full GC分析:设置Java VM参数实现在Full GC前后自动生成Dump

本文讲解了如何设置JavaVM参数实现在FullGC前后自动生成Dump。共有三个VM参数需要设置&#xff1a;HeapDumpBeforeFullGC 实现在Full GC前dump。HeapDumpBeforeFullGC 实现在Full GC后dump。HeapDumpPath 设置Dump保存的路径设置这些参数的方法&#xff0c;这里总结了四种&…

jquery插件dataTables自增序号。

dataTables官网提供了一种方式&#xff0c;使用后没有达到预期效果&#xff08;js报错&#xff09;&#xff0c;没有深究原因。如果需要&#xff0c;可以按照下面的方式来。 1 $(#dataList).dataTable({2 "language": {3 "sProcessing&…

Maven使用详解

1、maven介绍&#xff1a; 2、pom.xml文件理解&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schema…

java web junit_如何使用junit测试javaweb工程

一:创建一个测试类,建议将测试类单独放在一个包中(在 maven 项目里有测试类专门的存放位置),新建一个Junit Test Case类,下一步 测试类的命名建议是你将要测试的类名Test,然后点 Browse, 你可以选择要进行测试的类(一般选择 Service, 因为 Service 关心的是业务需求),用这种方式…

java代码_Java 代码实现排序算法

阅读本文约需要8分钟 大家好&#xff0c;我是你们的导师&#xff0c;我每天都会在这里给大家分享一些干货内容(当然了&#xff0c;周末也要允许老师休息一下哈)。上次老师跟大家分享了下SpringBootGradle MyBatisPlus3.x搭建企业级的后台分离框架的相关知识&#xff0c;今天跟大…

优秀的开源项目C_适合提高C/C++、网络编程能力的开源项目!不要错过,赶紧收藏...

我们学习每一个编程语言都是有一个项目实战的过程&#xff0c;而对于开发类的编程语言&#xff0c;除了适当的做项目程序外&#xff0c;学习了解其他的开源项目更是一个关键&#xff0c;就比如我们的C/C编程语言的学习。前阵子有一个小伙伴就问到我&#xff0c;我学好C/C基础后…

Opencv分水岭算法——watershed自动图像分割用法

分水岭算法是一种图像区域分割法&#xff0c;在分割的过程中&#xff0c;它会把跟临近像素间的相似性作为重要的参考依据&#xff0c;从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓&#xff0c;封闭性是分水岭算法的一个重要特征。 其他图像分割…

Java Annotation

一、了解注释注释是java1.5 jdk这后引入的特性。Java库自己带的注释有Deprecated, Overwrite等。注释是加在类&#xff0c;方法&#xff0c;变量等上的一种标记。并且&#xff0c;可以通过javaj反射操作把这个标记取出来。主要用途是用于对方法&#xff0c;变量&#xff0c;类等…

pycharm显示全部数据_PyCharm第一次安装及使用教程

pycharm简介PyCharm是一种Python IDE&#xff0c;带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#xff0c;比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外&#xff0c;该IDE提供了一些高级功能&#xff0c;以用…

笔记本win10玩红警黑屏_【买笔记本电脑差评真的有参考意义?】

每次推荐笔记本电脑都会遇到一个重要的问题就是&#xff1a;“大多数消费者会下意识的去看京东评论&#xff0c;参考买的人是怎么说的&#xff0c;往往会出现不懂电脑的人继续误导不懂的人&#xff0c;导致越来越多的人被误导”本文聊聊关于京东评论究竟有没有参考价值。1&…

java前端接收回显图片_图片上传并回显后端篇

图片上传并回显后端篇我们先看一下效果继上一篇的图片上传和回显&#xff0c;我们来实战一下图片上传的整个过程&#xff0c;今天我们将打通前后端&#xff0c;我们来真实的了解一下&#xff0c;我们上传的文件&#xff0c;是以什么样的形式上传到服务器&#xff0c;难道也是一…

zip直链生成网站_手把手教你如何用飞桨自动生成二次元人物头像

【飞桨开发者说】李思佑&#xff0c;昆明理工大学信息与计算科学大四本科生&#xff1b;2018年和2019年两次获得全国大学生数学建模比赛国家二等奖&#xff1b;2020年美国数学建模比赛获M奖。指导老师&#xff1a;昆明理工大学理学院朱志宁想画出独一无二的动漫头像吗&#xff…

Gradle入门到实战(一) — 全面了解Gradle

声明&#xff1a;本文来自汪磊的博客&#xff0c;转载请注明出处 可关注个人公众号&#xff0c;那里更新更及时&#xff0c;阅读体验更好&#xff1a; 友情提示由于文章是从个人公众号拷贝过来整理的&#xff0c;发现图片没有正常显示&#xff0c;没关注公众号的同学可通过如下…

javaweb 图书管理系统完整代码_看一名Java开发人员以红队思维五分钟审计一套代码(续)...

前言上篇文章的发布引起了很多读者的浏览&#xff0c;有很多读者也催更希望读到续集&#xff0c;作者也收获到读者的鼓励&#xff0c;说明这条路线对大家有帮助&#xff0c;是有意义的。所以&#xff0c;今天作者将继续阐述在审计Java代码时的思路。概述上篇文章所讲的SQL注入和…

爱立信数据分析解决方案抓住物联网发展机遇

爱立信在2016年1月6日至9日于美国拉斯维加斯举办的国际消费电子展&#xff08;CES&#xff09;上推出“用户和物联网数据分析”解决方案。该解决方案将能帮助运营商提高对用户和物联网终端的内部管理效率&#xff0c;同时探索跨越多个垂直领域的新型物联网应用。 用户和物联网数…

JAVA实现在面板中添加图表_Java 创建PowerPoint图表并为其添加趋势线

图表&#xff0c;是指将既得数据用图形的方式表示出来。在前文中我们介绍过如何使用Java程序来为Excel文档创建图表的方法。本文将通过使用Java程序来演示如何创建PowerPoint图表及为图表添加趋势线。趋势线的运用能够显示数据的变化趋势&#xff0c;同时能够帮助预测数据的未来…

idea设置中文界面_《英雄联盟手游》设置界面中文翻译图分享 外服汉化界面一览...

导读 英雄联盟手游目前以及正式上线了&#xff0c;不过现在的话是没有中文版的&#xff0c;只有外服&#xff0c;所有很多地方是看不懂的&#xff0c;也不明白的&#xff0c;这样的话就需要翻译了&#xff0c;具体要怎么设置会比较&#xff0c;相关的步骤是什么呢&#xff1f;下…

安卓10不支持qmc解码_官宣:安卓10已发布!21款手机已适配,小米华为率先支持...

随着今天凌晨谷歌 I/O 大会的召开&#xff0c;Android Q 也就是安卓10正式官宣&#xff0c;新版的安卓10加入了诸多新手势&#xff0c;从 Home 键设计上看&#xff0c;安卓10 的新版手势很大程度上有疑似借鉴 iOS 的手势&#xff0c;底部一个长条&#xff0c;作为 Home 用来返回…

linux系统编程之进程(七):system()函数使用【转】

本文转载自&#xff1a;http://www.cnblogs.com/mickole/p/3187974.html 一&#xff0c;system()理解 功能&#xff1a;system()函数调用“/bin/sh -c command”执行特定的命令&#xff0c;阻塞当前进程直到command命令执行完毕 原型&#xff1a; int system(const char *comma…

汉王云名片识别(SM)组件开发详解

大家好&#xff0c;最近在DeviceOne平台上做了一个汉王云名片识别的功能组件。下面把我开发过程给大家做一个分享&#xff0c;希望可以帮助到大家。 下面我把我的思路给大家讲解一下。1.找到我要集成的sdk&#xff0c;也就是汉王云名片的sdk下载&#xff08;android和ios&#…