我正在使用ASP.NET Webhooks包来允许用户在我的应用程序中发生某些事件时接收回调。例如 entityUpdated、entityCreated、entityDeleted
我想向用户展示仅为特定实体的更新注册 Webhook 的可能性,以防他们只对接收这些特定实体的回调感兴趣。例如 entityUpdated 为 entity1
过滤器似乎是实现此行为的理想选择。用户可以使用过滤器订阅事件。例如实体*(接收所有有关实体的事件)
所以我正在考虑公开每个实体的事件,例如:entity_1_Updated。这意味着暴露的事件列表将在应用程序运行期间发生变化(随着实体的创建或删除)。更具体地说,IWebHookFilterProvider 的实现将执行数据库查询以获取可能发生的事件的实体列表。像这样:
class EntityWebHookFilterProvider : IWebHookFilterProvider
{
public async Task<Collection<WebHookFilter>> GetFiltersAsync()
{
List<int> ids = await repository.GetAllUpdatableEntitiesAsync();
return new Collection<WebHookFilter>(ids.Select(id => new WebHookFilter { Name = string.Format("entity_{0}_Updated", id)}).ToList());
}
}
这会是一个很好的解决方案吗?还是应该修复事件/过滤器列表?