AWAS عبارة عن حزمة إنشاء تعليمات برمجية بسيطة ومحددة لـ ASP.NET مبنية على T4Scaffolding. يتيح لك AWAS إنشاء النماذج القياسية القياسية لوحدات تحكم Web API والخدمات والمستودعات بسرعة استنادًا إلى نموذج الكيان المقدم.
جيثب
نوجيت
السقالات T4 (≥ 1.0.8)
افتح نافذة وحدة تحكم مدير الحزم :
Tools > Library Package Manager > Package Manager Console
قم بتشغيل الأمر التالي:
Install-Package ASP.NET.WebApiScaffolding
يتم تنفيذ كافة الأوامر في وحدة تحكم إدارة الحزم بعد التثبيت.
####لإنشاء وحدة تحكم Web API Student
Scaffold WebApiController Student
* سيؤدي هذا أيضًا إلى إنشاء DbContext وService for Student
تلقائيًا، ولتعطيل مثل هذا السلوك، استخدم علامة -NoChildItems
.
* تعتمد وحدة تحكم Web API وجميع العناصر الفرعية التي تم إنشاؤها على نمط طبقة الخدمة، ليتم إنشاؤها بناءً على نمط المستودع بدلاً من استخدام علامة -Repository
.
####لإنشاء خدمة Student
Scaffold Service Student
* كما هو مذكور أعلاه.
####لإنشاء مستودع Student
Scaffold Repository Student
* من الواضح أن هذا الأمر لا يحتوي على علامة -Repository
####أعلام اختيارية
أعلام | سلوك |
---|---|
-Repository | قم بالتبديل إلى نمط المستودع للنماذج المعيارية التي تم إنشاؤها |
-NoChildItems | لا تقم بإنشاء أي تبعيات أخرى تلقائيًا |
-Force | الكتابة فوق الملف الموجود إذا كان موجودا |
Scaffold WebApiController [-Project] [-CodeLanguage] [-DbContextType] [-Area] [-NoChildItems] [-Repository] [-TemplateFolders] [-Force]
Scaffold Service [-Project] [-CodeLanguage] [-DbContextType] [-Area] [-NoChildItems] [-Repository] [-TemplateFolders] [-Force]
Scaffold Repository [-Project] [-CodeLanguage] [-DbContextType] [-Area] [-NoChildItems] [-TemplateFolders] [-Force]
Scaffold DbContext [-Project] [-CodeLanguage] [-DbContextType] [-Area] [-NoChildItems] [-TemplateFolders] [-Force]
[-optional flag]
بافتراض أننا نعمل مع نموذج يسمى Student
، ستقوم AWAS بإنشاء نماذج معيارية بناءً على نمط طبقة الخدمة. بالنسبة لنموذج معين، ستكون المكدس كما يلي:
StudentController |
---|
خدمة الطلاب |
بدلاً من ذلك، يمكنك إضافة علامة -Repository
لإنشاء لوحات مرجعية بناءً على نمط المستودع، وستكون المكدس كما يلي:
StudentController |
---|
خدمة الطلاب |
مستودع الطلاب |
Project/
...
Controllers/
StudentController.cs
CourseController.cs
...
DataAccessLayer/
ProjectContext.cs
ProjectInitializer.cs
Repositories/
StudentRepository.cs
CourseRepository.cs
...
Services/
StudentService.cs
CourseService.cs
...
...
نظرًا لأن الحزمة مبنية على T4Scaffolding، يمكننا الاستفادة من CustomScaffolder
و CustomTemplate
الذي توفره T4Scaffolding.
#### سقالة مخصصة تتيح لنا السقالة المخصصة إنشاء سقالة نموذجية مخصصة حتى نتمكن من إنشاء نفس اللوحة النموذجية بسهولة.
لإنشاء سقالة مخصصة، قم باستدعاء Foo
:
Scaffold CustomScaffolder Foo
سيتم إنشاء مجلد:
Project/
...
CodeTemplates/
Scaffolders/
Foo/
Foo.ps1
FooTemplate.cs.t4
...
يمكنك الآن تخصيص Foo.ps1
و FooTemplate.cs.t4
حسب احتياجاتك. لاستخدام السقالة المخصصة التي تم إنشاؤها حديثًا، قم بتشغيل:
Scaffold Foo [flags]
####قالب مخصص تسمح لنا القوالب المخصصة بإعادة استخدام السقالات الموجودة التي تأتي مع T4Scaffolding وAWAS ولكن بنمط قالب من اختيارك.
لإنشاء قالب مخصص لـ WebApiController
:
Scaffold CustomTemplate WebApiController WebApiControllerTemplate
سيتم إنشاء مجلد:
Project/
...
CodeTemplates/
Scaffolders/
WebApiController/
WebApiControllerTemplate.cs.t4
...
يمكنك الآن تخصيص WebApiControllerTemplate.cs.t4
حسب احتياجاتك. طالما أن القالب المخصص موجود في المجلد، ستستخدم الحزمة القالب الخاص بك لجميع عناصر WebApiController:
Scaffold WebApiController [flags]
Scaffold CustomTemplate WebApiController WebApiControllerTemplate
Scaffold CustomTemplate Service ServiceWithContextTemplate
Scaffold CustomTemplate Service ServiceWithRepositoryTemplate
Scaffold CustomTemplate Repository RepositoryTemplate
Scaffold CustomTemplate Initializer InitializerTemplate
Scaffold CustomTemplate DbContext DbContextTemplate
Scaffold CustomTemplate DbContext DbContextEntityMemberTemplate
بعض الموارد التي استخدمتها على طول الطريق ...
فشل النوع 'ObjectContent`1' في إجراء تسلسل لنص الاستجابة لنوع المحتوى 'applicationxml; مجموعة الأحرف=utf-8'.
إذا كنت تتلقى رسالة الاستثناء هذه، فأضف المقتطف التالي إلى App_Start/WebApiConfig.cs
> Register()
، وأعد التشغيل.
var json = config . Formatters . JsonFormatter ;
json . SerializerSettings . PreserveReferencesHandling = Newtonsoft . Json . PreserveReferencesHandling . Objects ;
config . Formatters . Remove ( config . Formatters . XmlFormatter ) ;
الحزمة مستوحاة من MvcScaffolding. يمكن عرضه كواجهة برمجة تطبيقات ويب، وإصدار غير متزامن ولكن مع بعض وجهات النظر الراسخة فيما يتعلق بالطبقات وهياكل المجلدات.