2010-11-19 19 views
3

MS CRM 4.0用のC#.NET SDKを使用しています。特に、SDKのXRMインターフェイスを使用します。クライアントアプリケーションを起動すると、最初のクエリ(たとえば、すべてのcrmシステムユーザを取得)には、約5秒のオーバーヘッドが発生します。オーバヘッドは、何かがネットワーク経由で送信される前に発生します(wiresharkで観察されます)。だから私は遅延がいくつかの.NETローディングオーバーヘッドに関係していると推測しています。 MS CRM 4.0 SDK - .NETアプリケーションの初期クエリ遅延/高速化のロード

私は http://www.eggheadcafe.com/software/aspnet/31916049/the-initial-delay-when-using-the-crmservice-is-caused-by-two-things.aspxで、いくつかの説明が見つかりました:

初期遅延をCrmServiceは、二つのことが原因で発生し使用した場合。最初に CrmServiceプロキシクラスを(ILからネイティブに)コンパイルする必要があり、 シリアル化をロードする必要があります。これには大量の処理が必要となります。 このコンパイルは、 のインスタンスが最初に発生し、crmserviceプロキシがAppDomainに作成されます。

第2回サーバで初めてコールが実行されたときに、追加の クラスなどがロードされる必要があります。

.NETフレームワークのこの通常の動作です。 CrmServiceのロード時間を に最適化するには、WSDLツールを使用して新しいサービスプロキシを生成し、使用しない要求とオブジェクトをすべて削除します( )。 これを行う際の問題は、これが多くの作業であることです。手動で生成されたプロキシクラスを編集することを除いて -

説明は上記の遅延を回避するために行うことができ、他のanyhingがあり、適用されると仮定すると?

私はGACとネイティブイメージを実験しました。成功しませんでした。

答えて

1

厳密に型指定されたWSDLインターフェイスプロキシクラスを使用せずに、SDKの動的エンティティクラスを簡単に使用できます。

これは、シリアライゼーションクラスの生成またはロードを必要としません。しかし、より複雑でエラーが起こりやすい動的エンティティ表現を使用する必要があります。

+0

スタートアップの遅延を低減するための可能なアプローチのためにこれらのリンクを参照してください。未使用のエンティティ。結果として、生成された初期バインディングタイプの数とサイズが減少します。https://xrmearlyboundgenerator.codeplex.com/ – nang

関連する問題