万星星@豌豆荚 欢迎加入我们
一个吃软饭的男人!!!!!我只想写程序####
微博:http://weibo.com/wanlianwen
posts - 172,  comments - 1253,  trackbacks - 0
虽然我不做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 万连文 阅读(1031) 评论(3)  编辑 收藏 引用 所属分类: .NET

FeedBack:
# re: 我这样算不算soa了??
2006-07-26 14:49 | 爱上小白
没有研究过SOA, 不过soap感觉挺难烦的. 倒不是说它有多难, 只是调用一下简单的服务, 就一大堆废话代码(跟CORBA的繁琐有得一比). 我还是喜欢XML-RPC之类比较轻量级的东西.

偏题了, 我认为楼主你的想法还是值得讨论. ajax并不是Google的专利, google只是推动者而已, 就算没有Google在, ajax也会流行. 因为Web页面应用程序会流行这是趋势, 比起桌面引用程序来, Web应用程序有自己的优势. 在Web应用程序中占有很大地位的ajax自然会流行.

SOA没有了解过, 不知道, 但是我认为新技术出来自然有其应用的场合, 如果确实没有多少内涵在, 自然会消失的.

不过我也极讨厌那么多的名词, 还好我也是用C++的, 除了写JSP页面外, JAVA用的不多, 也不必要去了解那么多JAVA的名词了. 呵呵.
  回复  更多评论
  
# re: 我这样算不算soa了??
2006-07-26 14:58 | LOGOS[offline]
connector,serializer,reader,这3个玩意还算直观而且不错.
不过如楼上所说....真是相当繁琐.  回复  更多评论
  
# re: 我这样算不算soa了??
2006-08-01 23:22 | dbsky
http://www.cppblog.com/wlwlxj/archive/2005/12/20/1914.aspx?Pending=true#Post

大哥,我在这里有个新留言,我怕你看不到,所以发到这来了,不好意思
  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


简历下载
联系我

<2006年7月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(66)

随笔分类

随笔档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜