У нас есть система EPOS, встроенная в VB6. Клиент использует Microsoft Dynamics AX в качестве системы CRM. Сторонние разработчики создали реализацию AX для нашего клиента, и они представили набор веб-служб WCF, которые мы должны использовать для синхронизации данных между EPOS и AX CRM. Зная, что у VB6 будут проблемы с вызовом служб WCF, я создал следующие компоненты для обработки связи между EPOS и AX CRM.
VB6 EPOS, который вызывает ->
1) Оболочка VB6 DLL, которая вызывает ... ->
2) .NET (3.5) Оболочка DLL Callable Proxy COM, которая вызывает ... ->
3) .NET (3.5) Обработчик веб-сервисов (где фактически вызываются веб-сервисы) ->
Microsoft Dynamics AX CRM.
Я создал тестовое консольное приложение в Vb.NET для имитации вызовов из VB6, чтобы помочь с отладкой, чтобы тестовое консольное приложение вызывало компонент 2.
При этом я получал следующее исключение: -
"(не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт 'X' в разделе конфигурации клиента servicemodel. Это может быть связано с тем, что для вашего приложения не найден файл конфигурации, или потому что элемент конечной точки, соответствующий этому контракту, не найден в клиентский элемент.) "
Я погуглил и обнаружил, что мне нужно скопировать раздел привязок и конечных точек из app.config компонента 3 в новый app.config для моего приложения Test Console. Я не знаю WCF, и сейчас у меня нет времени, чтобы действительно изучить его до такой степени, что я понимаю, почему это исправило эту ошибку.
Теперь я пытаюсь вызвать службы из EPOS VB6, и эта ошибка снова появляется. Поэтому я добавил app.config к Компоненту 2, думая, что, поскольку Компонент 2 является первым компонентом .NET (3.5) в цепочке, именно туда должно идти объявление конечной точки, но нет. Ошибка все еще появляется.
У кого-нибудь есть идеи? Любые герои программирования, которые могут пролить свет на это для простого человека, пожалуйста ??? Пожалуйста, не спрашивайте, почему мы не переписываем EPOS. Мы будем. просто еще нет. Там более 3 миллионов строк кода для спагетти, и я работаю над ним только 8 месяцев !!!
Кроме того, не нарушает ли этот сценарий одно из золотых правил ООП, то есть инкапсуляция. Зачем моему VB6 EPOS знать, какие конечные точки Компонент 3 использует для доступа к службе WCF ???