**ويندوز كوميونيكاشن فاونداشن** في إطار عمل دوت نت
**ويندوز كوميونيكاشن فاونداشن** (بالإنجليزية: Windows Communication Foundation)‏ (أو اختصاراً: WCF) هو عبارة عن مكتبة واجهة برمجة تطبيقات (بالإنجليزية: API)‏، وجزء من إطار عمل دوت نت، مخصص لبناء البرامج التي تحتاج إلى التواصل فيما بينها.
وقد كان في الأصل مدرجا تحت اسم "Indigo"، وهو واحد من أربعة واجهات برمجية جديدة، اصدرتها مايكروسوفت في ديسمبر 2006 مع الإصدار 3.0 من إطار عمل دوت نت، وهي:

1. **ويندوز كوميونيكاشن فاونداشن (WCF)**: الواجهة المختصة باتصالات البرامج
2. **(WPF Windows Presentation Foundation(Avlon**: الواجهة المختصة ببناء واجهات استخدام للبرامج غنية الواجهة
3. **البطاقة الرقمية لويندوز CardSpace**: تخزن للعملاء دليل لهوياتهم الرقمية، مظهراً إياها لهم في شكل بظاقات، حيث يوفر واجهة متناسقة تمكن الناس بسهولة من استخدام الهويات الرقمية في البرامج ومواقع الويب التي تقبلهم
4. **أساسيات سير عمل ويندوز (WF)**: هي تكنولوجيا مايكروسوفت لتعريف، وتنفيذ، والتحكم في سير العمل البرمجي (بالإنجليزية: Workflow)‏

ولأن WCF جزء من إطار عمل دوت نت فإن البرامج التي تستخدمه يمكن برمجتها بأي لغة من لغات إطار عمل دوت نت.

لمحة عامة
---------

WCF يوحد مختلف نماذج برمجة الاتصالات المدعومة في إطار عمل دوت نت إلى نموذج واحد.
صدر في نوفمبر 2005.

تقدم Net 2.0 واجهات منفصلة (API) للاتصالات القائمة على SOAP،
و ذلك لتحقيق أقصى قدر من خدمات العمل البينى interoperability Web Services، ومن الاتصالات الثنائية المحسنة binary-optimized communication بين التطبيقات التي تعمل على أجهزة ويندوز (Net Remoting.)،
والمعاملات القامة على الاتصالات transactional communications،
والمعاملات الموزعة على أكثر من جهاز (Distributed Transactions)،
والاتصالات غير المتزامنة (asynchronous communications (Message Queues.

و قد قامت WCF بتوحيد قدرات هذه الآليات إلى نموذج واحد عام شامل للاتصالات والبرمجة خدمية التوجه (بالإنجليزية: Service-oriented programming)‏.

وتقوم WCF باستخدام SOAP messages بين عمليتين، مما يجعل تطبيقات القائمة على WCF متبادلة العمل البينى مع أي عملية أخرى تتواصل عبر SOAP messages.

عندما تتواصل عملية قائمة على WCF مع عملية غير قائمة على WCF، فإنها تستخدم تكويد XML.

لكن عندما تتواصل مع عملية أخرى قائمة على WCF يتم تشفير رسالة الـ SOAP في شكل رقمي ثنائي محسن optimized binary format
وكلا من الطريقتين في التشفير مطابقة لهياكل البيانات data structure بنظام SOAP format وتسمى Infoset

و تقوم WCF باستخدام نظام ترميز pluggable، مما يسمح للمبرمجين كتابة التشفير الخاصة بهم.

ومع إطلاق الإصدار 3.5 من إطار عمل دوت نت. في نوفمبر 2007، أطلقت مايكروسوفت مشفر encoder لتقديم الدعم بالنسبة إلى
JSON serialization format على WCF، وهذه الخدمة تسمح لـ WCF Service بعمل requests من صفحات AJAX-powered web pages.

البنية الموجهة نحو الخدمات Service oriented architecture
--------------------------------------------------------

صممت WCF وفقا لمبادئ البنية خدمية التوجه (بالإنجليزية: Service-oriented architecture)‏ لكي تدعم الحوسبة الموزعة. حيث الخدمات يستعملها المستهلك (بالإنجليزية: consumers)‏.

يمكن للعملاء (بالإنجليزية: Clients)‏ استعمال خدمات متعددة، ويمكن للخدمة (بالإنجليزية: Service)‏ أن يستعملها عملاء متعددون.

الخدمة عادة ما يكون لها أي (WSDL interface (Web Services Description Language حيث يمكن أي عميل WCF من استخدام الخدمة، بغض النظر عن النظام الموجودة فيه الخدمة Service.

WCF تشمل العديد من مبادئ ومقاييس خدمات الإنترنت المتقدمة Webservice WS مثل WS-Addressing، WS-ReliableMessaging و WS-Security.

وحيث أن مايكروسوفت هي أحد أعضاء WS-I فإنه من غير الواضح كم عدد الـ WS-I profiles التي تنوي دعمها كاملة.

تعريف WCF Services
------------------

تعرف في البرنامج في شكل class، وبه يعرف العقد (بالإنجليزية: interface)‏ تمثل methods فيه العمليات التي تؤديها الخدمة وعادة، تعرف المدخلات والمخرجات في interface. يمكنك تصور ذلك باعتباره Data Transfer Objects.

البيانات، وعقود الخدماتتعرف في البرنامج باستخدام جمل معينة تعرف في الدوت نت باسم Attributes.

أي class يعرض باعتباره خدمة WCF يجب أن تكون به Attributes باسم ServiceContract أو يكون تطبيقات لواجهة مميزة به (or implement an interface marked with it).

كل methods التي يمكن للعملاءاستخدامها من خلال SOAP يجب أن تكون مميزة بكتابة Attribute OperationContract.

كل classes or structures التي تعرف البيانات التي سيتم نقلها إلى أو من العمليات لابد من تمييزها هي الأخرى بكتابة Attribute OperationContract.

هذه ال Attribute تدعم الجيل الاوتوماتيكى من descriptions WSDL للعمليات المصدرة exposed methods التي يمكن استعمالها من قبل العميل أو إعلانها إليه.

تستطيع الخدمة تصدير عقود متعددة multiple Service Contracts. وهذا يمكن عمله بتعريف multiple.NET interfaces كل منها مميز كعقد للخدمة.

وتسمح أيضا ServiceContract وAttributes OperationContract للـ interface بلإشارة إلى عقد سابق التعريف، مما يوفر خياراً لدعم إصدارات مختلفة من interface.
جميع عقود Services مرتبطة بعقود بيانات ضمنية أو صريحة التي تحدد البيانات التي تعمل على هذه الخدمة.

إذا كانت parameters المقبولة أو المخرجة من ال service methods تتكون من أنواع بدائية primitive types integer, double, boolean), وغير ذلك)، فإن البيانات العقد يعرف ضمنيا من قبل WCF. إذا، من ناحية أخرى، إذا كانت البيانات من النوع معقدة مثل object or a struct، فإنه لا بد من تعريف صريح من قبل المبرمج عن طريق تعريف Attribute.

عقود البيانات تحدد كيفية تسلسل بيانات ونزع تسلسل البيانات serialization and de-serialization، مما يسمح بتمثيل objects التي تدخل أو تخرج حسب المطلوب.

عقد البيانات يعرف باستخدام Attribute DataContract في a class أو structure. أعضاء ال structure التي ستستخدمها الService تحتاج إلى التمييز بواسطة الAttribute DataMember. فقط أولئك الأعضاء سوف تنقل بين الخدمة والعملاء.

و بنفس الطريقة التي يمكن بها لعدة classes تمثيل نفس الـ interface، يمكن بها لعدة classes تطبيق نفس عقد البيانات Data Contract، ويمكن كيفية تسلسل بيانات ونزع تسلسل البيانات نفسها.

بالتعمق غى هذه الفكرة، نجد أن.NET class معرفة بلغة سي شارب أو فيجوال بيسك يستطيع أن يطبق عقد بيانات Data Contract ويسلسل إلى حزمة بيانات data packet ثم يفك التسلسل إلى Java class أو PHP class.

يمكن التحكم في سلوك الService بشكل عام والعمليات بشكل خاص باستخدام ServiceBehavior و perationBehavior attribute على التوالي.

ال Attribute ServiceBehavior لها خواص مختلفة properties.

فإن ConcurrencyMode property يحدد ما إذا كانت الService ستكون متزامنة concurrent، أي ما إذا كان سيدعم العملاء Clients في وقت واحد أم لا.
وبالمثل، فإن property InstanceMode يحدد ما إذا كانت نسخة واحدة instance من الService ستقوم بالرد على جميع الطلبات المرسلة من العملاء ام انه ستنشأ نسخة جديدة instance Service للرد على كل طلب جديد.

تعريف نقاط اتصال
----------------

عميل الـ WCF يتصل بـ Service WCF عبر نقاط اتصال. كل خدمة تعرض عقودها عبر نقطة اتصال أو أكثر. لكل نقطة اتصال عنوان، وهو عبارة عن URL يعرف أاين يمكن الاتصال بها، وخواص ربط binding properties تحدد كيفية نقل البيانات.

يمكن استخدام الحروف "ABC" لنتذكر «عنوان Address / الروابط Binding / العقد Contract»

الروابط تحدد نوع البروتوكولات المستخدم الاتصال بالخدمة، ما إذا كان ينبغي استخدام آليات أمنية security mechanisms، وما شابه ذلك.

ويحتوى WCF على تعريفات لمعظم بروتوكولات الاتصالات SOAP over HTTP ،SOAP over TCP، و SOAP over Message Queues..إلخ.

عندما يريد العميل الوصول إلى الخدمة عبر نقاط اتصال، فإنه لا يحتاج فقط إلى معرفة العقود، ولكن أيضا على الاتزام بالروابط التي تحددها نقاط اتصال. وهكذا، يجب أن يكون كل من العميل والخدمة متوافقين في نقاط اتصال.

دعم REST في WCF
---------------

في الإصدار 3 من إطار عمل دوت نت، أضافت WCF الدعم للاتصالات -style communications REST.. يمكن للمبرمجين تحديد نماذج عنوان URL Templates في عقود العملية Operation Contracts،

للسماح بتنفيذ الmethods عند استلام طلب request عند موقع معين URL.

يمكن استخراج Parameters من عناوين الموقع تلقائيا URL وإعطاءها إلى ال methods

يوجد دعم ل JSON، و data serialization plain-old-XML

فضلا عن آليات بديلة لأنواع المرتجعات الثنائية binary return types (مثل JPG).

تبني
----

* شركاء مايكروسوفت يدعمون WCF
* SAP يقدم إضافات إلى أدوات مايكروسوفت فيجيوال ستوديو لتوليد client-side proxies تتيح الاتصال بـ SAP Enterprise systems
* شركة آي بي إم ستنتج WCF Channel for MQ
* كما أنتجت أيضاً لتتيح للمبرمجين اتصالات قائمة على WCF للاتصال بأي نظام خارجي افتراضي.

مراجع
-----

1. ↑  "Introducing Windows Communication Foundation in .NET Framework 4". Microsoft. مؤرشف من الأصل في 2018-04-02. اطلع عليه بتاريخ 2011-07-17.
2. ↑  Michele Leroux Bustamante. "Hosting WCF Services". CODE Magazine. مؤرشف من الأصل في 2012-03-12.
3. ↑  "Deploying an Internet Information Services-Hosted WCF Service". شبكة مطوري مايكروسوفت (MSDN). مؤرشف من الأصل في 2016-03-13.

وصلات خارجية
------------

* الصفحة الرئيسية لويندوز كوميونيكاشن فاونداشن، من شبكة مطوري مايكروسوفت
* أمثلة ويندوز كوميونيكاشن فاونداشن، من شبكة مطوري مايكروسوفت
* تحسين أمان خدمات الويب، من كود بلكس
* دليل المبتدئ إلى ويندوز كوميونيكاشن فاونداشن، من شبكة مطوري مايكروسوفت
* 

| * ع
* ن
* ت
إطار عمل دوت نت (NET Framework) |
| --- |
| المعمارية |  مكتبة الصفوف الأساسية (BCL)  **·**  وقت التنفيذ المشترك للغات (CLR)  **·**  كود أكسس سيكيوريتي  **·**  أسمبلي  **·**  مانيفست  **·**  كوم إنترأوب  **·**  أبليكايشن دوماين  |
| لغات البنية التحتية المشتركة للغات (CLI) | 

|  |  |
| --- | --- |
| شائعة  |  سي شارب  **·**  فيجوال بيسك دوت نت  **·**  سي++/سي إل آي  **·**  إف شارب  **·**  جي شارب  **·**  جي سكربت دوت نت  **·**  باورشيل  |
| أخرى  |  أكسوم  **·**  إيه شارب **·**  بوو  **·**  إم  **·**  كوبرا  **·**  آيرون سكيم (آيرون ليسب)  **·**  آيرن بايثون  **·**  آيرن روبي  **·**  نيمرل  **·**  فالانجر  **·**  بي شارب  **·**  سكالا  |

 |
| المكونات |  أدو دوت نت (إنتيتي، خدمات البيانات)  **·**  إيه إس بي دوت نت (أجاكس،إم في سي،دايناميك داتا)  **·**  البطاقة الرقمية لويندوز  **·**  كليك وانس  **·**  سي إل آر بروفايلر  **·**  كوميونيكاشن فاونداشن (WCF)  **·**  وقت تنفيذ اللغات الديناميكية (DLR)  **·**  لينك  **·**  نماذج ويندوز  **·**  إطار عمل التوسع المُدار  **·**  إضافات العمل على التوازي  **·**  دوت نت ريموتينغ  **·**  "روزلين"  **·**   **·**  أساسيات سير عمل ويندوز (WF)  **·**  زامل  |
| التنفيذات الأخرى |  مونو **·**  إطار عمل دوت نت المدمج  **·**  إكس إن أيه  **·**  إطار عمل دوت نت الميكروي  **·**  إطار عمل دوت نت المحمول  **·**  سيلفرلايت  **·**  إس إس سي إل آي (روتر)  |
| مقارنات |  مقارنة سي شارب وفيجوال بيسك  **·**  مقارنة جافا وسي شارب  **·**  مقارنة جافا وإطار عمل دوت نت  |

|  |
| --- |
| **أساسيات اتصال ويندوز** في المشاريع الشقيقة: |
|  |  |

* أيقونة بوابةبوابة برمجيات حرة
* أيقونة بوابةبوابة تقانة المعلومات
* أيقونة بوابةبوابة علم الحاسوب
* أيقونة بوابةبوابة مايكروسوفت