我正在使用一个外部开源项目,它为我提供了使用它提供的UI创建的计算服务。
项目会自动创建web-service
个端点,我想通过我的应用程序使用这些端点。
我的问题是我无法干扰此过程。当我选择部署项目时,这是一个为我创建服务的黑盒子。
每个服务都有一堆不同的逻辑“私有方法”,这些方法在自动创建的wsdl
中公开。
如果我可以自己创建服务,我会创建一个带有一个名为Process的公开方法的接口,该方法将有一个通用输入请求参数和一个通用响应,如:
public GeneralResponse Process(GeneralRequest request);
我想在我的应用程序中创建一个通用的输出点,它传递两个参数:
1.Endpoint Url将请求发送到。
2.Generic request作为输入参数。
我正在使用C#
,使用服务的最简单方法就是添加service-reference
,创建client
并调用所需方法。
由于我不想为每个服务引用添加客户端,我将添加一个随机的客户端,更改客户端的端点地址并拍摄request
。
这种方法的问题在于生成的client
会暴露它的“私有方法”,我不希望团队中的其他程序员意外地调用它们。
底线:
有没有优雅的方法来创建Generic soap client
并使用字符串调用方法?与使用Invoke
时调用reflection
方法的方式类似?
这样的事情:
GenericRequest req = GetRequest();
SoapClient client = new SoapClient(endpointUrl);
GenericResponse res = client.Invoke("Process", req) as GenericResponse;