Lés*_*ter 1 c# ldap-query async-await asp.net-web-api
我正在开发一个 ASP.NET MVC WebApi 项目,其中一种方法需要进行 LDAP 搜索。搜索从 LDAP 服务器检索的信息量确保调用至少需要 7 秒才能完成。调用,因为它使用System.DirectoryServices.Protocols类和方法,是同步和不可修改的。
此 API 将接收的流量相当大(即使 API 位于内部网络中),因此每次调用 LDAP 服务器 7 秒并不是一个好主意。所以我想知道这个:
await Task.Run(() => Search(params))一种可以接受的方式吗?)正如评论中所指出的,我根本看不出使调用异步有什么帮助。在另一个线程中运行它并等待(根据您的“什么是正确的方法......”问题)确实使用了与同步调用和等待一样多的资源。
但是请注意,System.DirectoryServices.Protocols诸如此类的类LdapCollection确实支持较旧的 APM(异步编程模型)样式(例如BeginSendRequest/ EndSendRequest)。
您可以使用 轻松地将 APM 样式的 API 包装为可等待的基于任务的样式TaskFactory<TResult>.FromAsync,这将是将这些类与异步一起使用的“正确方法”。另请参阅与其他异步模式和类型的互操作。
| 归档时间: |
|
| 查看次数: |
506 次 |
| 最近记录: |