2017-11-11 9 views
0

現在、私はSAP Business One SDKを使用しています。私は別のチームからいくつかのプロジェクトを取った。このプロジェクトはSOAP Webサービスです。とにかく、別のチームが標準のDI APIライブラリを使用していました。これはメモリリークに多くの問題を引き起こすため、このソリューションの主な問題です。SAP B1 - SOAP WebサービスでスタンダードDLLを使用

DI APIが呼び出されるたびにソースコード内でガベージコレクタを使用しようとしましたが、残念ながら十分ではありません。

WebサービスはIIS上でホストされており、しばらくの間再起動するオプションを設定する必要がありました。私はそれが最良の解決策ではないことを知っていますが、それは機能します。明らかに、その方法は多くの問題を引き起こします。

私はそれについて質問があります。合理的な解決策はありますか?または、DIサーバーを使用してソースコードを書き直す必要がありますか?

私はこれについて多くのことを読んで、インターネット上でいくつかの記事を見つけました。私がそれらを読んだことを確信しているので、コメントにはリンクを入れないでください。

+0

DI接続は、見つかった問題のために、常にDI接続を別のプロセスに入れました。 – Daz

+0

解決策の例を教えてください。とても面白いです。前もって感謝します。 –

+0

最も簡単な方法は、作成する更新のXMLを作成し、ファイル/データベースのテーブル/メッセージキュー(または同様のもの)にドロップしてから、コンソールアプリケーションまたはサービスをフィードオフし、XMLをDI。トランザクションがDIのLoadFromXMLメソッドに適していると仮定します。明らかに、ペイロードのデータとサービスはもっと洗練されたものかもしれません。 – Daz

答えて

1

DI APIオブジェクトを使用するたびに、リリースする必要があります。さもなければ、それはメモリに留まり、あなたが言及したメモリリークを引き起こします。

リリースする正しい方法は、ReleaseComObjectを使用することです。オブジェクトがnullの場合、例外が発生するので、最初にチェックしてください。

関連する問題