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