【问题标题】:Should I provide Sync or Async methods for developers in my IMDB API library?我应该在我的 IMDB API 库中为开发人员提供同步或异步方法吗?
【发布时间】:2009-11-02 21:34:57
【问题描述】:

我将创建一个 DLL 库,允许开发人员搜索和访问 IMDB 电影页面。

我应该如何处理 GUI 中的冻结,我应该使用异步方法,还是应该允许开发人员手动创建线程以使用我们的 DLL?

【问题讨论】:

    标签: c# .net webclient asynchronous


    【解决方案1】:

    这完全取决于您。

    话虽如此,我认为提供异步和同步 API 将使您的库更像框架库,这将为您的用户提供正确使用它的最佳机会。

    例如,WebClient 提供DownloadFileDownloadFileAsync。我个人会在我的 API 中模仿这种行为。如果您以异步方式实现库,则很容易将其包装在同步 API 中。

    【讨论】:

      【解决方案2】:

      这是对您的判断。但是考虑一下:

      1. 如果您只以同步方式公开,用户始终可以使用BackgroundWorker 来避免阻塞。

      2. 如果您觉得可以在操作期间提供一些中间数据(例如进度百分比),那么异步版本可能会很有用。

      【讨论】:

        【解决方案3】:

        我会避免在这样的库中进行异步调用。

        如果图书馆的用户不关心阻塞怎么办?如果它是一个应该阻塞的命令行脚本呢?

        应用程序的线程化是一项重大的设计决策,请避免为它们做出决定。

        我将首先实现阻塞、同步调用,然后可能会添加异步方法,以使库更容易被线程害羞的程序员使用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-16
          • 2018-12-06
          相关资源
          最近更新 更多