لأي مشاريع يناسب .NET
.NET منصة التطوير مفتوحة المصدر من Microsoft، وASP.NET Core هو جانبها الخاص بالويب وواجهات API. بفضل نظام أنواع قوي وأدوات ناضجة وفترات دعم طويلة، يعمل جيداً في الأنظمة التي ستنمو على مدى سنوات وتتزايد قواعد عملها مع الوقت. ويعمل .NET اليوم على Linux، فلست مقيداً بخوادم Windows.
حيث يناسب .NET
- تحتاج إلى أدوار كثيرة وصلاحيات حسب المنطقة أو الوحدة وسجل تدقيق يبيّن من غيّر ماذا
- أنظمة شركتك الحالية وفريقها يعملان بالفعل على .NET
- قواعد العمل معقدة وستزداد، لذا يهم تقسيم الكود إلى طبقات
- التقارير الكثيفة واستيراد البيانات بالجملة جزء من النظام
حيث نقترح طريقاً آخر
- تستهدف نسخة أولى صغيرة من بضع شاشات؛ إعداد ABP ثقيل على هذا الحجم
- المراسلة الفورية في قلب المنتج والفريق يعمل بالكامل بـ TypeScript (نقترح Node.js هنا)
- معظم العمل معالجة مستندات أو تعامل مع نماذج الذكاء الاصطناعي (نقترح Python هنا)
بنية متعددة الطبقات مع ABP Framework
ABP Framework إطار تطبيقات مفتوح المصدر مبني على ASP.NET Core ويقوم على التصميم الموجّه بالمجال (DDD). تأتي إدارة الهوية والأدوار والصلاحيات وسجلات التدقيق والمهام الخلفية والإعدادات كوحدات جاهزة، فنخصص وقتنا لقواعد عمل العميل. ويُقسَّم الحل إلى مشاريع لكل منها مسؤولية واحدة:
| الطبقة | مسؤوليتها | ما يقابلها في مشروع لأحد العملاء |
|---|---|---|
| Domain | الكيانات وقواعد العمل وأحداث المجال | كيانات السجلات والزيارات والعمليات؛ ومعالج حدث يرسل إشعاراً عند تسجيل كل عملية |
| Application | حالات الاستخدام والتحقق من الصلاحيات | طبقتا تطبيق منفصلتان لجانب الجوال ولوحة الإدارة |
| HttpApi.Host | واجهة API والمصادقة وتوثيق API | مضيفان منفصلان لواجهة الجوال وواجهة الإدارة |
| EntityFrameworkCore | الوصول إلى قاعدة البيانات وعمليات migration | PostgreSQL وPostGIS؛ والتقارير الثقيلة باستخدام Dapper |
| DbMigrator | تحديث المخطط والبيانات الأولية | الأدوار والمستخدمون الأوائل |
.NET في مشروع لأحد العملاء
في مشروع لأحد العملاء بنينا منصة تسجيل وإدارة لمؤسسة لديها فرق ميدانية ونقاط متعاقدة. السجلات والزيارات الميدانية وسجل العمليات والصلاحيات حسب المنطقة كلها في نظام واحد. كُتبت الواجهة الخلفية بـ .NET وABP، ولوحة الإدارة بـ Vite وReact، وتطبيق الجوال بـ Expo. أبرز القرارات في الواجهة الخلفية:
- هناك مضيفان منفصلان لواجهة API: أحدهما يستخدمه تطبيق الجوال والآخر لوحة الإدارة. يتشاركان طبقة المجال نفسها، بينما تنفصل طبقات التطبيق والصلاحيات.
- تُحفظ المواقع وحدود المناطق في PostgreSQL باستخدام PostGIS، وتتصل بـ EF Core عبر NetTopologySuite. وعلى ذلك تقوم شاشات الإدارة المعتمدة على الخرائط والتصفية حسب المنطقة.
- كُتبت الاستعلامات الثقيلة مثل القوائم والإحصاءات وتقارير العمليات بلغة SQL مباشرة باستخدام Dapper، ويمر باقي الوصول إلى البيانات عبر EF Core.
- تُكتب سجلات التدقيق في قاعدة بيانات منفصلة عن القاعدة الرئيسية.
- عند تسجيل عملية يُطلق حدث مجال وتصل رسالة SMS إلى الشخص المعني، فتبقى قاعدة العمل منفصلة عن الإشعار.
- تُولَّد رموز QR باستخدام QRCoder، ويتم التصدير إلى Excel باستخدام EPPlus والاستيراد من CSV باستخدام CsvHelper.
- لعمليات الاستيراد بالجملة أداة سطر أوامر خاصة: تعمل أولاً في وضع تجريبي وتُصدر تقريراً، ولا تكتب البيانات إلا عند الموافقة الصريحة.
ما نستخدمه بجانب .NET
ABP Framework
بنية حل متعددة الطبقات ووحدات للهوية والصلاحيات وسجلات التدقيق. بنينا عليه الواجهة الخلفية لمشروع أحد العملاء.
Entity Framework Core
ربط الكائنات بالجداول وإدارة المخطط عبر migration. نستخدمه مع PostgreSQL في المشروع نفسه.
PostGIS وNetTopologySuite
لاستعلامات المواقع والحدود والقرب. تعمل عليهما شاشات الإدارة المزودة بالخرائط.
Dapper
بجانب EF Core، لكتابة استعلامات التقارير والقوائم الحساسة للأداء بلغة SQL مباشرة.
OpenIddict
مصادقة قائمة على الرموز لتطبيق الجوال ولوحة الإدارة. نستخدمه مع وحدة الحسابات في ABP.
Serilog
تسجيل منظم وغير متزامن لتتبع الأخطاء في بيئة التشغيل.
كيف يسير مشروع .NET
- 01
مكالمة تعريفية مجانية
30 دقيقةنتحدث عمّن سيستخدم النظام وبأي أدوار، وعن بنيتك التحتية الحالية والميزانية التي تفكر فيها.
- 02
نطاق مكتوب وعرض سعر
نكتب الكيانات والأدوار والصلاحيات والتكاملات وما تتولاه كل طبقة.
- 03
إصدارات أسبوعية
نسلّم كل أسبوع نسخة تعمل، وتجرّب الشاشات ونقاط النهاية الجديدة بأدوارك أنت.
- 04
الاختبار والإطلاق
يختبر مهندس ضمان جودة أول النسخة قبل الإطلاق، وتُطبَّق عمليات migration والبيانات الأولية على بيئة التشغيل بشكل مضبوط.
- 05
الثلاثون يوماً بعد الإطلاق
30 يوماًنصلح مجاناً الأخطاء التي تظهر في هذه الفترة، وبعدها يمكنك المتابعة بصيانة شهرية.
ننشر المدد ونطاقات الميزانية في صفحتي تطوير البرمجيات المخصصة والأسعار، وتعتمد هذه الصفحة على الأرقام نفسها.
أسئلة شائعة عن .NET
هل عليّ دفع رسوم ترخيص لـ ABP؟
لـ ABP إصدار مفتوح المصدر وإصدار تجاري مدفوع. في مشروع عميلنا استخدمنا الحزم مفتوحة المصدر فقط، ولم تكن هناك حاجة إلى الإصدار التجاري.
هل يحتاج .NET إلى خادم Windows؟
لا. يعمل .NET الحالي على Linux. في مشروع عميلنا يُحزم كل مضيف API وأداة تحديث قاعدة البيانات في صورة Docker مستقلة مبنية على Linux.
هل تطوّرون لوحة الإدارة وتطبيق الجوال أيضاً؟
نعم. في المشروع نفسه طوّرنا لوحة الإدارة باستخدام Vite وReact وتطبيق الجوال باستخدام Expo، ويتصل كلاهما بواجهات .NET البرمجية.
ماذا يبقى لديّ في نهاية المشروع؟
ترخيص دائم لاستخدام البرنامج ووثائقه. ويمكن نقل الكود المصدري إليك مقابل رسوم إضافية تُذكر بشكل منفصل في العرض.