我需要为在特定 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/