eb服務(wù)是.net中讓人激動(dòng)的部分,幾乎所有你能叫出名字的服務(wù)都有一些執(zhí)行服務(wù)器端代碼的機(jī)制:正巧每種語(yǔ)言都一個(gè)類庫(kù),因此在HTTP中生成一個(gè)GET請(qǐng)求變得很簡(jiǎn)單,解析出XML也有了些捷徑。
這種方案給你提供了一種跨平臺(tái),跨語(yǔ)言,跨廠商乃至一切的方法,只要它們都在INTERNET上或是以其他的方式相連,我們就可以在某個(gè)程序的代碼中調(diào)用另外一個(gè)完全不同的機(jī)器上的代碼。
這就是隱藏在WEB服務(wù)背后的基本觀念。使用類似于WEB服務(wù)描述語(yǔ)言(說 wizdle會(huì)更酷一些)開發(fā)有一定的標(biāo)準(zhǔn),它們涵蓋了這些技術(shù)細(xì)節(jié)。
如果你用Visual Studio.NET創(chuàng)建一個(gè)WEB服務(wù),它將滿足這些標(biāo)準(zhǔn)。如果你只是需要WEB服務(wù),而不管它是如何創(chuàng)建的,通過Visual Studio.NET,你會(huì)發(fā)現(xiàn)借用他人的代碼是如此簡(jiǎn)單。
編寫一個(gè)WEB服務(wù)
為了編寫一個(gè)WEB服務(wù),你至少要用一種方法寫一個(gè)類。這個(gè)類必須有WebService屬性,方法也要有WebMethod屬性。WEB方法能夠接受和返回任何可用的類型,包括你定義的對(duì)象實(shí)例。它們能做任何事情:維護(hù)數(shù)據(jù)庫(kù)數(shù)據(jù)的內(nèi)外一致性,做任何形式的運(yùn)算,甚至調(diào)用另外一個(gè)WEB方法來完成任務(wù)。
在Visual Studio.NET中創(chuàng)建一個(gè)新工程。在Visual C++工程模板中,選擇可管理的WEB服務(wù)。修改后是:
<@ WebService Class=Calculator.CalculatorService %>
我獲得了一個(gè)叫做HelloWorld()的方法,把它改成Add()很簡(jiǎn)單——我僅僅更改了.cpp文件和.h文件的名稱,改變了簽名以便它能夠接受浮點(diǎn)數(shù),然后加了些代碼以返回和。
類聲明的結(jié)束部分:
using <System.Web.Services.dll>
using namespace System;
using namespace System::Web;
using namespace System::Web::Services;
namespace Calculator
{
public __gc
class CalculatorService : public WebService
{
public:
[System::Web::Services::WebMethod]
double Add(double x, double y);
};
}
實(shí)現(xiàn)的部分:
#include "stdafx.h"
#include "Calculator.h"
#include "Global.asax.h"
namespace Calculator
{
double CalculatorService::Add(double x, double y)
{
return x + y;
}
}
#include <iostream>using namespace std;
int main (){
cout << "Content-type:text/html\r\n\r\n";
cout << "<html>\n";
cout << "<head>\n";
cout << "<title>Hello World - 第一個(gè) CGI 程序</title>\n";
cout << "</head>\n";
cout << "<body>\n";
cout << "<h2>Hello World! 這是我的第一個(gè) CGI 程序</h2>\n";
cout << "</body>\n";
cout << "</html>\n";
return 0;}
使用WEB服務(wù)
寫一個(gè)WEB服務(wù)相當(dāng)簡(jiǎn)單:你只需要一個(gè)類屬性,一個(gè)方法屬性和calculator.asmx文件,而這三個(gè)都由Visual Studio生成。
最簡(jiǎn)單的方法是鍵入U(xiǎn)RL到Calculator.asmx然后按回車。你會(huì)看到和以前運(yùn)行WEB服務(wù)工程時(shí)同樣的文件。點(diǎn)擊添加參數(shù)結(jié)束這個(gè)過程。
參數(shù)一旦添加,調(diào)用WEB服務(wù)就像調(diào)用任何C++類一樣。添加參數(shù)建立一個(gè)頭文件,這個(gè)文件在任何你想使用WEB服務(wù)時(shí)都可以包括進(jìn)去。
我們以往看到的頁(yè)面效果中,很多效果是需要JS搭配使用的,而今天在本文中,我將介紹如何使用純HTML打造屬于自己的實(shí)用效果。
使用Details和Summary標(biāo)簽可以創(chuàng)建沒有JavaScript代碼的可折疊手風(fēng)琴。
效果:
HTML
<details> <summary>Languages Used</summary> <p>This page was written in HTML and CSS. The CSS was compiled from SASS. Regardless, this could all be done in plain HTML and CSS</p> </details> <details> <summary>How it Works</summary> <p>Using the sibling and checked selectors, we can determine the styling of sibling elements based on the checked state of the checkbox input element. </p> </details>
CSS
* { font-size: 1rem; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; } details { border: 1px solid #aaa; border-radius: 4px; padding: .5em .5em 0; } summary { font-weight: bold; margin: -.5em -.5em 0; padding: .5em; } details[open] { padding: .5em; } details[open] summary { border-bottom: 1px solid #aaa; margin-bottom: .5em; }
瀏覽器支持:
該Meter和Progress 的元素標(biāo)簽的基礎(chǔ)上,你可以調(diào)整屬性呈現(xiàn)在屏幕上的進(jìn)度條。進(jìn)步有兩個(gè)屬性:max和value校準(zhǔn)進(jìn)度條,而Meter標(biāo)簽提供了更多的定制屬性。
效果:
HTML:
<label for="upload">Upload progress:</label> <meter id="upload" name="upload" min="0" max="100" low="33" high="66" optimum="80" value="50"> at 50/100 </meter> <hr/> <label for="file">File progress:</label> <progress id="file" max="100" value="70"> 70% </progress>
CSS:
body { margin: 50px; } label { padding-right: 10px; font-size: 1rem; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; }
瀏覽器支持:
在定義輸入元素時(shí),您要知道現(xiàn)代瀏覽器已經(jīng)允許您指定足夠多的輸入類型了。除了你應(yīng)該已經(jīng)知道text,email,password,number這些類型外,還有下面的這些。
效果:
HTML:
<label for="date">Enter date:</label> <input type="date" id="date"/> <label for="datetime">Enter date & time:</label> <input type="datetime-local" id="datetime"/> <label for="month">Enter month:</label> <input type="month" id="month"/> <label for="search">Search for:</label> <input type="search" id="search"/> <label for="tel">Enter Phone:</label> <input type="tel" id="tel">
CSS:
input, label {display:block; margin: 5px;} input {margin-bottom:18px;}
各種新輸入類型的MDN文檔非常廣泛且信息量很大。此外,檢查移動(dòng)輸入類型以了解用戶在移動(dòng)瀏覽器上時(shí)這些輸入元素的鍵盤行為。
video和audio元素雖然現(xiàn)在已經(jīng)成為HTML規(guī)范的一部分,但是你一樣會(huì)驚訝于你可以使用video標(biāo)簽在屏幕上渲染出一個(gè)體面的視頻播放器。
<video controls> <source src="https://addpipe.com/sample_vid/short.mp4" poster="https://addpipe.com/sample_vid/poster.png"> Sorry, your browser doesn't support embedded videos. </video
視頻標(biāo)記中值得注意的一些屬性包括:
瀏覽器支持:
當(dāng)你想顯示歷史編輯及校對(duì)的情況時(shí),blockquote,del和ins元素標(biāo)簽可以派上用場(chǎng)了。
示例:
HTML:
<blockquote> There is <del>nothing</del> <ins>no code</ins> either good or bad, but <del>thinking</del> <ins>running it</ins> makes it so. </blockquote>
CSS:
del { text-decoration: line-through; background-color: #fbb; color: #555; } ins { text-decoration: none; background-color: #d4fcbc; } blockquote { padding-left: 15px; line-height: 30px; border-left: 3px solid #d7d7db; font-size: 1rem; background: #eee; width: 200px; }
由于中英文引號(hào)的不同,使用<q>標(biāo)記可以讓您很好的解決這個(gè)問題,它可使你的內(nèi)容在大多數(shù)瀏覽器上更一致地呈現(xiàn)引號(hào)。
HTML:
Don Corleone said <q cite="https://www.imdb.com/title/tt0068646/quotes/qt0361877">I'm gonna make him an offer he can't refuse. Okay? I want you to leave it all to me. Go on, go back to the party.</q></p> <hr/> Don Corleone said <i>"I'm gonna make him an offer he can't refuse. Okay? I want you to leave it all to me. Go on, go back to the party."</i>
CSS:
body { margin: 50px; } q { font-style: italic; color: #000000bf; }
<kbd>標(biāo)簽應(yīng)該是一個(gè)少為人知的冷門標(biāo)簽,但這個(gè)能使用更好的方式來說明組合鍵的樣式。
HTML:
<p>I know that <kbd>CTRL</kbd>+<kbd>C</kbd> and <kbd>CTRL</kbd>+<kbd>V</kbd> a are like the most used key combinations</p>
CSS:
body { margin: 50px; } kbd { display: inline-block; margin: 0 .1em; padding: .1em .6em; font-size: 11px; line-height: 1.4; color: #242729; text-shadow: 0 1px 0 #FFF; background-color: #e1e3e5; border: 1px solid #adb3b9; border-radius: 3px; box-shadow: 0 1px 0 rgba(12,13,14,0.2), 0 0 0 2px #FFF inset; white-space: nowrap; }
使用figcaption pre code標(biāo)簽,您可以使用純HTML和CSS呈現(xiàn)出不錯(cuò)的代碼片段。
HTML:
<figure> <figcaption> Defining a css <code>color</code> property for a class called 'golden' </figcaption> <pre> <code> .golden { color: golden; } </code> </pre> </figure>
CSS:
pre { background-color: #ffbdbd; }
這篇文章也只是拋磚引玉,也許您也有更多私藏的使用技巧,不妨也貼出來分享給大家。
另外,如果您不僅僅限于以上的效率,希望有更完整的動(dòng)態(tài)功能。
例如:您希望在您的頁(yè)面中加入Excel功能,可以嘗試葡萄城的 純前端表格控件SpreadJS,再或者您希望為用戶提供更完備、更高效的前端UI控件,您也不妨可以試試 WijmoJS,相信它們都能為您的應(yīng)用增色不少。
關(guān)于葡萄城
賦能開發(fā)者!葡萄城公司成立于 1980 年,是全球領(lǐng)先的集開發(fā)工具、商業(yè)智能解決方案、管理系統(tǒng)設(shè)計(jì)工具于一身的軟件和服務(wù)提供商。西安葡萄城是其在中國(guó)的分支機(jī)構(gòu),面向全球市場(chǎng)提供軟件研發(fā)服務(wù),并為中國(guó)企業(yè)的信息化提供國(guó)際先進(jìn)的開發(fā)工具、軟件和研發(fā)咨詢服務(wù)。葡萄城的控件和軟件產(chǎn)品在國(guó)內(nèi)外屢獲殊榮,在全球被數(shù)十萬家企業(yè)、學(xué)校和政府機(jī)構(gòu)廣泛應(yīng)用。
ardio
aardio 小、輕、快,輕便利索,體積僅 6.5MB,學(xué)習(xí)和使用成本極低。aardio 雖然小,但提供了驚人數(shù)量的開源標(biāo)準(zhǔn)庫(kù)、擴(kuò)展庫(kù) - 這些庫(kù)基本都是由純 aardio 代碼實(shí)現(xiàn),涉及到了桌面編程的方方面面。aardio 中的所有庫(kù)基本都是由作者一個(gè)人編寫,所以擁有良好的一致性。aardio為 每一個(gè)庫(kù)的每一個(gè)接口函數(shù)都編寫了文檔,并且提供了大量的演示范例。aardio 使用流行的類 C 語(yǔ)法(非常接近 Javascript ),在設(shè)計(jì)中盡可能地避免嘩眾取寵、標(biāo)新立異,并且吸取和借鑒流行語(yǔ)言的習(xí)慣用法。不少 aardio 用戶都表示只要有一點(diǎn)編程基礎(chǔ),aardio 幾乎不用特別學(xué)習(xí),看幾天就會(huì)用了,僅僅是復(fù)制拼湊范例都能快速開發(fā)出不錯(cuò)的軟件。
aardio軟件開發(fā)界面
aardio 屬于易用性極強(qiáng)的動(dòng)態(tài)語(yǔ)言,但也是一種混合語(yǔ)言,可以罕見地、非常方便地操作靜態(tài)類型,因此可以直接調(diào)用 C語(yǔ)言、C++ 等等靜態(tài)語(yǔ)言的 API 接口函數(shù)( 不需要像VB那樣先聲明API ),aardio 可以支持非常多的API調(diào)用約定,例如 stdcall,cdecl,thiscall,fastcall,regparm(n) 等調(diào)用約定 aardio 都可以支持。因?yàn)?aardio 奇特的語(yǔ)言特性,aardio 的膠水能力極強(qiáng),在 aardio 中 可以非常方便地調(diào)用 C語(yǔ)言、C++、VB、C#、Java、Python、Javascript、Node.Js、Flash ActionScript、PHP、VBScript、NewLISP、AutoLISP、Delphi、FreeBASIC、Ruby、Rust、Go 語(yǔ)言、批處理 ...... 甚至可以直接嵌入?yún)R編機(jī)器碼并且轉(zhuǎn)換為普通的 aardio 函數(shù)。aardio 可直接調(diào)用、嵌入、交互的第三方編程語(yǔ)言數(shù)量非常多,實(shí)現(xiàn)這些第三方語(yǔ)言接口的功能模塊基本都是開源的(很多只用了極少的代碼)。
aardio擴(kuò)展庫(kù)
aardio 可以嵌入非常多的瀏覽器控件,例如系統(tǒng)自帶的 WebBrowser、WebView 控件、 以及 WebView2、WebKit、Electron、CEF3、HTMLayout、Sciter...... 甚至可以直接調(diào)用系統(tǒng)安裝的 Chrome、Chromium Edge 等瀏覽器寫軟件界面。而且在網(wǎng)頁(yè)中調(diào)用本地接口、以及 aardio 與瀏覽器的交互極其方便,例如直接調(diào)用 Javascript 函數(shù),并且在 Javascript 中直接回調(diào) aardio 函數(shù),不需要任何復(fù)雜的封裝和中間件,你甚至可以在 Javascript 中直接調(diào)用 WINAPI 函數(shù)。
aardio 不僅可以方便的使用 Web 技術(shù)編寫界面,也提供可視化開發(fā)工具,可以方便的地通過拖拉傳統(tǒng)控件創(chuàng)建程序。并且 aardio 提供強(qiáng)大的 plus控件(開源)可以方便的實(shí)現(xiàn)控件九宮格貼圖、透明貼圖、可以快速制作出漂亮的界面。而且aardio可以非常方便的生成獨(dú)立、綠色、無依賴的軟件,生成的軟件極小,通常比使用其他開發(fā)工具編寫的類似功能軟件小幾倍甚至是幾十倍。并且 aardio 生成的軟件可以完美兼容 XP,Vista,Win7,Win8,Win10...... 等所有流行桌面操作系統(tǒng)。
aardio新建工程
aardio 不僅僅可以開發(fā)桌面軟件,也可以用于開發(fā)網(wǎng)站,aardio 可以直接支持與 PHP 類似的 HTML 模板語(yǔ)法,提供語(yǔ)言級(jí)別的模板解析,一個(gè) aardio 源碼文件,可以放 aardio 源碼,也可以直接放 HTML,或者放 HTML,aardio 混合的模板代碼,aardio 都能完美支持。并且 aardio可以使用幾句代碼就可以創(chuàng)建一個(gè)微型嵌入式 HTTP 服務(wù)端(可以集成 WebSocket 服務(wù)端),因此 aardio 可以非常方便的為瀏覽器控件提供 HTTP 服務(wù)端,并且像寫網(wǎng)站那樣寫桌面客戶端軟件。
aardio使用說明
區(qū)別于其他動(dòng)態(tài)語(yǔ)言,aardio 可以非常方便地支持多線程,并且提供大量的多線程函數(shù)庫(kù)、演示范例等等。
aardio使用范例
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。