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)廃止されている場合は、別のテクノロジーに移行したくありません。別のテクノロジーがこの仕事をより良くし、それが非推奨にならないのであれば、私が必要に応じてそれを使用することを検討するよりも。ご意見・ご感想をいただければ幸いです。