1

14 年前、私がグリーン ホーンだったとき、従来の ASP のコンポーネントをセットアップすることは、私の給与レベルではありませんでした...しかし、今は未来に戻って、従来の ASP プロジェクトに対して保守とコーディングを行う必要があることに気付きました。 COM オブジェクトを使用します。

今、私は 1999 年から 2001 年までの古い記事を見ていて、なぜ COM (ActiveX .dll) に無人実行とメモリ内保持を設定する必要があるのか​​について、誰かが良い答えを持っているかどうか疑問に思っています。

また、サイトの現在のアーキテクチャは、サーバーにドロップされたばかりのこれらの .dll であることにも注意してください (もちろん登録済みです)。COM+ と MTS について疑問に思っています。今のところ、従来の ASP に固執しています (長い話です)。しかし、私は迅速に .NET に移行したいと考えています。したがって、この現在のアーキテクチャのメンテナンス時間を最小限に抑えることができれば、それは役に立ちます。COM+ と MTS を使用する理由も教えてください。また、それらの機能を追加する際に何が必要になるかについても説明します。

4

1 に答える 1

5

無人実行は、VB6 バイナリがインタラクティブなダイアログ、つまりWeb クライアントが表示または対話できないサーバー上のウィンドウを表示するのを防ぎます。

これは、Msgbox() または実行時エラー ポップアップの可能性があります。無人実行にフラグが立てられると、ランタイム エラーが Windows イベント ログに記録されます。

メモリに保持すると、IIS (またはホスト) がすぐに DLL を解放できなくなります。ホストの設定によっては、DLL がメモリに保持され、再利用されます。一部のホスト (IIS など) は、しばらくしてから DLL をリリースします。

関連項目: Msvbvm60.dll の最新バージョンで、無人実行オプションとメモリに保持オプションを構成できます。

Microsoft Transaction Server (Mtx.exe) などのマルチスレッド環境で Microsoft Visual Basic Enterprise Edition for Windows 6.0 コンポーネント (Microsoft ActiveX DLL) をホストするには、コンパイルの前に [無人実行] オプションと [メモリに保持] オプションをオンにする必要があります。 、インターネット インフォメーション サービス (Inetinfo.exe)、COM+ (Dllhost.exe)、および Microsoft SQL Server 7.0 または SQL Server 2000 (Sqlservr.exe)。ただし、コンポーネントがそのような環境で使用されるかどうかわからない場合や、[無人実行] オプションと [メモリに保持] オプションをオンにするのを忘れている場合があります。この問題に対処するために、最新バージョンの Visual Basic ランタイム (Msvbvm60.

および: Visual Basic 6.0 ActiveX コンポーネントのスレッドの問題

  • MSVBVM60.DLL 内のアクセス違反。
  • クライアントがデッドロック状態になります。これら 2 つの症状は、Visual Basic ActiveX DLL がマルチスレッド環境 (IIS、MTS、マルチスレッド クライアントなど) でホストされていて、[メモリに保持] オプションが有効になっていない場合に発生することがあります。

そしてもちろん: Visual Basic リファレンス [全般] タブ ([プロジェクト プロパティ] ダイアログ ボックス)

無人実行プロジェクトがユーザーの操作なしで実行されることを意図していることを示します。無人プロジェクトにはインターフェース要素がありません。メッセージなど、通常はユーザーの操作につながるランタイム関数はすべて、イベント ログに書き込まれます。

Retained in Memoryプロジェクトをメモリに保持します。ただし、パフォーマンス コストがあります。メモリに保持されているプロジェクトは、プロセスが終了するまでアンロードされません。

于 2011-04-18T22:29:29.510 に答える