2009-09-17 67 views
2

我正在寻找添加一个Web服务接口到现有的服务器应用程序。在编译时不知道要公开的一组服务,并且可能会改变服务器的运行时间。Web服务接口

从技术角度来看,所有服务器/ Web服务端点都将在Windows上运行。

在我们的服务器应用程序中,用户可以选择将工作流注册为“可调用的Web服务”。这将创建定义此特定工作流服务的WSDL。

对于调用端点,我正在考虑接受入站Web服务请求的HttpModule,解开请求并将XML数据类型转换为我们的服务器应用程序“domain”,调用服务器并最终将服务器输出转回转换成XML以返回http连接。

这有道理吗?

欢迎提出评论意见。

回答

0

我最终创建了一个实现IHttpHandler接口的C#类。该实现提供了从我们的应用程序公开的服务的WSDL,并接受SOAP帖子来调用服务。最后,大部分工作继续将SOAP类型转换为我们的类型,反之亦然。

1

接受入站 Web服务请求的HTTP模块,解包 请求和 类型转换XML数据到我们的服务器应用 “域”,调用服务器终于 服务器输出转换回 XML用于返回http 连接。

这就是所有web服务框架所做的(例如Metro,Axis)。所以我看不到你的问题。你对这种方法有什么担忧?

客户端的缺点是,据我了解,您的服务的可用性可能随时间而改变。所以你应该考虑一种方法来告诉客户服务是否可用(除了因为它不在那里而导致超时错误以外)。 WS-ResourceLifetimeUUDI

+0

我认为标准WS引擎的额外部分是WSDL是动态的,新的可以频繁到达,因此需要某种动态部署工具。 – djna 2009-09-17 07:58:59

+0

我不确定我是否足够了解这个方法。我希望有人在某个地方已经接近这个问题,并能提供他们的经验。正如你所说的,现有的Web服务框架必须以这种方式工作,因此验证就足够了。 – TheArtTrooper 2009-09-17 10:42:40

2

实际上是编写自己的WS引擎。显然是可行的,但相当一部分工作要从头开始。我猜如果你找到一些开源的实现,那么适应它应该是可能的。

一个相当脏的替代,但一个我在另一个上下文见过施加,是去一个simgle WS接口

String call(String workkFlowName, String payload) 

有效载荷和响应是包含任何XML两个字符串。所以调用者需要为这些XML提供模式。从客户的角度来看,编码工作量并没有太大的差别。我认为您的编码工作将大大减少。

+0

我喜欢这样的想法,即客户可以使用他们所选环境的发现/代理生成工具来强制绑定特定服务。尽管如此,我仍然关注它,使服务器端更容易,并且专门的客户也不会有太多的困难。 – TheArtTrooper 2009-09-17 10:44:49