Я подключаюсь к двум SAP WS / SOAP, которые имеют одинаковую структуру (одинаковый ввод, одинаковый вывод), но разные конечные точки и имена методов.
Я импортировал оба дескриптора WS в качестве веб-ссылки и теперь я использую их примерно так:
bool pBG = true;
sapWSBG.ZbgPogon inputBG = new sapWSBG.ZbgPogon();
sapWSBG.ZbgPogonResponse responseBG = new sapWSBG.ZbgPogonResponse();
sapWSRO.ZroPogon inputRO = new sapWSRO.ZroPogon();
sapWSRO.ZroPogonResponse responseRO = new sapWSRO.ZroPogonResponse();
if (pBG)
{
//set input params
inputBG.IntHeader = getHeader((string)pPlant);
inputBG.Pogon = (String)pPlant;
LogXml(inputBG, "input");
//make the call
responseBG = clientBG.ZbgPogon(inputBG);
LogXml(responseBG, "response");
}
else
{
//set input params
inputRO.IntHeader = getHeader((string)pPlant);
inputRO.Pogon = (String)pPlant;
LogXml(inputRO, "input");
//make the call
responseRO = clientRO.ZroPogon(inputRO);
LogXml(responseRO, "response");
}
//process data in response(s)
...
Чтобы не создавать две отдельные сборки и не дублировать один и тот же код, есть ли способ сделать только запрос к каждому серверу, но сохраняя остальной код такой же?