网站首页 网站源码

using System.Globalization;
using Dpz.Core.Backup;
using Dpz.Core.Hangfire;
using Dpz.Core.Service.Network;
using Dpz.Core.Shard.Service;
using Dpz.Core.WebApi.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.AddUpyunSafeFileService();
services.AddBackupRestoreService();
services.AddScoped<IVideoShardService, VideoShardService>();
services.AddNetworkServices();
services.AddHttpContextAccessor();
services.AddScoped<ICurrentUserService, CurrentUserService>();
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 的仪表板和请求的区域化设置,以便于用户管理后台任务。
