网站首页 网站源码
using System.Globalization;
using Dpz.Core.Backup;
using Dpz.Core.Hangfire;
using Dpz.Core.Service.Network;
using Dpz.Core.Shard.Service;
using Dzp.Core.Shard.Implement.Service;
using Hangfire;
using Hangfire.Dashboard;
using MailKit;
using Microsoft.AspNetCore.Localization;
namespace Dpz.Core.WebApi;
/// <summary>
///
/// </summary>
public static class DependencyInjectionExtensions
{
/// <summary>
/// Ioc 注册
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public static IServiceCollection AddAppScoped(this IServiceCollection services)
{
services.AddHttpClient();
services.AddHttpClient(
"edge",
httpClient => { httpClient.DefaultRequestHeaders.Add("User-Agent", EnvironmentInfo.UserAgent); }
);
// 添加 又拍云储存
services.AddUpyunObjectStorage();
// 视频处理
services.AddVideoSyncHandleService();
// 邮件日志
services.AddTransient<IProtocolLogger, SerilogProtocolLogger>();
services.AddUpyunSafeFileService();
services.AddBackupRestoreService();
services.AddScoped<IVideoShardService, VideoShardService>();
services.AddNetworkServices();
return services;
}
/// <summary>
/// hangfire UI设置及周期性任务调度
/// </summary>
/// <param name="app"></param>
/// <returns></returns>
public static void HangfireSetting(this IApplicationBuilder app)
{
var supportedCultures = new[]
{
new CultureInfo("zh-CN"),
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("zh-CN"),
// Formatting numbers, dates, etc.
SupportedCultures = supportedCultures,
// UI strings that we have localized.
SupportedUICultures = supportedCultures
});
app.UseHangfireDashboard("/jobs", new DashboardOptions
{
AppPath = "/",
StatsPollingInterval = 5000,
//可编辑任务
IsReadOnlyFunc = _ => false,
DarkModeEnabled = true,
DashboardTitle = "任务管理",
FaviconPath = "/favicon.ico"
});
}
}
上述代码是一个 ASP.NET Core 应用程序中的依赖注入和 Hangfire 配置的扩展类。它主要包含两个方法:AddAppScoped
和 HangfireSetting
。下面是对这两个方法的详细解释:
AddAppScoped
方法这个方法用于注册应用程序中需要的服务到依赖注入容器中。具体功能如下:
添加 HTTP 客户端:
services.AddHttpClient();
:注册一个默认的 HTTP 客户端。services.AddHttpClient("edge", ...)
:注册一个名为 "edge" 的 HTTP 客户端,并设置其默认请求头中的 User-Agent
。添加又拍云存储服务:
services.AddUpyunObjectStorage();
:注册又拍云的对象存储服务。视频处理服务:
services.AddVideoSyncHandleService();
:注册视频同步处理服务。邮件日志服务:
services.AddTransient<IProtocolLogger, SerilogProtocolLogger>();
:注册一个邮件日志服务,使用 Serilog 作为日志记录器。安全文件服务:
services.AddUpyunSafeFileService();
:注册又拍云的安全文件服务。备份和恢复服务:
services.AddBackupRestoreService();
:注册备份和恢复服务。视频分片服务:
services.AddScoped<IVideoShardService, VideoShardService>();
:注册视频分片服务。网络服务:
services.AddNetworkServices();
:注册网络相关的服务。HangfireSetting
方法这个方法用于配置 Hangfire 的设置和请求的区域化(Localization)。具体功能如下:
设置支持的文化:
supportedCultures
,这里只包含中文(简体)。请求区域化:
app.UseRequestLocalization(...)
:配置请求的区域化选项,设置默认请求文化为中文,并指定支持的文化和 UI 文化。配置 Hangfire Dashboard:
app.UseHangfireDashboard(...)
:配置 Hangfire 的仪表板,设置访问路径为 /jobs
,并配置一些选项:AppPath
:设置应用程序的路径。StatsPollingInterval
:设置统计信息的轮询间隔为 5000 毫秒。IsReadOnlyFunc
:设置仪表板是否为只读,这里返回 false
,表示可以编辑任务。DarkModeEnabled
:启用暗黑模式。DashboardTitle
:设置仪表板的标题为 "任务管理"。FaviconPath
:设置仪表板的图标路径。整体来看,这段代码的主要功能是为 ASP.NET Core 应用程序配置依赖注入服务和 Hangfire 的仪表板。它通过 AddAppScoped
方法注册了多个服务,确保应用程序能够使用这些服务进行视频处理、文件存储、日志记录等功能。同时,HangfireSetting
方法则配置了 Hangfire 的仪表板和请求的区域化设置,以便于用户管理后台任务。