問題タブ [com+]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - COM+ System.InvalidCastException のエラー。
時々発生する問題があります。Web サーバーとアプリケーション サーバーがあります。アプリケーション サーバーには、COM+ サーバーおよびライブラリ アプリケーションとしてインストールされるビジネス ロジック コードが格納されています。次に、Web サーバーにプロキシを配置して、Web サーバーから COM+ サーバーへのすべての呼び出しを強制します。ほぼ 100% の場合、すべてが適切に動作します。毎度ブルームーン、そしてもちろん、プロダクションマシンでのみ、この問題は醜い頭の後ろで発生します。以下は、エンタープライズ ライブラリを介してログに記録しているイベント ログ エントリです。
このイベント ログの記録から開始します。
その後、このイベント ログは、後の要求の後に記録されます。
スタック トレースはもう少し続きますが、問題ありません。基本的に、Web サーバーから COM+ サーバーにジャンプすることになっている時点で発生しています。
この問題は、COM+ サーバー上で COM+ サーバー アプリケーションを再起動することで解決できますが、私にとっては十分な解決策ではありません.
これらのエラーは、何が起こっているのかを明確に示しているわけではありません。これらのエラーの意味と、これらのエラーの発生を潜在的に回避する方法について、誰かが光を当てることができますか?
通常、私はこのような投稿をすることはありません。私が抱えている問題は、発生している例外の曖昧さにあると思います。なぜこれが起こっているのかを検索しても、ほとんど結果が得られません。
c# - カスタムConfigurationSectionを使用したCOM+サーバー構成
ServicedComponentを実装する.NetコンポーネントをホストするCOM+サーバーがあります。
COM +サーバーは、カスタム構成セクションが定義されている構成ファイルにアクセスする必要があります。
次のコードで構成を正常にロードできます。
System.InvalidCastException:タイプ「System.Configuration.DefaultSection」のオブジェクトをタイプ「MyProject.MyCustomSettings」にキャストできません
構成ファイルでカスタム構成セクションを宣言した方法は次のとおりです。
この場合は、CustomSettingsオブジェクトを期待していたため、あまり役に立たないように見えるDefaultSectionオブジェクトを実際に返します。
MyProjectには強い名前が付けられていることに注意してください。
MyProject.dllアセンブリをGACにインストールするオプションもありますが、組織上の理由から、このソリューションは魅力的ではありません。
他に何か提案はありますか?
DLLHostで実行されているプロセスから特定のアセンブリの構成ファイルからカスタム構成セクションをロードするにはどうすればよいですか?
ありがとう。
c# - C# クラス ライブラリを COM+ サーバー アプリケーションとして使用する
C# で .NET クラス ライブラリを作成し、それを COM に公開しました。インプロセス COM サーバーとして正常に動作します。ただし、アウトプロセス COM サーバーとして使用して、別のプロセスに入れたいと考えています。
そのために、COM+ アプリケーションを作成してみます。空の COM+ アプリケーションを作成し、クラス ライブラリに実装されているクラスを追加しました。ライブラリに実装されているクラスをインスタンス化するために CoCreateInstance() を呼び出すと、COM+ サロゲート プロセスがアクセス違反を検出して終了します (クラッシュ ダンプが続きます)。
COM+ でアウトプロセス COM サーバーとして使用できるクラス ライブラリを作成するために必要な特別な手順はありますか?
COM+ サロゲート プロセスは、次のクラッシュ ダンプでクラッシュします。
例外: C0000005
アドレス: 0x000C1618
コール スタック:
! + 0xC1618
mscorwks!Ordinal79 + 0xE41C
mscorwks!Ordinal79 + 0xE4AD
mscorwks!CoInitializeEE + 0x563F
mscorwks!CoInitializeEE + 0x5672
mscorwks!CoInitializeEE + 0x57F1
mscorwks!CoInitializeCor + 0x210E
mscorwks!CoInitializeCor + 0x48D
mscorwks!Ordinal79 + 0x16D2
mscorwks!ReleaseFusionInterfaces + 0x20B28
COMSVCS! + 0xC29A2
COMSVCS! + 0xC2BDA
COMSVCS!CoCreateStdTrustable + 0xCB10
ole32!CoMarshalInterface + 0x2642
ole32!CoInstall + 0x673
ole32!CoQueryAuthenticationServices + 0x1F44
ole32!CoQueryAuthenticationServices + 0x2862
ole32!CoWaitForMultipleHandles + 0xC267
ole32!CoQueryClientBlanket + 0x16CE
ole32!CoCreateObjectInContext + 0xC8E
ole32!CoInstall + 0x87A
ole32!CoWaitForMultipleHandles + 0x10479
ole32!CoMarshalInterface + 0x2808
ole32!CoGetTreatAsClass + 0xBE7
ole32!CoGetTreatAsClass + 0xB9E
ole32!CoMarshalInterface + 0x28F2
ole32!CoMarshalInterface + 0x2642
COMSVCS!CoCreateStdTrustable + 0x106A4
ole32!CoMarshalInterface + 0x2642
ole32!CoPopServiceDomain + 0x14FE
RPCRT4!CheckVerificationTrailer + 0x70
RPCRT4!NdrStubCall2 + 0x215
RPCRT4!CStdStubBuffer_Invoke + 0x82
ole32!StgGetIFillLockBytesOnFile + 0xFC92
ole32!StgGetIFCillLockBytes0
ole32!CoRevokeClassObject + 0xA3E
ole32!CoRevokeClassObject + 0x963
ole32!StgGetIFillLockBytesOnFile + 0xF872
ole32!WdtpInterfacePointer_UserMarshal + 0x80E
ole32!StgGetIFillLockBytesOnFile + 0xF792
RPCRT4!NdrGetTypeFlags + 0x1C9
RPCRT4!NdrGetTypeFlags + 0x12E
RPCRT4!NdrGetTypeFlags + 0x5A
RPCRT4!CreateStubFromTypeInfo + 0x2D7
RPCRT4!CreateStubFromTypeInfo + 0x318
RPCRT4!NdrConformantArrayFree + 0x2CB
RPCRT4!NdrConformantArrayFree + 0x20F
RPCRT4!I_RpcBCacheFree + 0x61C
RPCRT4!I_RpcBCacheFree + 0x43E
RPCRT4!I_RpcBCacheFree + 0x604
kernel32!GetModuleFileNameA + 0x1B4
.net - エンタープライズ サービスの代替
.NET のサービス コンポーネント (COM+) に代わるものはありますか?
OS によってホストされ、ローカルでアクセスできるオンデマンド (Windows サービスのように常に実行されるとは限らない) の管理可能なコンポーネントを探しています (リモート接続の必要はありません)。
.net - アプリケーション層を異なるアセンブリに分割する
私の会社で議論が起こっています。ビジネス、データ、およびビジネス エンティティを 1 つのアセンブリに移動することを提唱する人もいます。
- 見つけやすさの目的。探しているものを簡単に見つけられるようにします。
- 開発のためにプロジェクトに追加する必要がある dll の数を減らす
アプリケーション アーキテクチャ ガイドを引用している他の人は、各レイヤーとビジネス エンティティを個別のアセンブリに入れたいと考えています。
その点に注意してください
- 当社のビジネス層とデータ層はどちらも com + コンポーネントで構成されています。
- 現在のハードウェア アーキテクチャでは、Web、ビジネス、データが同じボックスに収められています。
- 別のボックスの SQL。
- とにかくcom+ではほとんど役に立たないため、現在dllのバージョン管理を使用していません。
一部の使用者は、ビジネス、データ、およびエンティティを分割する必要があるという直感を持っていますが、理由が不足しています.
- 潜在的にメモリ消費を減らす
- ビジネス レイヤー アセンブリのみを Web プロジェクトに追加することで、適切なアーキテクチャを奨励します。データサービスも利用できる場合、間違った方法で簡単に実行できます
- Web サーバーをビジネス層とデータ層から分離すると、ゴッド アセンブリから不要ながらくたをインストールする必要がなくなります。
現在、システムには約 600 個の dll があります。したがって、私たちはすべてが分割されている極端なところにいます。間違いなくいくつかの統合が行われる可能性がありますが、提案されていることは、すべてのアプリケーションが 1 つの dll にあるという完全に別の極端に私たちを連れて行こうとしています。
この一般的な問題について外部の視点を得ることができますか?
ありがとう!
.net - Enterprise Services のトランザクションおよびプーリング機能の最新の代替品はありますか?
EnterpriseServices AKA Com +のServicedComponentを使用しています
- 分散トランザクション
- 属性を使用した単純なトランザクション プログラミング
- オブジェクトのプーリング
com+に欠けていると思うもの
- dll のバージョン管理の欠如
- コンポーネントを変更するたびに gac と reg を行わなければならないという苦痛
- デバッガをアタッチする必要がある
私は、WCF が COM+ と同じ問題のいくつかを解決することを認識しています。しかし、それはそれらすべてを解決しますか?誰かが私を正しい方向に向けることができますか?
ありがとう
wcf - Windows Activation Service + WCF は COM+ の代わりになるか
WAS の機能
- アプリケーション プーリング
- リサイクル
- アイドルタイム管理
- アイデンティティ管理
- 隔離
COM+ によく似ていますが、IIS 7 でホストされています。このテクノロジを使用している人はいますか? この 2 つを比較して正しいですか?
.net - .NET から DB2 への分散トランザクション
AS400 db2 を呼び出して、.net から一連の挿入/更新ストアド プロシージャを呼び出し、AS400 db のすべてが正常に実行された場合にいくつかの SQL2005 テーブルを更新する必要があるという問題があります。私が使用しているドライバーには分散トランザクションがないため、IBM の iSeries Drivers for DB2 を使用して、分散トランザクションに参加する COM+/.NET コンポーネントを作成できるかどうか疑問に思っていました。Plsは、誰かが以前にこのようなことをしたことがあるかどうか、またはポインタがあれば大歓迎です。