Services.AddTransient() 对比 Services.AddBot()

Services.AddTransient() Vs Services.AddBot()

在最新的机器人样本中,我们可以看到机器人被添加到服务集合中,如下所示

services.AddTransient<IBot, MyBot>();

但在较旧的示例中,我们看到了以下方法

services.AddBot<MyBot>(options => { });

在这里,我试图了解使用 AddTransient() 添加机器人相对于使用 AddBot() 的好处。 我所知道的是 AddBot 内部仅使用 AddTransient,那么为什么要使用 AddTransient。参考备注部分来自 this link.

您可以在 source code 中看到,除了机器人之外,AddBot 方法还用于自动将机器人适配器添加到 DI,以及配置与机器人相关的选项,例如凭据和错误处理.制作这些示例时,使用 Bot Builder v4 SDK 的约定非常不同,并且机器人的配置及其凭据是从称为机器人文件的文件中加载的。当前使用 SDK 的约定要容易得多,因为它利用了 ASP.NET 核心自动从 appsettings.json 加载应用程序配置的优势。由于我们不再使用 AddBot,您会注意到适配器已显式添加到 DI,并且您可以通过直接访问适配器的属性和方法或通过派生来配置错误处理和中间件等内容自己的适配器 class,如样本所示。