虽然我不做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
万连文 阅读(1206)
评论(3) 编辑 收藏 引用 所属分类:
.NET