2008-10-30 43 views
4

说明:这不是关于的用户代理调用页面,而是传统的ASP调用ASP.NET!在经典ASP中利用SOAP

我有从经典ASP到ASP.NET过渡中途的应用程序。有五百万行代码,因此一次完全重写所有内容都不太合理,或者考虑到绝大多数的经典ASP页面工作得很好,坦率地谨慎。我们翻译页面和功能,因为他们提出修改无论如何,不只是因为它是“酷”。

既然已经转换了大约一半的页面,我们已经将一些关键功能转移到了ASP.NET。我没有保留这个功能的旧版本(这意味着需要维护两个位置而不是一个),我一直在使用SOAP来公开这个功能。

呃......不是。相反,我们一直在使用我以前称之为“可怜的人的SOAP”的东西,尽管今天把它称为REST是很时髦的。我一直在使用ServerXMLHTTP联系目标页面,捆绑XML球并将其发布到ASP.NET端。结果我捆绑了一些XML并使用XPATH将其分解为变量。

所有这些工作都非常出色。然而,我一直在考虑内置ASP.NET SOAP特性,这似乎消除了为我的跨平台调用自定义编写登陆页面的需要......但是当我从经典ASP中看待消费SOAP时,大多数人建议使用看似折旧肥皂工具包。

问题是;你们有没有使用过这种设置的经验,如果有的话,有没有比定制REST页面或Soap Toolkit更好的方式来做到这一点?我认为能够更快速地公开更多ASP.NET功能将有助于迁移,但我不想让自己陷入不必要的Soap Toolkit等传统技术。

回答

1

我使用Prototype与许多经典的ASP页面进行AJAX调用。我更喜欢使用JSON而不是XML来处理数据层。与SOAP + XML相比,Ajax + JSON更轻更快,更容易处理。

+0

这不是关于客户端SOAP,而是传统ASP在同一台机器上调用ASP.NET SOAP。 – Godeke 2008-10-30 17:16:59

1

我可以用下面的代码要做到这一点,很明显,你需要改变一些事情,但希望这可以让你开始:

Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")       
xmlhttp.open "POST", soapServer, False 
xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8" 
xmlhttp.setRequestHeader "SOAPAction", char(34) & "WebPlatform.WebServices/ISessionTokenServiceV1/CreateSessionToken" & char(34) 

xmlhttp.send soapMessage 

的SOAPMessage将要发送的SOAP请求。 soapServer是Web服务的URL,例如:http://localhost:8000/WebServices/SampleService.svc/BASIC