انقر إذا كنت ترغب في المشروع. طلب السحب موضع تقدير كبير. تابعني @kansiris87 للحصول على التحديثات الفنية.
| لا. | أسئلة |
|---|---|
| 1 | [ما هو الراحة؟](#ما هو الراحة؟) |
| 2 | [شرح مبدأ REST؟](#شرح مبدأ REST؟) |
| 3 | [ما الفرق بين REST وSOAP؟](#ما الفرق بين REST وSOAP؟) |
| 4 | [ما هي واجهة برمجة تطبيقات الويب ASP.NET؟](#ما هي واجهة برمجة تطبيقات الويب ASP.NET؟) |
| 5 | [لماذا تختار ASP.NET WEB API؟](#لماذا تختار ASP.NET WEB API؟) |
| 6 | [ما الفرق بين WCF وASP.NET WEB API وWCF REST وخدمة الويب؟](#ما الفرق بين WCF وASP.NET WEB API وWCF REST وخدمة الويب؟) |
| 7 | [أيهما تختار بين WCF وWEB API؟](#أيهما تختار بين WCF وWEB API؟) |
| 8 | [ما هو الفرق بين ASP.NET MVC وASP.NET WEB API؟](#Hما هو الفرق بين ASP.NET MVC وASP.NET WEB API؟) |
| 9 | [هل يمكنك إرجاع العرض باستخدام طريقة WEB API؟](#هل يمكنك إرجاع العرض باستخدام طريقة WEB API؟) |
| 10 | [هل يمكنك تغيير اسم إجراء WEB API مثل ASP.NET MVC؟](# هل يمكنك تغيير اسم إجراء WEB API مثل ASP.NET MVC؟) |
|1 | [هل يمكنك تقييد طريقة إجراء WEB API ليتم استدعاؤها فقط بواسطة HTTP GET أو POST أو PUT أو DELETE؟](# هل يمكنك تقييد طريقة إجراء WEB API ليتم استدعاؤها فقط بواسطة HTTP GET أو POST أو PUT أو DELETE؟)| |2 | [كيفية استدعاء WEB API في ASP.NET MVC؟](#كيفية استدعاء WEB API في ASP.NET MVC؟)| |3 | [كيف يختلف توجيه ASP.NET API عن توجيه ASP.NET MVC؟](#كيف يختلف توجيه ASP.NET API عن توجيه ASP.NET MVC؟)| |4 | [كيفية تمكين توجيه السمات في ASP.NET WEB API2؟](#كيفية تمكين توجيه السمات في ASP.NET WEB API2؟)| |5 | [كيفية تحديد توجيه السمات في ASP.NET WEB API2؟](#كيفية تحديد توجيه السمات في ASP.NET WEB API2؟)|
REST تعني نقل الحالة التمثيلية. هذا بروتوكول لتبادل البيانات عبر بيئة موزعة. REST هو أسلوب معماري يتعامل مع كل خدمة كمورد ويتمكن من الوصول إلى البيانات من خلال أساليب بروتوكول HTTP مثل GET وPOST وPUT وDELETE.
تتكون أبنية نمط REST من العملاء والخوادم. يقوم العملاء ببدء الطلبات إلى الخوادم التي تقوم بمعالجة هذه الطلبات وإرجاع الاستجابات بناءً على هذه الطلبات. وتتمحور هذه الطلبات والاستجابات حول نقل تمثيلات هذه الموارد.
REST عبارة عن مجموعة من المبادئ التي تحدد كيفية استخدام معايير الويب، مثل HTTP وURIs. هناك خمسة مبادئ REST مهمة كما هو موضح أدناه -
الموارد القابلة للعنونة - يجب تحديد كل مورد بواسطة URI (معرف فريد)
واجهات بسيطة وموحدة - يعتمد REST على بروتوكول HTTP، لذا استخدم طريقة HTTP GET وPOST وPUT وDELETE لتنفيذ الإجراءات. وهذا يجعل REST بسيطًا وموحدًا.
التمثيل الموجه - يتم تبادل تمثيل الموارد. يتم استخدام GET لإرجاع تمثيل وPUT، ويقوم POST بتمرير التمثيل إلى الخادم بحيث تتغير الموارد الأساسية. قد يكون التمثيل في العديد من التنسيقات مثل XML وJSON وما إلى ذلك.
التواصل بدون حالة - قد يكون للتطبيق حالة ولكن لا توجد بيانات جلسة عميل مخزنة على الخادم. يجب أن يحتفظ العميل بأي بيانات محددة للجلسة ويحتفظ بها، ثم ينقلها إلى الخادم مع كل طلب حسب الحاجة.
قابلة للتخزين المؤقت - يجب أن يكون العملاء قادرين على تخزين الاستجابات مؤقتًا لاستخدامها مرة أخرى.
الفرق بين REST وSOAP موضح أدناه: SOAP REST SOAP يرمز إلى بروتوكول الوصول إلى الكائنات البسيطة، ويرمز REST إلى نقل الحالة التمثيلية. وهو بروتوكول قائم على XML مبني على الجزء العلوي من HTTP أو في بعض الأحيان TCP/IP أو SMTP. REST ليس بروتوكولًا ولكنه أسلوب معماري يعتمد على الموارد. يحتوي SOAP على مواصفات لكل من التنفيذ عديم الحالة والتنفيذ. REST عديم الجنسية تمامًا. يفرض SOAP تنسيق الرسالة كـ XML. لا يفرض REST تنسيق الرسالة على هيئة XML أو JSON. يحتوي SOAP على مواصفات قياسية محددة. على سبيل المثال، WS-Security هي المواصفات الخاصة بتنفيذ الأمان. ليس لها مواصفات قياسية محددة. تتكون رسالة SOAP من مظروف يتضمن رؤوس SOAP ونصه لتخزين المعلومات الفعلية التي تريد إرسالها. يستخدم REST رؤوس HTTP المضمنة (مع مجموعة متنوعة من أنواع الوسائط) لنقل المعلومات التعريفية واستخدام أفعال GET وPOST وPUT وDELETE لتنفيذ عمليات CRUD. يستخدم SOAP واجهات وعمليات مسماة لعرض خدمتك. يستخدم REST URI وأساليب مثل (GET، PUT، POST، DELETE) لكشف الموارد. الأداء بطيء مقارنة بـ REST. REST سريع مقارنة بالصابون.
ASP.NET WEB API هو إطار عمل لبناء خدمات HTTP التي يمكن استخدامها من قبل مجموعة واسعة من العملاء بما في ذلك المتصفحات والهواتف المحمولة وأجهزة iPhone والأجهزة اللوحية. إنه مشابه جدًا لـ ASP.NET MVC لأنه يحتوي على ميزات MVC مثل التوجيه أو وحدات التحكم أو نتائج الإجراء أو المرشح أو مجلدات النماذج أو حاوية IOC أو حقن التبعية. ولكنها ليست جزءًا من إطار عمل MVC. إنه جزء من النظام الأساسي ASP.NET ويمكن استخدامه مع MVC وأنواع أخرى من تطبيقات الويب مثل ASP.NET WebForms. ويمكن استخدامه أيضًا كتطبيق خدمات ويب مستقل. ميزات ASP.NET WEB API 1. وهو يدعم إجراءات CRUD القائمة على الاتفاقية لأنه يعمل مع أفعال HTTP GET وPOST وPUT وDELETE. 2. تحتوي الاستجابات على رأس قبول ورمز حالة HTTP. 3. يتم تنسيق الاستجابات بواسطة MediaTypeFormatter الخاص بـ WEB API إلى JSON أو XML أو أي تنسيق تريد إضافته كـ MediaTypeFormatter. 4. قد يقبل وينشئ المحتوى الذي قد لا يكون موجهًا للكائنات مثل الصور وملفات PDF وما إلى ذلك. 5. لديه دعم تلقائي لـ OData. ومن ثم، فمن خلال وضع السمة [Queryable] الجديدة على أسلوب وحدة تحكم يُرجع IQueryable، يمكن للعملاء استخدام الأسلوب لتكوين استعلام OData. 6. يمكن استضافته في التطبيق أو على IIS. 7. كما أنه يدعم ميزات MVC مثل التوجيه أو وحدات التحكم أو نتائج الإجراء أو المرشح أو مجلدات النماذج أو حاوية IOC أو حقن التبعية مما يجعلها أكثر بساطة وقوة.
اليوم، لا يكفي تطبيق على شبكة الإنترنت للوصول إلى عملائه. الناس أذكياء للغاية، فهم يستخدمون أجهزة iPhone والهواتف المحمولة والأجهزة اللوحية وما إلى ذلك في حياتهم اليومية. تحتوي هذه الأجهزة أيضًا على الكثير من التطبيقات لتسهيل الحياة. في الواقع، نحن ننتقل من الويب إلى عالم التطبيقات.
لذلك، إذا كنت ترغب في عرض بيانات الخدمة الخاصة بك على المتصفحات وكذلك جميع تطبيقات الأجهزة الحديثة بطريقة سريعة وبسيطة، فيجب أن يكون لديك واجهة برمجة تطبيقات متوافقة مع المتصفحات وجميع هذه الأجهزة.
على سبيل المثال، تويتر وفيسبوك وGoogle API لتطبيقات الويب وتطبيقات الهاتف.
WEB API هو الإطار الرائع لعرض بياناتك وخدماتك على أجهزة مختلفة ومختلفة. علاوة على ذلك، تعد WEB API مفتوحة المصدر ومنصة مثالية لبناء خدمات REST-ful عبر .NET Framework. على عكس خدمة WCF Rest، فإنها تستخدم الميزات الكاملة لـ HTTP (مثل معرفات URI، ورؤوس الطلب/الاستجابة، والتخزين المؤقت، وتعيين الإصدارات، وتنسيقات المحتوى المختلفة) ولا تحتاج إلى تحديد أي إعدادات تكوين إضافية لأجهزة مختلفة على عكس خدمة WCF Rest.
إذا كنا بحاجة إلى خدمة ويب ولا نحتاج إلى SOAP، فإن ASP.NET WEB API هو الخيار الأفضل.
يتم استخدامه لإنشاء خدمات HTTP بسيطة غير مستندة إلى SOAP أعلى خط أنابيب رسائل WCF الحالي.
لا يحتوي على تكوين ممل وواسع النطاق مثل خدمة WCF REST.
إنشاء خدمة بسيطة باستخدام WEB API. مع خدمات WCF REST، يكون إنشاء الخدمة أمرًا صعبًا.
إنه يعتمد فقط على HTTP ويسهل تعريفه وكشفه واستهلاكه بطريقة REST-ful.
إنها بنية خفيفة الوزن وجيدة للأجهزة ذات النطاق الترددي المحدود مثل الهواتف الذكية.
إنه مفتوح المصدر.
يحتوي .NET Framework على عدد من التقنيات التي تسمح لك بإنشاء خدمات HTTP مثل Web Service وWCF والآن WEB API. هناك الاختلافات التالية بين هذه الأربعة:
خدمة الويب
يعتمد على SOAP ويعيد البيانات في نموذج XML.
وهو يدعم بروتوكول HTTP فقط.
إنها ليست مفتوحة المصدر ولكن يمكن لأي عميل يفهم لغة XML أن يستخدمها.
يمكن استضافته فقط على IIS.
صندوق رأس المال العامل
ويعتمد أيضًا على SOAP ويعيد البيانات في نموذج XML.
إنه تطور خدمة الويب (ASMX) ويدعم البروتوكولات المختلفة مثل TCP، HTTP، HTTPS، Named Pipes، MSMQ.
المشكلة الرئيسية في WCF هي تكوينها الممل والواسع النطاق.
إنها ليست مفتوحة المصدر ولكن يمكن لأي عميل يفهم لغة XML أن يستخدمها.
يمكن استضافته في التطبيق أو على IIS أو باستخدام خدمة النافذة.
راحة WCF
لاستخدام WCF كخدمة WCF Rest، يجب عليك تمكين webHttpBindings.
وهو يدعم أفعال HTTP GET وPOST بواسطة سمات [WebGet] و[WebInvoc] على التوالي.
لتمكين أفعال HTTP الأخرى، يتعين عليك إجراء بعض التكوينات في IIS لقبول طلب هذا الفعل المعين على ملفات .svc
يحتاج تمرير البيانات عبر المعلمات باستخدام WebGet إلى التكوين. يجب تحديد UriTemplate
وهو يدعم تنسيق بيانات XML وJSON وATOM.
واجهة برمجة تطبيقات الويب
هذا هو الإطار الجديد لبناء خدمات HTTP بطريقة سهلة وبسيطة.
WEB API عبارة عن منصة مفتوحة المصدر ومنصة مثالية لبناء خدمات REST-ful عبر .NET Framework.
على عكس خدمة WCF Rest، فإنها تستخدم الميزات الكاملة لـ HTTP (مثل معرفات URI، ورؤوس الطلب/الاستجابة، والتخزين المؤقت، وإصدار الإصدارات، وتنسيقات المحتوى المتنوعة)
كما أنه يدعم ميزات MVC مثل التوجيه، ووحدات التحكم، ونتائج الإجراء، والمرشح، ومجلدات النماذج، وحاوية IOC أو حقن التبعية، واختبار الوحدة مما يجعلها أكثر بساطة وقوة.
يمكن استضافته في التطبيق أو على IIS.
إنها بنية خفيفة الوزن وجيدة للأجهزة ذات النطاق الترددي المحدود مثل الهواتف الذكية.
يتم تنسيق الاستجابات بواسطة MediaTypeFormatter الخاص بـ WEB API إلى JSON أو XML أو أي تنسيق تريد إضافته كـ MediaTypeFormatter.
تساعدك النقاط التالية على الاختيار بين WCF وWEB API:
اختر WCF عندما تريد إنشاء خدمة تدعم سيناريوهات خاصة مثل المراسلة أحادية الاتجاه وقوائم انتظار الرسائل والاتصال المزدوج وما إلى ذلك.
اختر WCF عندما تريد إنشاء خدمة يمكنها استخدام قنوات النقل السريع عندما تكون متاحة، مثل TCP أو Named Pipes أو ربما حتى UDP (في WCF 4.5)، وتريد أيضًا دعم HTTP عندما تكون جميع قنوات النقل الأخرى غير متوفرة.
اختر WEB API عندما تريد إنشاء خدمات موجهة نحو الموارد عبر HTTP يمكنها استخدام ميزات HTTP الكاملة (مثل معرفات URI، ورؤوس الطلب/الاستجابة، والتخزين المؤقت، وتعيين الإصدارات، وتنسيقات المحتوى المتنوعة).
اختر WEB API عندما تريد عرض خدمتك لمجموعة واسعة من العملاء بما في ذلك المتصفحات والهواتف المحمولة وأجهزة iPhone والأجهزة اللوحية.
توجد الاختلافات التالية بين ASP.NET MVC وWEB API:
يتم استخدام ASP.NET MVC لإنشاء تطبيقات الويب التي تُرجع كلاً من طرق العرض والبيانات ولكن يتم استخدام ASP.NET WEB API لإنشاء خدمات HTTP كاملة بطريقة سهلة وبسيطة تُرجع البيانات فقط وليس العرض.
تساعد WEB API على إنشاء خدمات REST-ful عبر .NET Framework كما أنها تدعم التفاوض على المحتوى (يتعلق الأمر بتحديد أفضل بيانات تنسيق الاستجابة التي يمكن أن يقبلها العميل. يمكن أن تكون JSON أو XML أو ATOM أو بيانات منسقة أخرى ) ، استضافة ذاتية غير موجودة في MVC.
تهتم WEB API أيضًا بإرجاع البيانات بتنسيق معين مثل JSON أو XML أو أي تنسيق آخر بناءً على رأس القبول في الطلب ولا تقلق بشأن ذلك. يقوم MVC بإرجاع البيانات بتنسيق JSON فقط باستخدام JsonResult.
في WEB API، يتم تعيين الطلب إلى الإجراءات بناءً على أفعال HTTP ولكن في MVC يتم تعيينه إلى اسم الإجراءات.
ASP.NET WEB API هو إطار عمل جديد وجزء من إطار عمل ASP.NET الأساسي. إن ربط النموذج والمرشحات والتوجيه وميزات MVC الأخرى الموجودة في WEB API تختلف عن MVC وهي موجودة في مجموعة System.Web.Http الجديدة. في MVC، توجد هذه الميزات داخل System.Web.Mvc. ومن ثم يمكن أيضًا استخدام WEB API مع ASP.NET وكطبقة خدمة مستقلة.
يمكنك مزج WEB API ووحدة التحكم MVC في مشروع واحد للتعامل مع طلبات AJAX المتقدمة التي قد تعيد البيانات بتنسيق JSON أو XML أو أي تنسيق آخر وإنشاء خدمة HTTP كاملة. عادةً ما يُطلق على ذلك اسم الاستضافة الذاتية لـ WEB API.
عندما يكون لديك وحدة تحكم MVC وWEB API مختلطة وتريد تنفيذ التفويض، فيجب عليك إنشاء مرشحين أحدهما لـ MVC والآخر لـ WEB API نظرًا لأن كلاهما مختلفان.
علاوة على ذلك، فإن WEB API عبارة عن بنية خفيفة الوزن ويمكن استخدامها أيضًا مع تطبيقات الهواتف الذكية باستثناء تطبيق الويب.
على عكس ASP.NET MVC، يتم استخدام WEB API لإرجاع البيانات فقط. يمكن أن تكون البيانات عبارة عن سلسلة أو JSON أو XML أو نص وما إلى ذلك. ولا يمكنها إرجاع عرض مثل ASP.NET MVC.
مثل ASP.NET MVC، يمكنك أيضًا تغيير اسم إجراء WEB API باستخدام سمة ActionName كما هو موضح أدناه:
[HttpGet] [ActionName("GetProducts")] public IEnumerable ProductList() { return db.Products.AsEnumerable(); }
مثل ASP.NET MVC، يمكنك أيضًا تقييد طريقة عمل WEB API ليتم استدعاؤها فقط من خلال طلب HTTP محدد عن طريق تطبيق سمة HttpGet أو HttpPost أو HttpPut أو HttpDelete.
إذا كنت تريد تقييد طريقة عمل لطلب HTTP Get فقط، فقم بتزيينها بسمة محدد طريقة عمل HttpGet كما هو موضح أدناه:
[HttpGet] public IEnumerable ProductList() { return db.Products.AsEnumerable(); }
يمكن استدعاء ASP.NET WEB API باستخدام عنوان HttpClient وWEB API كما هو موضح أدناه:
فئة عامة ProductController: وحدة تحكم { HttpClient Client = new HttpClient(); Uri BaseAddress = new Uri("http://localhost:131/"); public ActionResult Index() { Client.BaseAddress = BaseAddress; استجابة HttpResponseMessage = Client.GetAsync("productservice/GetProducts").Result; إذا (response.IsSuccessStatusCode) { var data = Response.Content.ReadAsAsync<IEnumerable>().Result; عرض الإرجاع(البيانات); } عرض الإرجاع () ؛ } }
يستخدم كل من ASP.NET MVC وASP.NET WEB API التوجيه لمراقبة الطلب الوارد ويتم تحديد مسار واحد على الأقل حتى يعمل. الفرق بين هذين التوجيهين موضح أدناه:
في WEB API، تعد المعلمة {action} لنمط المسار اختيارية ولكن يمكنك تضمين معلمة {action}. في ASP.NET MVC {action} المعلمة إلزامية.
يجب أن تحتوي أساليب الإجراء المحددة في وحدة تحكم API إما على سمة أفعال الإجراء HTTP (GET، POST، PUT، DELETE) أو أن تحتوي على أحد أفعال الإجراءات HTTP كبادئة لاسم أساليب الإجراءات. في ASP.NET MVC، يمكن استدعاء أسلوب الإجراء افتراضيًا بواسطة أفعال HTTP GET أو POST، ولاستخدام أفعال HTTP أخرى تحتاج إلى تعريفها كسمة.
على عكس ASP.NET MVC، يمكن لـ Web API استقبال نوع معقد واحد فقط كمعلمة.
يعد تمكين توجيه السمات في ASP.NET WEB API2 أمرًا بسيطًا، ما عليك سوى إضافة استدعاء إلى طريقة MapHttpAttributeRoutes() باستخدام طريقة Register() لملف WebApiConfig.cs.
public static class WebApiConfig { public static void Register(HttpConfiguration config) { // تمكين توجيه السمة config.MapHttpAttributeRoutes(); } }
يمكنك أيضًا دمج توجيه السمات مع التوجيه المستند إلى الاتفاقية.
فئة عامة ثابتة WebApiConfig { public static void Register(HttpConfiguration config) {
// تمكين توجيه السمات config.MapHttpAttributeRoutes(); // التوجيه القائم على الاتفاقية. config.Routes.MapHttpRoute( الاسم: "DefaultApi"،
RouteTemplate: "api/{controller}/{id}"، الإعدادات الافتراضية: new { id = RouteParameter.Optional });
} }
مثل ASP.NET MVC5، يمكنك أيضًا تحديد توجيه السمات في WEB API2 على مستوى وحدة التحكم ومستوى الإجراء كما هو موضح أدناه:
[RoutePrefix("Service/User")] public class UserController : ApiController { //GET الطريق: api/User public IEnumerable Get() { return new string[] { "value1", "value2" };
}
[Route("{id}")] // الحصول على المسار: الخدمة/المستخدم/1 public string Get(int id) { return "value"; }
[Route("")] // طريق POST: الخدمة/المستخدم/ public void Post([FromBody]string value) { } }
• التوجيه على مستوى الإجراء - يمكنك تحديد المسارات على مستوى الإجراء والتي تنطبق على إجراء معين في وحدة التحكم.
public class UserController : ApiController { // الحصول على المسار: api/User
public IEnumerable Get() { return new string[] { "value1", "value2" };
}
[Route("Service/User/{id}")] // مسار الحصول على: الخدمة/المستخدم/1 public string Get(int id) { return "value"; } [Route("Service/User/")] // طريق POST: الخدمة/المستخدم/ public void Post([FromBody]string value) { } }