雖然我不做web,但是在年初已經(jīng)感到ajax會(huì)在今年的火爆,曾告訴過幾個(gè)朋友,希望他們可以了解。ajax之所以風(fēng)靡,是因?yàn)楣雀柽@個(gè)巨頭的潛在影響導(dǎo)致。有人說這種技術(shù)在2002年就有了,javascript+xml。個(gè)人以為新瓶裝老酒,不過冠以新名詞,價(jià)值馬上不菲。
滿心歡喜自詡有見地,誰知道ibm又來個(gè)soa,搞得學(xué)生們又是大賽,又是培訓(xùn),不亦樂乎!再加上媒體炒做一下,一下子就成了未來開發(fā)潮流,架構(gòu)師含金量象征。
我是學(xué)C++的,光微軟提出來的新概念都搞不完,各個(gè)巨頭都來創(chuàng)名詞,眼花繚亂,滿城風(fēng)雨,稍不留神就落伍了,幸虧自己還年輕。新技術(shù)尤其是被鼓的響當(dāng)當(dāng)?shù)哪阏f不學(xué)吧,總覺得不甘心;學(xué)習(xí)吧,,樣樣學(xué)不精通。真是麻煩!
《人月神話》應(yīng)該是軟件工程必修課吧,沒有銀彈的概念不知道現(xiàn)在還是不是適用!總怕soa會(huì)把天狼射下來,擔(dān)憂啊!
說句實(shí)在話我真沒有時(shí)間去學(xué)習(xí)soa,我只不過來了一個(gè)邏輯推理!OO即面向?qū)ο螅伊私饩褪菍戭愓{(diào)用;CO就是面向組件,我了解就是寫組件調(diào)用;SO就是面向服務(wù),莫非就是寫服務(wù)調(diào)用??還好我知道如何寫一個(gè)加法的WebService。
下面是我的測(cè)試:
開發(fā)包:soap toolkit 3.0
web服務(wù)部署:xp+IIS
web服務(wù)語言:C#
客戶端代碼:本地Win32 Console
開發(fā)環(huán)境:VS2005中文盜版
使用C#建立ASP.NET的web服務(wù),添加兩個(gè)運(yùn)算服務(wù):
[WebMethod]

????public?int?Add(int?a,?int?b)?
{
????????return?(a?+?b);
????}
????[WebMethod]
????public?int?Multiply(int?a,?int?b)

????
{
????????return?(a?*?b);
????}在IIS里面配置虛擬目錄,把新建的服務(wù)加到IIS里面,虛擬目錄叫WebService1。
C++客戶端調(diào)用乘法服務(wù),代碼如下:
void?Multiply()


{
????ISoapSerializerPtr????pSerializer????????=?NULL;
????ISoapReaderPtr????????pReader????????????=?NULL;
????ISoapConnectorPtr????pConnector????????=?NULL;
????HRESULT????????????????hr????????????????=?NOERROR;
????BSTR????????????????bstrRet;
????hr?=?pConnector.CreateInstance(__uuidof(HttpConnector30));
????pConnector->Property["EndPointURL"]?=?"http://localhost/WebService1/Service.asmx?wsdl";
????hr?=?pConnector->Connect();
????pConnector->Property["SoapAction"]?=?"http://tempuri.org/Multiply";
????hr?=?pConnector->BeginMessage();

????hr?=?pSerializer.CreateInstance(__uuidof(SoapSerializer30));
????pSerializer->Init(_variant_t((IUnknown*)pConnector->InputStream));
????hr?=?pSerializer->StartEnvelope("",?"",?"");
????hr?=?pSerializer->StartBody("");
????hr?=?pSerializer->StartElement("Multiply",?"http://tempuri.org/",?"",?"");
????hr?=?pSerializer->StartElement("a",?"http://tempuri.org/",?"",?"");
????hr?=?pSerializer->WriteString("5");
????hr?=?pSerializer->EndElement();
????hr?=?pSerializer->StartElement("b",?"http://tempuri.org/",?"",?"");
????hr?=?pSerializer->WriteString("10");
????hr?=?pSerializer->EndElement();
????hr?=?pSerializer->EndElement();
????hr?=?pSerializer->EndBody();
????hr?=?pSerializer->EndEnvelope();

????hr?=?pReader.CreateInstance(__uuidof(SoapReader30));
????hr?=?pReader->Load(_variant_t((IUnknown*)pConnector->OutputStream),?"");
????pReader->RpcResult->get_text(&bstrRet);
????printf("Answer:?%s\n",CW2A(bstrRet));
}
^_^,莫非我會(huì)soa了??
累啊,不早了,還沒上床就開始美夢(mèng)!今天一個(gè)朋友的問題還沒有解決掉,只能說抱歉!
我壓根不懂soa,希望不要笑話我,有誰明白的兄弟可以用實(shí)際一點(diǎn)的方法指點(diǎn)我,謝謝!
代碼下載。
posted on 2006-07-26 00:36
萬連文 閱讀(1224)
評(píng)論(3) 編輯 收藏 引用 所屬分類:
.NET