从同一Web服务调用Web方法

5
我需要为一组特定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();
}
2个回答

4

一般而言,你应当尽可能清晰地将 Web 服务的公共接口与实际实现分离,例如,你可以使用 AnObject 进行封装,从而使得被封装的方法可分别进行单元测试(否则这将是一个巨大问题,特别是在 Web 方法中)。

话虽如此,从测试的角度来看,我建议采用以下做法:

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

这将允许您编写直接测试WrapperMethod(封装在AnObject中)的测试,而不是在单元测试中重新创建对AnObject.StaticMethod1() + AnObject.StaticMethod2()进行测试的逻辑 - 这很快会变得混乱,因为现在您有两个不同位置上相同的逻辑。

0

完全不是。封装那个逻辑的想法非常好。你可以有一个AnObject.WrapperStaticMethod()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接