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

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

????
{
????????return?(a?*?b);
????}在IIS里面配置虛擬目錄,把新建的服務加到IIS里面,虛擬目錄叫WebService1。
C++客戶端調用乘法服務,代碼如下:
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));
}
^_^,莫非我會soa了??
累啊,不早了,還沒上床就開始美夢!今天一個朋友的問題還沒有解決掉,只能說抱歉!
我壓根不懂soa,希望不要笑話我,有誰明白的兄弟可以用實際一點的方法指點我,謝謝!
代碼下載。
posted on 2006-07-26 00:36
萬連文 閱讀(1216)
評論(3) 編輯 收藏 引用 所屬分類:
.NET