VB6で構築されたEPOSシステムがあります。クライアントは Microsoft Dynamics AX を CRM システムとして使用しています。サード パーティがクライアント用の AX 実装を作成し、EPOS と AX CRM の間でデータを同期するために使用する必要がある一連の WCF Web サービスを公開しました。VB6 では WCF サービスの呼び出しに問題があることがわかっていたので、EPOS と AX CRM 間の通信を処理する次のコンポーネントを作成しました。
呼び出す VB6 EPOS -->
1) 呼び出す VB6 DLL ラッパー... -->
2) 呼び出す .NET(3.5) COM Callable Proxy DLL ラッパー... -->
3) .NET(3.5) Web サービス ハンドラ(Web サービスが実際に呼び出される場所) -->
Microsoft Dynamics AX CRM。
テスト コンソール アプリがコンポーネント 2 を呼び出すように、VB6 からの呼び出しをシミュレートしてデバッグを支援するために、Vb.NET でテスト コンソール アプリを作成しました。
これを行っている間、次の例外が発生しました:-
"(servicemodel クライアント構成セクションでコントラクト 'X' を参照するデフォルトのエンドポイント要素が見つかりませんでした。これは、アプリケーションの構成ファイルが見つからなかったか、このコントラクトに一致するエンドポイント要素がクライアント要素で見つからなかったためである可能性があります。 )"
グーグルで検索したところ、バインディングとエンドポイントのセクションをコンポーネント 3 の app.config からテスト コンソール アプリの新しい app.config にコピーする必要があることがわかりました。私は WCF を知らず、現時点では時間もありません。なぜこれがこのエラーを修正したのかを理解するまで、実際にそれを学びます。
ただし、VB6 EPOS からサービスを呼び出そうとすると、このエラーが再び表示されます。したがって、コンポーネント 2 はチェーン内の最初の .NET(3.5) コンポーネントであるため、エンドポイント宣言が必要な場所であると考えて、コンポーネント 2 に app.config を追加しましたが、いいえ。エラーはまだポップアップしています。
誰にもアイデアはありますか?シンプルトンのためにこれに光を当てることができるプログラミングヒーローはいますか??? EPOS を書き直さない理由を聞かないでください。私達はします。まだです。そこには 300 万行を超えるスパゲッティ コードがあり、私は 8 か月しか取り組んでいません!!!
余談ですが、このシナリオは OOP の黄金律の 1 つ、つまりカプセル化に違反していませんか。コンポーネント 3 が WCF サービスにアクセスするために使用するエンドポイントを VB6 EPOS が知る必要があるのはなぜですか?