基礎拾遺------特性詳解javascript
基礎拾遺------反射詳解java
基礎拾遺------接口詳解ajax
基礎拾遺------泛型詳解redis
基礎拾遺-----依賴注入json
工做當中經常使用的服務接口有三個wcf,webservice和webapi.首先第一個接觸的就是webservice,今天大體總結一下。
是一種能夠接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通信技術。是:經過SOAP在 Web上提供的軟件服務,使用WSDL文件進行說明,並經過UDDI進行註冊。
面向短時間的臨時數據處理、面向萬維網絡,是Soap的基礎。它被設計的宗旨是描述數據(XML),而非顯示數據(HTML)。後面單獨博客進行詳細介紹。
是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>
WSDL 文件是一個 XML 文檔,用於說明一組 SOAP 消息以及如何交換這些消息。大多數狀況下由軟件自動生成和使用。
WSDL 描述了 Web服務的三個基本屬性:
(1)服務所提供的操做
(2)如何訪問服務
(3)服務位於何處(經過 URL 來肯定就 OK 了)
是一個主要針對Web服務供應商和使用者的新項目。在用戶可以調用Web服務以前,必須肯定這個服務內包含哪些商務方法,找到被調用的接口定義,還要在服 務端來編制軟件,UDDI是一種根據描述文檔來引導系統查找相應服務的機制。UDDI利用SOAP消息機制(標準的XML/HTTP)來發布,編輯,瀏覽 以及查找註冊信息。它採用XML格式來封裝各類不一樣類型的數據,而且發送到註冊中心或者由註冊中心來返回須要的數據。
上面的理論知識就算您不清楚,想要使用webservice仍是沒有任何難度的,不信您往下看。
建完這個工程,咱們將看到一個叫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 擴展名。
特性說完就要說咱們的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();
}
}
在要使用服務的項目處右擊添加服務引用
而後在程序當中直接實例化調用此方法便可:
//調用方法
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.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>