1

Exchange(2007)の開発は初めてですので、ご容赦ください。:-)。Exchange開発には無数のテクノロジー(最新のものはExchange Webサービス)があり、それに関連するマネージドAPIがあるようです。さまざまな基準を満たすメッセージをパージする目的で、必要に応じてExchangeサーバー上で実行できるプログラムを作成してユーザーのメールボックスをスキャンする必要があります(この説明には関係ありません)。

他のほとんどのテクノロジ(WebDav、MAPI、CDO)は、Exchange2007およびExchange2010に関して非推奨になっていることを理解しています。したがって、これはグリーンフィールドアプリケーションであるため、ExchangeWebサービスマネージAPIを使用することにしました。

1時間にスキャンできるアイテムの数が心配です。これはWebサービスベースであるため、ネットワークホップが関係しています。そのため、通信相手のサーバーでこのユーティリティを実行したいと思います。 「ハブ」サーバーと通信する必要があるというのは正しいですか?。自動検出を使用していますが、スキャンしている実際のメッセージストアがどのメールサーバーに含まれているかに関係なく、「ハブ」サーバーに解決されるようです。

ExchangeService.FindItemsを使用し、ページサイズ500を指定して複数のアイテムをプルダウンすると、ワークステーションからハブサーバーへのスループットがかなり向上します。47秒で22,000通のメールを検索できました。それは合理的なようです。 ただし、その方法で取得した場合、すべてのプロパティが「バインド」されているわけではないことがわかります。ToRecipientsやCcReipientsなどの特定のプロパティは入力されていません。これらを(個別に)明示的にバインドする必要があります。

Item.Bind(Server, Item.Id)

これはサーバーへの個別のラウンドトリップであり、スループットが約460アイテム/秒から3アイテム/秒に低下します。これは実行不可能です。

だから-他のいくつかの質問。FindItemsの呼び出し中に、欠落しているプロパティを強制的にバインドする方法はありますか?それができない場合、一度に複数のアイテムをバインドする方法はありますか?

最後に、私はこの種の作業にExchangeWebサービスを選択するのは正しいのでしょうか。私はプログラミングモデルのシンプルさが大好きで、(a)より複雑であるか、(b)廃止されている場合は、別のテクノロジーに移行したくありません。別のテクノロジーがこの仕事をより良くし、それが非推奨にならないのであれば、私が必要に応じてそれを使用することを検討するよりも。ご意見・ご感想をいただければ幸いです。

4

1 に答える 1

1

このサービスを使用して、サーバーへの 1 回の呼び出しで多くのアイテムの多くのプロパティを読み込むことができます。このサービスは、問題に合わせて設計されています。残念なことに、マネージ API のドキュメントはまだかなり薄っぺらいものです。

results = folder.findItems... (またはあなたが行っている検索呼び出し)

service.LoadPropertiesForItems(results, propertySet);

プロパティ セットは次のようなものです。

PropertySet s = new PropertySet(BasePropertySet.IdOnly, ItemSchema.Subject, customDefinitions);

さまざまな xSchema クラスを使用して特定のフィールドにロードし、大量のレコードをフェッチして戻す場合に負荷を最小限に抑えます。

于 2010-08-11T14:58:04.737 に答える