c# - 从同一 Web 服务调用 Web 方法

标签 c# .net web-services asmx

我需要为在特定 Web 服务中公开的一组 Web 方法编写一个包装器。将这个新的包装器方法粘贴到同一个服务中是有意义的,因为它影响的是同一类型的对象。

大多数这些 web 方法只是调用其他文件中的静态方法的瘦方法,这很好,但它们在这些静态方法调用之前也完成了一些安全逻辑。与其在我想包装的每个方法调用之前重新创建安全逻辑,不如从本地同一服务内部调用这些其他 Web 方法,或者这是一种不好的做法?

这是一个例子:

[WebMethod]
public int SmallMethod1(int a)
{
    //SecurityLogic
    return AnObject.StaticMethod1();
}

[WebMethod]
public int SmallMethod2(int b)
{
    //SecurityLogic
    return AnObject.StaticMethod2();
}

[WebMethod]
public int WrapperMethod(int c)
{
    return AnObject.StaticMethod1() + AnObject.StaticMethod2();
}

最佳答案

一般来说,您会希望尽可能清楚地将 Web 服务的公共(public)接口(interface)与实际实现分开,在您的示例中,您通过将它们封装在 AnObject 中来做到这一点,这允许对单独封装方法(这是一个大问题,尤其是对于网络方法)。

话虽如此,从测试的角度来看,我还是建议这样做:

[WebMethod]
public int WrapperMethod(int c)
{
    return AnObject.WrapperMethod(c)
}

这将允许您编写直接测试 WrapperMethod 的测试(封装在 AnObject 中),而不是尝试为 AnObject.StaticMethod1() + 重新创建测试AnObject.StaticMethod2() 在你的单元测试中——这很快就会变得困惑,因为现在你在两个不同的地方有相同的逻辑。

关于c# - 从同一 Web 服务调用 Web 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4797711/

相关文章:

c# - WebClient 在 Windows Phone 8.1 上不存在?下载网站的html

c# - 使用 Hololens 进行图像识别

web-services - REST API 设计 - 最佳实践 : Link existing child resource

iphone - 如何在 iphone objective c 中使用 webservice?

.net - .net 中的 Windows 服务无法解析 tns 服务名称

web-services - useOriginalwsdl=true 在 axis2 中不起作用

c# - Bot框架获取内嵌聊天控制页面的ServiceUrl

c# - 遍历聚合

c# - 仅当图像较新时如何从 HTTP 下载图像?

c# - 为什么要使用 Hashtable.Synchronized?