تحويل النص الخام إلى محتوى مصقول وصديق لتحسين محركات البحث هو تحدٍ يومي للعديد من مطوري .NET الذين يبنون تطبيقات ويب غنية بالمحتوى. GroupDocs.Rewriter Cloud SDK for .NET يوفر واجهة برمجة تطبيقات قوية تعيد صياغة الجمل مع الحفاظ على المعنى. يوضح هذا الدليل خطوة‑بخطوة كيفية التكامل مع ASP.NET Core MVC كيفية إعداد المكتبة، تكوين الاعتمادات، تنفيذ منطق إعادة الصياغة في المتحكم، وعرض النتائج في عرض Razor.
متطلبات حالة الاستخدام
تحتاج المؤسسات التي تُنشئ مقالات من إنشاء المستخدم، أو أوصاف منتجات، أو نسخ تسويقية غالبًا إلى تحسين قابلية القراءة دون تحرير يدوي. تشمل المتطلبات لمثل هذا السيناريو ما يلي:
- إعادة كتابة النص في الوقت الفعلي مباشرةً من نموذج ويب.
- معالجة آمنة لبيانات اعتماد API على جانب الخادم.
- دمج سلس مع خط أنابيب ASP.NET Core MVC الحالي.
استخدام كود التلاعب بالسلاسل العامة يصبح سريعًا عرضة للأخطاء ولا يتوسع، وهذا هو السبب في أن مكتبة إعادة كتابة المستندات المتخصصة ضرورية.
اختيار GroupDocs.Rewriter Cloud SDK for .NET للوظيفة
يقدم GroupDocs.Rewriter Cloud SDK for .NET واجهة برمجة تطبيقات (API) قائمة على REST تدعم لغات متعددة، وأنماط إعادة كتابة قابلة للتخصيص، ومعالجة عالية الأداء. قدراته الرئيسية التي تتطابق مع حالة الاستخدام هي:
- RewriteModeEnum.Rewrite - ينتج إعادة صياغة بلغة طبيعية للنص المدخل.
- DI‑friendly client - يمكن تسجيله ككائن مفرد في حاوية خدمات ASP.NET Core.
- Strong typing and async support - يتماشى بشكل طبيعي مع أنماط .NET غير المتزامنة الحديثة.
الدليل خطوة بخطوة للتكامل مع ASP.NET Core MVC يوضح كيف تتطابق هذه القدرات مع المتطلبات. للحصول على معلومات مفصلة حول API، راجع الوثائق الرسمية ومرجع API.
دليل خطوة بخطوة لتنفيذ التكامل مع ASP.NET Core MVC
سيرشدك هذا الدليل خطوة بخطوة للتكامل مع ASP.NET Core MVC عبر كل خطوة من خطوات التكوين المطلوبة.
تثبيت حزمة SDK
أضف حزمة NuGet إلى مشروعك.
dotnet add package GroupDocs.Rewriter-Cloud
يمكنك أيضًا تنزيل الملفات الثنائية من صفحة التحميل.
إضافة تكوين بيانات اعتماد أداة إعادة الكتابة
ضع AppSid و AppKey في التكوين. يضيف المقتطف أدناههما في الذاكرة لتبسيط الأمور.
builder.Configuration.AddInMemoryCollection(new[]
{
new KeyValuePair<string,string>("GroupDocsRewriter:AppSid", "YOUR_APP_SID"),
new KeyValuePair<string,string>("GroupDocsRewriter:AppKey", "YOUR_APP_KEY")
});
تسجيل عميل Rewriter API في DI
يتم تسجيل عميل SDK ككائن مفرد بحيث يمكن حقنه في المتحكمات.
builder.Services.Configure<RewriterSettings>(builder.Configuration.GetSection("GroupDocsRewriter"));
builder.Services.AddSingleton<IRewriterApi>(sp =>
{
var settings = sp.GetRequiredService<IOptions<RewriterSettings>>().Value;
var config = new Configuration
{
AppSid = settings.AppSid,
AppKey = settings.AppKey
};
return new RewriterApi(config);
});
إنشاء وحدة التحكم MVC ونموذج العرض
يتلقى المتحكم النص الأصلي، يستدعي Rewriter API، ويعيد النتيجة المعاد صياغتها.
public class RewriterController : Controller
{
private readonly IRewriterApi _rewriterApi;
public RewriterController(IRewriterApi rewriterApi)
{
_rewriterApi = rewriterApi;
}
[HttpGet]
public IActionResult Index()
{
return View(new RewriterViewModel());
}
[HttpPost]
public async Task<IActionResult> Index(RewriterViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
var rewriteRequest = new RewriteRequest
{
Text = model.InputText,
Language = "en",
TargetLanguage = "en",
RewriteMode = RewriteModeEnum.Rewrite
};
RewriteResponse response = await _rewriterApi.RewriteAsync(rewriteRequest);
model.OutputText = response?.Result?.Text ?? string.Empty;
return View(model);
}
}
نموذج العرض المرافق يحتوي على سلاسل الإدخال والإخراج.
public class RewriterViewModel
{
[Required]
[Display(Name = "Original Text")]
public string InputText { get; set; } = string.Empty;
[Display(Name = "Rewritten Text")]
public string OutputText { get; set; } = string.Empty;
}
إنشاء عرض Razor لإدخال النص وإخراجه
تقدم صفحة Razor نموذجًا بسيطًا وتعرض النص المعاد صياغته عندما يكون متاحًا.
@model RewriterViewModel
@{
ViewData["Title"] = "Text Rewriter";
}
<h2>@ViewData["Title"]</h2>
<form asp-action="Index" method="post" class="form-horizontal">
<div class="form-group">
<label asp-for="InputText" class="control-label"></label>
<textarea asp-for="InputText" class="form-control" rows="6"></textarea>
<span asp-validation-for="InputText" class="text-danger"></span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Rewrite</button>
</div>
</form>
@if (!string.IsNullOrWhiteSpace(Model.OutputText))
{
<hr />
<h4>Rewritten Text</h4>
<textarea class="form-control" rows="6" readonly>@Model.OutputText</textarea>
}
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
مثال كامل عملي لإعادة كتابة المستند في ASP.NET Core MVC
المثال أدناه يحتوي على ملفات المصدر الكاملة اللازمة لتشغيل الحل.
// ---------------------------------------------------
// Program.cs
// ---------------------------------------------------
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using GroupDocs.Rewriter.Cloud.Sdk.Api;
using GroupDocs.Rewriter.Cloud.Sdk.Client;
using GroupDocs.Rewriter.Cloud.Sdk.Model.Requests;
using GroupDocs.Rewriter.Cloud.Sdk.Model;
using System.Threading.Tasks;
var builder = WebApplication.CreateBuilder(args);
// Add configuration for GroupDocs Rewriter credentials
builder.Configuration.AddInMemoryCollection(new[]
{
new KeyValuePair<string,string>("GroupDocsRewriter:AppSid", "YOUR_APP_SID"),
new KeyValuePair<string,string>("GroupDocsRewriter:AppKey", "YOUR_APP_KEY")
});
builder.Services.Configure<RewriterSettings>(builder.Configuration.GetSection("GroupDocsRewriter"));
// Register GroupDocs Rewriter API client in DI
builder.Services.AddSingleton<IRewriterApi>(sp =>
{
var settings = sp.GetRequiredService<IOptions<RewriterSettings>>().Value;
var config = new Configuration
{
AppSid = settings.AppSid,
AppKey = settings.AppKey
};
return new RewriterApi(config);
});
builder.Services.AddControllersWithViews();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Rewriter}/{action=Index}/{id?}");
app.Run();
// ---------------------------------------------------
// RewriterSettings.cs
// ---------------------------------------------------
public class RewriterSettings
{
public string AppSid { get; set; } = string.Empty;
public string AppKey { get; set; } = string.Empty;
}
// ---------------------------------------------------
// Models/RewriterViewModel.cs
// ---------------------------------------------------
using System.ComponentModel.DataAnnotations;
public class RewriterViewModel
{
[Required]
[Display(Name = "Original Text")]
public string InputText { get; set; } = string.Empty;
[Display(Name = "Rewritten Text")]
public string OutputText { get; set; } = string.Empty;
}
// ---------------------------------------------------
// Controllers/RewriterController.cs
// ---------------------------------------------------
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
public class RewriterController : Controller
{
private readonly IRewriterApi _rewriterApi;
public RewriterController(IRewriterApi rewriterApi)
{
_rewriterApi = rewriterApi;
}
[HttpGet]
public IActionResult Index()
{
return View(new RewriterViewModel());
}
[HttpPost]
public async Task<IActionResult> Index(RewriterViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
// Build request for the Rewriter API
var rewriteRequest = new RewriteRequest
{
Text = model.InputText,
Language = "en", // source language
TargetLanguage = "en", // target language (same for rewriting)
RewriteMode = RewriteModeEnum.Rewrite // choose rewrite mode
};
// Call the API
RewriteResponse response = await _rewriterApi.RewriteAsync(rewriteRequest);
// Populate the view model with the rewritten text
model.OutputText = response?.Result?.Text ?? string.Empty;
return View(model);
}
}
// ---------------------------------------------------
// Views/Rewriter/Index.cshtml
// ---------------------------------------------------
@model RewriterViewModel
@{
ViewData["Title"] = "Text Rewriter";
}
<h2>@ViewData["Title"]</h2>
<form asp-action="Index" method="post" class="form-horizontal">
<div class="form-group">
<label asp-for="InputText" class="control-label"></label>
<textarea asp-for="InputText" class="form-control" rows="6"></textarea>
<span asp-validation-for="InputText" class="text-danger"></span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Rewrite</button>
</div>
</form>
@if (!string.IsNullOrWhiteSpace(Model.OutputText))
{
<hr />
<h4>Rewritten Text</h4>
<textarea class="form-control" rows="6" readonly>@Model.OutputText</textarea>
}
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
ملاحظة: يوضح مثال الشيفرة هذا الوظيفة الأساسية. قبل استخدامه في مشروعك، تأكد من تحديث أي مسارات ملفات وقيم التكوين لتتناسب مع بيئتك الفعلية، وتحقق من أن جميع الاعتمادات المطلوبة مثبتة بشكل صحيح، واختبر بدقة في بيئة التطوير الخاصة بك. إذا واجهت أي مشكلات، يرجى الرجوع إلى الوثائق الرسمية أو التواصل مع فريق الدعم للحصول على المساعدة.
تنفيذ إعادة كتابة المستند عبر REST API باستخدام cURL
فيما يلي سير عمل سريع باستخدام cURL يقوم بأداء نفس عملية إعادة الكتابة عبر نقاط النهاية REST الخاصة بـ GroupDocs Rewriter.
المصادقة والحصول على رمز الوصول
curl -X POST "https://api.groupdocs.cloud/v1/auth/token" \
-H "Content-Type: application/json" \
-d '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_CLIENT_SECRET"}'
تُرجِع الاستجابة access_token الذي ستستخدمه في المكالمات اللاحقة.
تحميل النص المصدر (اختياري للملفات الكبيرة)
curl -X POST "https://api.groupdocs.cloud/v1/storage/file/upload" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@input.txt"
تنفيذ عملية إعادة الكتابة
curl -X POST "https://api.groupdocs.cloud/v1/rewriter/rewrite" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"text": "Your original text goes here.",
"language": "en",
"targetLanguage": "en",
"rewriteMode": "Rewrite"
}'
تحتوي استجابة JSON على النص المعاد صياغته في الحقل result.text.
تحميل النتيجة (إذا قمت بتخزينها كملف)
curl -X GET "https://api.groupdocs.cloud/v1/storage/file/download?path=output.txt" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o rewritten.txt
لمزيد من التفاصيل حول معلمات الطلب وتنسيقات الاستجابة، راجع وثائق API الرسمية.
الخلاصة
دمج GroupDocs.Rewriter Cloud SDK for .NET في مشروع ASP.NET Core MVC سهل بمجرد اتباع دليل الخطوة‑بخطوة للتكامل مع ASP.NET Core MVC. تتولى المكتبة التعامل مع عمليات إعادة كتابة اللغة الطبيعية، مما يتيح لك التركيز على واجهة المستخدم والمنطق التجاري. تذكر تأمين AppSid و AppKey الخاصين بك، واستخدام الترخيص المؤقت للتقييم، والترقية إلى ترخيص كامل لأعباء العمل الإنتاجية. مع وجود الشيفرة وأمثلة cURL، يمكنك الآن إضافة إعادة كتابة نص ذكية إلى أي تطبيق ويب .NET.
الأسئلة المتكررة
كيف يتعامل دليل الخطوة‑بخطوة للتكامل مع ASP.NET Core MVC مع استجابات الأخطاء من API؟
يتحقق مثال المتحكم ModelState.IsValid قبل استدعاء API ويستخرج RewriteResponse. إذا أعاد API خطأ، سيكون كائن response فارغًا (null)، وستظهر الواجهة مخرجات فارغة فقط. للحصول على معالجة مفصلة للأخطاء، راجع الوثائق الرسمية.
هل يمكنني إعادة كتابة مستندات غير النص العادي، مثل DOCX أو PDF، باستخدام نفس النهج؟
نعم. تقبل واجهة برمجة تطبيقات Rewriter النص الخام المستخرج من الصيغ المدعومة. يمكنك أولاً استخدام GroupDocs.Parser أو GroupDocs.Conversion لاستخراج النص، ثم تمريره إلى نقطة النهاية لإعادة الكتابة. كلا SDKs مدرجان في عائلة منتجات GroupDocs.
هل من الممكن تشغيل عملية إعادة الكتابة بشكل غير متزامن في موقع ويب عالي الحركة؟
بالطبع. يستخدم المتحكم await _rewriterApi.RewriteAsync(...)، وهو غير متزامن بالكامل ويتماشى مع خط أنابيب ASP.NET Core غير المتزامن. هذا يتوافق مع النمط الموضح في دليل الخطوة‑بخطوة للتكامل مع ASP.NET Core MVC.
أين يمكنني الحصول على ترخيص مؤقت للاختبار؟
ترخيص مؤقت متاح من صفحة الترخيص المؤقت. يتيح لك تقييم SDK دون الالتزام بالشراء.
