构建强大的异步/非异步 API
开发处理网络 I/O 的可重用库通常需要提供异步(async)和同步(非异步)方法。 简单地使用 Wait()
从异步版本创建同步版本是低效的。本文提出了一种在保持 API 设计完整性的同时维护这两个选项的解决方案。
优先考虑异步:最好的方法
为了获得最佳的可维护性,请考虑专门使用异步方法来设计 API。这消除了代码重复并提高了一致性。 使用非阻塞操作实现这些异步方法,以避免不必要的线程池使用并确保性能。
异步/非异步权衡
提供异步和非异步方法提出了重大的维护挑战。 重复代码是不可取的,并且简单地将一种方法类型包装在另一种方法类型中(如 Stephen Toub 所讨论的)并不是理想的解决方案。
“布尔参数黑客”:一个实用的解决方案
避免代码重复的实用技术是“布尔参数 hack”。 这涉及到向您的方法添加一个布尔参数,指示是否需要同步或异步行为。 然后该方法的内部逻辑会处理这两种情况。
虽然这种方法增加了一定程度的复杂性,但与管理单独的实现相比,它显着减少了维护开销。 此 hack 的适用性取决于特定的上下文以及可维护性和 API 设计优雅之间的平衡。
以上是如何设计具有异步和非异步选项且维护良好的 API?的详细内容。更多信息请关注PHP中文网其他相关文章!