Web引用是否可以从另一个类中公开?

时间:2012-04-20 02:59:42

标签: c# web-services asmx

问题很简单..

我们通常使用Web引用来逐字地使用Web服务(visual studio)。但是,我的问题是另一种方式。我需要从c#类调用特定的Web服务,以使其他人可以使用Web服务。

2 个答案:

答案 0 :(得分:3)

首先,如果您有选择,您应该在服务器和客户端上使用WCF。如果由于某种原因无法在服务器上使用它,那么至少在客户端上使用“添加服务引用”而不是“添加Web引用”来使用它。 “添加Web引用”是传统ASMX技术的一部分,不应该用于新开发。

其次,当然您可以创建一个单独的类库,并在该库中使用“添加服务引用”。然后,您可以编写一个具有调用该服务的公共方法的类。此类库的用户将调用您的公共方法,而不会直接调用该服务。

答案 1 :(得分:1)

您可以通过在VS中展开Web引用来提取Web引用的C#代码类(如果我记得很清楚,则显示隐藏文件)。 您应该找到一个Reference.cs文件,它是您的Web服务的代理客户端代码。

它包含调用WS所需的一切。您可以将其复制到其他地方,将其包含在另一个项目中,更改其命名空间/代码等。从长远来看,如果相应的WS发展,维护此文件将是一件痛苦的事。

无论如何,如果您有选择,您应该遵循@JohnSaunders关于WCF的建议