DoconutExtensions

تسجيل الخدمات والوسطيات

DoconutExtensions (namespace Doconut.Middleware) هو الفئة الثابتة التي تحتوي على الثلاث استدعاءات التي يقوم بها كل مضيف Doconut: تسجيل خدمة واحدة وتسجيلين للوسطية.

csharp
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // قبل UseDoconut()
app.UseDoconut();

AddDoconut

text
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)

يبني الـ DoconutOptions، يتحقق من صحتها بسرعة الفشل (انظر DoconutOptions → التحقق من بدء التشغيل)، ويسجل الرسم البياني الكامل للخدمة:

الخدمةمدة الحياةالدور
DoconutOptionsSingletonكائن التكوين
خدمة ذاكرة التخزين المؤقت للجلسةSingletonToken → ذاكرة التخزين المؤقت للجلسة (IMemoryCache مسجل أيضًا)
IDoconutLicenseServiceSingletonالرخصة تُحمَّل مرة واحدة عند بدء التشغيل (الأولوية: LicenseStream → LicenseContent → LicensePath → البحث التلقائي)
خط أنابيب صورة الصفحةSingletonينفّذ معالجة الصور للصفحات (علامة مائية، تدوير، تحجيم، تعليقات توضيحية)
أمان المستند (مخزن الوصول)Singletonيمنح ربطًا بين الرمز والجلسة
ViewerTransientالواجهة العامة للفتح/الإغلاق
DocumentConverterTransientواجهة التحويل — تتطلب مكوّن Converter
DistributedDocumentPublisher—ينشر مخرجات المستند إلى التخزين المشترك
Health check "doconut"—يُبلغ عن حالة الرخصة/انتهاء الصلاحية عبر فحوصات الصحة في ASP.NET

لا يوجد استدعاء مكافئ في مكتبة .NET Standard السابقة. كانت تُنشئ new Viewer(cache, accessor) لكل طلب وتُمرّر الخيارات إلى الوسطية؛ كلاهما تم استبدالهما بهذا التسجيل الواحد.

سلوكان يستحقان المعرفة:

  • Converter يتطلب المكوّن الخاص به. حل DocumentConverter بدون options.AddPlugin<ConverterPlugin>() يثير استثناء:
text
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().
  • تم التحقق من استحقاق المكوّن عند بدء التشغيل. رخصة مفقودة، ملف TRIAL قديم، أو رخصة مدفوعة بدون قدرة مكوّن مسجل تفشل في وقت AddDoconut(). التسجيلات المؤقتة/التجريبية تبقى بعد تاريخ انتهاء صلاحيتها، بينما البوابات أثناء التشغيل تُلغي القدرات المنتهية.

يتكامل فحص الصحة مع آلية ASP.NET Core القياسية — قم بربطه إذا أردت حالة الرخصة على نقطة صحة التطبيق الخاصة بك:

csharp
app.MapHealthChecks("/health");

UseDoconut

text
IApplicationBuilder UseDoconut(this IApplicationBuilder app)

يضيف وسطية Doconut لمعالجة صور الصفحات. يرد على كل طلب يحمل معامل استعلام ?token= — الصفحات، المصغرات، البحث، التعليقات التوضيحية، إجراءات الصفحة (جدول الطلب الكامل موجود في المفاهيم الأساسية → كيف يعمل العارض). عندما يكون UnsafeMode هو false، يتم ربط طبقة أمان المستند تلقائيًا قبلها.

لا يأخذ أي معطيات. تمرير نسخة من DoconutOptions هنا كان شكل المكتبة السابقة ولم يعد يُترجم.

العينة المرجعية توجه طلبات الودجت عبر فرع مسار، محافظةً على شكل الطلب التاريخي:

csharp
app.MapWhen(
    ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
    branch => branch.UseDoconut());

UseDoconutResources

text
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)

يخدم ملفات JS و CSS والصور والخطوط المدمجة عند DoconutOptions.ResourcesPath (الافتراضي /doconut-res). هذه هي الملفات التي تُصدر لها العلامات Viewer.ReferenceCss() / ReferenceScripts().

دائمًا استدعِه قبل UseDoconut(). إذا ظلت منطقة العارض فارغة وأظهر سجل المتصفح أخطاء 404 لـ /doconut-res/...، فهذا الاستدعاء مفقود أو في غير مكانه.

هذا هو البديل المدعوم لتوصيل وسطية معالجة الموارد المدمجة يدويًا.

Serving from shared storage

هناك تسجيلان إضافيان للعمليات التي يتم فيها تقديم مستند من عقدة لا تكون بالضرورة هي العقدة التي تخدم صفحاته. كلاهما مغطى من البداية إلى النهاية في التوزيعات الموزعة؛ التواقيع هي:

text
IServiceCollection AddDoconutDistributedAsyncPublish(...)   // قائمة انتظار النشر الخلفية الاختيارية
IServiceCollection AddDoconutDistributedWidgets(...)        // مخزن خلفي مشترك لتحميلات widget

جانب القراءة هو وسطية منفصلة عن حزمة Doconut.Clouds:

text
IApplicationBuilder UseDoconutCloud<THandler>(
    this IApplicationBuilder app,
    Action<CloudOptions>? configure = null,
    string pathPrefix = "/doconut-cloud")
    where THandler : BaseCloudHandler

UseDoconutWebFarm(...) و WebFarmOptions غير موجودين في هذا الإصدار. راجع دليل الترحيل للحصول على خريطة الإعدادات خطوة بخطوة.

Ordering recap

csharp
app.UseRouting();
app.UseSession();          // مطلوب عندما UnsafeMode = false
app.UseDoconutResources(); // المكالمة الأولى لـ Doconut
app.UseDoconut();          // المكالمة الثانية لـ Doconut (أو عبر فرع MapWhen)

هل كانت هذه الصفحة مفيدة؟