基础拾遗------webservice详解
基礎(chǔ)拾遺
基礎(chǔ)拾遺------特性詳解
基礎(chǔ)拾遺------webservice詳解
基礎(chǔ)拾遺------redis詳解
基礎(chǔ)拾遺------反射詳解
基礎(chǔ)拾遺------委托詳解
基礎(chǔ)拾遺------接口詳解
基礎(chǔ)拾遺------泛型詳解
基礎(chǔ)拾遺-----依賴注入
基礎(chǔ)拾遺-----數(shù)據(jù)注解與驗(yàn)證
基礎(chǔ)拾遺-----mongoDB操作
基礎(chǔ)拾遺----RabbitMQ
前言
工作當(dāng)中常用的服務(wù)接口有三個(gè)wcf,webservice和webapi.首先第一個(gè)接觸的就是webservice,今天大致總結(jié)一下。
1.webservice概念相關(guān)
1.1.Web Service也叫XML Web Service WebService
是一種可以接收從Internet或者Intranet上的其它系統(tǒng)中傳遞過(guò)來(lái)的請(qǐng)求,輕量級(jí)的獨(dú)立的通訊技術(shù)。是:通過(guò)SOAP在 Web上提供的軟件服務(wù),使用WSDL文件進(jìn)行說(shuō)明,并通過(guò)UDDI進(jìn)行注冊(cè)。
1.2.XML:(Extensible Markup Language)擴(kuò)展型可標(biāo)記語(yǔ)言。
面向短期的臨時(shí)數(shù)據(jù)處理、面向萬(wàn)維網(wǎng)絡(luò),是Soap的基礎(chǔ)。它被設(shè)計(jì)的宗旨是描述數(shù)據(jù)(XML),而非顯示數(shù)據(jù)(HTML)。后面單獨(dú)博客進(jìn)行詳細(xì)介紹。
1.3.Soap:(Simple Object Access Protocol)簡(jiǎn)單對(duì)象存取協(xié)議。
是XML Web Service 的通信協(xié)議。其指導(dǎo)理念是“唯一一個(gè)沒(méi)有發(fā)明任何新技術(shù)的技術(shù)”。當(dāng)用戶通過(guò)UDDI找到你的WSDL描述文檔后,他通過(guò)可以SOAP調(diào)用你建立的Web服務(wù)中的一個(gè)或多個(gè)操作。SOAP是XML文檔形式的 調(diào)用方法的規(guī)范,它可以支持不同的底層接口,像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服務(wù)描述語(yǔ)言
WSDL 文件是一個(gè) XML 文檔,用于說(shuō)明一組 SOAP 消息以及如何交換這些消息。大多數(shù)情況下由軟件自動(dòng)生成和使用。
- Types - 數(shù)據(jù)類型定義的容器,它使用某種類型系統(tǒng)(一般地使用XML Schema中的類型系統(tǒng))。
- Message - 通信消息的數(shù)據(jù)結(jié)構(gòu)的抽象類型化定義。使用Types所定義的類型來(lái)定義整個(gè)消息的數(shù)據(jù)結(jié)構(gòu)。
- Operation - 對(duì)服務(wù)中所支持的操作的抽象描述,一般單個(gè)Operation描述了一個(gè)訪問(wèn)入口的請(qǐng)求/響應(yīng)消息對(duì)。
- PortType - 對(duì)于某個(gè)訪問(wèn)入口點(diǎn)類型所支持的操作的抽象集合,這些操作可以由一個(gè)或多個(gè)服務(wù)訪問(wèn)點(diǎn)來(lái)支持。
- Binding - 特定端口類型的具體協(xié)議和數(shù)據(jù)格式規(guī)范的綁定。
- Port - 定義為協(xié)議/數(shù)據(jù)格式綁定與具體Web訪問(wèn)地址組合的單個(gè)服務(wù)訪問(wèn)點(diǎn)。
- Service- 相關(guān)服務(wù)訪問(wèn)點(diǎn)的集合。
-
WSDL?描述了 Web服務(wù)的三個(gè)基本屬性:
(1)服務(wù)所提供的操作
(2)如何訪問(wèn)服務(wù)
(3)服務(wù)位于何處(通過(guò) URL 來(lái)確定就 OK 了)
1.5.UDDI (Universal Description, Discovery, and Integration)
是一個(gè)主要針對(duì)Web服務(wù)供應(yīng)商和使用者的新項(xiàng)目。在用戶能夠調(diào)用Web服務(wù)之前,必須確定這個(gè)服務(wù)內(nèi)包含哪些商務(wù)方法,找到被調(diào)用的接口定義,還要在服 務(wù)端來(lái)編制軟件,UDDI是一種根據(jù)描述文檔來(lái)引導(dǎo)系統(tǒng)查找相應(yīng)服務(wù)的機(jī)制。UDDI利用SOAP消息機(jī)制(標(biāo)準(zhǔn)的XML/HTTP)來(lái)發(fā)布,編輯,瀏覽 以及查找注冊(cè)信息。它采用XML格式來(lái)封裝各種不同類型的數(shù)據(jù),并且發(fā)送到注冊(cè)中心或者由注冊(cè)中心來(lái)返回需要的數(shù)據(jù)。
2. .net webservice
上面的理論知識(shí)就算您不清楚,想要使用webservice還是沒(méi)有任何難度的,不信您往下看。
2.1.創(chuàng)建webservice(vs2013)
2.1.1.新建一個(gè)webservice項(xiàng)目(文件->新建->項(xiàng)目->C#->Web服務(wù)應(yīng)用程序)
建完這個(gè)工程,我們將看到一個(gè)叫ServiceDome.asmx的文件,就先常見(jiàn)webfrom一樣它類似與aspx,我們直接打開(kāi)cs代碼文件即可,asmx文件至今沒(méi)考慮過(guò)他有什么用.如果你什么都還沒(méi)做的話,將看見(jiàn)一個(gè)被注釋掉的helloworld的WebMethod,把注釋去掉,在運(yùn)行,你就可以得 到最簡(jiǎn)單的webservice運(yùn)行實(shí)例了.點(diǎn)擊"helloworld"將執(zhí)行其方法.顯然,這個(gè)函數(shù)對(duì)我們的意義只在于宏觀的了解了下web服務(wù)的寫(xiě) 法.
2.1.2.WebMethodAttribute詳解
[WebMethod(Description="備注信息")] public string HelloWorld() { return "Hello World"; }如上,WebMethodAttribute此特性是表示可以從遠(yuǎn)程 Web 客戶端調(diào)用該方法。
其中WebMethod包括以下6個(gè)屬性
(1)Description:?
是對(duì)webservice方法描述的信息。就像webservice方法的功能注釋,可以讓調(diào)用者看見(jiàn)的注釋。
(2).EnableSession:
指示webservice否啟動(dòng)session標(biāo)志,主要通過(guò)cookie完成的,默認(rèn)false。
?
public static int i=0; [WebMethod(EnableSession=true)] public int Count() { i=i+1;return i; }如上Count()回和保存的session類似把信息保留下來(lái)。
(3)MessageName:
主要實(shí)現(xiàn)方法重載后的重命名.
[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 方法的事務(wù)支持。
(5).CacheDuration:
Web支持輸出高速緩存,這樣webservice就不需要執(zhí)行多遍,可以提高訪問(wèn)效率,而CacheDuration就是指定緩存時(shí)間的屬性。
public static int i=0; [WebMethod(EnableSession=true,CacheDuration=30)] public int Count() { i=i+1; return i; }(6).BufferResponse:
配置WebService方法是否等到響應(yīng)被完全緩沖完,才發(fā)送信息給請(qǐng)求端。普通應(yīng)用要等完全被緩沖完才被發(fā)送的!只有當(dāng)已知 XML Web services 方法將大量數(shù)據(jù)返回到客戶端時(shí),才需要將 BufferResponse 設(shè)置為 false。對(duì)于少量數(shù)據(jù),將 BufferResponse 設(shè)置為 true 可提高 XML Web services 的性能。當(dāng) BufferResponse 為 false 時(shí),將對(duì) XML Web services 方法禁用 SOAP 擴(kuò)展名。
2.2.實(shí)現(xiàn)webservice
特性說(shuō)完就要說(shuō)我們的webserviece服務(wù)接口的實(shí)現(xiàn)了,其實(shí)對(duì)于他的實(shí)現(xiàn)和我們實(shí)現(xiàn)一個(gè)類沒(méi)有太大的區(qū)別。、
[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 "本次同步用時(shí) " + total + "分鐘;" + retmsg;}catch (Exception ex){return "同步失敗:" + ex.ToString();}}2.3.調(diào)用webservice
在要使用服務(wù)的項(xiàng)目處右擊添加服務(wù)引用
然后在程序當(dāng)中直接實(shí)例化調(diào)用此方法即可:
//調(diào)用方法TestServiceReference.TestServiceSoapClient testService = new TestServiceReference.TestServiceSoapClient();int result = testService.Add(1, 2);前端調(diào)用
<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服務(wù)地址:
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>?
轉(zhuǎn)載于:https://www.cnblogs.com/kmonkeywyl/p/5726035.html
總結(jié)
以上是生活随笔為你收集整理的基础拾遗------webservice详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 华为 9
- 下一篇: jquery插件dataTables自增