سرویس توزیع داده(DDS)یابه اختصار (Data Distribution Service)برای سیستم‌های بدون وقفه یک استانداردگروه مدیریت شی (OMG)ماشين به ماشین (به انگلیسی: Object Management Group) است(که میان‌افزار یاچارچوب اتصال نامیده می‌شود)هدف آن ممکن کردن مبادله های قابل اعتماد، با کارایی بالا، تعامل پذیر، بلادرنگ و مقیاس پذیر داده با استفاده از الگوی انتشار-اشتراک است. DDSبه نیازهای برنامه‌هایی مانند هوافضا و دفاع، کنترل ترافیک هوایی، وسایل نقلیه خودران، دستگاه‌های پزشکی، روباتیک، تولید برق، شبیه‌سازی و آزمایش، مدیریت شبکه هوشمند، سیستم‌های حمل‌ونقل و سایر برنامه‌هایی که نیاز به تبادل اطلاعات در زمان واقعی دارند، می‌پردتازد.

معماری
------

### مدل

DDS یک میان‌افزار شبکه است که برنامه‌نویسی شبکه‌های رایانه‌ایرا ساده می کند.این میان افزار(firmware)الگوی انتشار-اشتراک را برای ارسال و دریافت داده ها، رویدادها و دستورهادر میاننودها(nodes) پیاده سازی می کند.ره هایی که اطلاعات تولید می کنند (ناشران)، «موضوعاتی» را ایجاد می کنند (به عنوان مثال دما، مکان، فشار) و «نمونه هایی» را منتشر می کنند. DDS نمونه ها را به مشترکینی که به آن موضوع علاقه دارند تحویل می دهد.

DDS کارهای انتقال را انجام می‌دهد: آدرس‌دهی پیام، صف آرایی یا صف زدایی (تا مشترکان بتوانند در پلت‌فرم‌های مختلفی از ناشر باشند)، تحویل، کنترل جریان، تلاش‌های مجدد، و غیره. هر گره می‌تواند یک ناشر، مشترک یا هر دو به طور همزمان باشد.

مدل انتشار-اشتراک DDS عملاً برنامه‌نویسی شبکه‌های رایانه‌ایرا برای برنامه های توزیع شده حذف می کند.

DDS از مکانیزم هایی پشتیبانی می کند که فراتر از مدل اولیه انتشار-اشتراک است. مزیت کلیدی این است که برنامه هایی که از DDS برای ارتباط های خود استفاده می کنند جدا شونده هستند. زمان طراحی کمی برای مدیریت تعامل های متقابل آنها صرف می شود. به ویژه، برنامه ها هرگز به اطلاعاتی در مورد سایر برنامه های شرکت کننده، همچون وجود یا مکان آنها نیاز ندارند. DDS به طور شفاف تحویل پیام را بدون نیاز به مداخله برنامه های کاربر انجام می دهد، از جمله:

* تعیین اینکه چه کسی باید پیام ها را دریافت کند.
* جایی که گیرندگان در آن قرار دارند.
* اگر پیام ها نتوانند تحویل داده شوند چه اتفاقی رخ میدهد.

DDS به یک کاربر اجازه می دهد تا پارامترهای کیفیت خدمت( quality of service)یا به اختصار(QOS) را برای پیکربندی مکانیزم های کشف و رفتار از قبل مشخص کند. DDS با مبادله پیام‌ها به صورت ناشناس، برنامه‌های توزیع شده را ساده می‌کند و برنامه‌های پیمانه ای وبا ساختار مناسب را تشویق می‌کند. DDS همچنین به طور خودکار در صورت شکست اولیه ناشران اضافی را با جایگزین کردن آنها مدیریت می کند. مشترکین همیشه نمونه هایی با بالاترین اولویت که داده های آن هنوز معتبر هستند دریافت می کنند (یعنی دوره اعتبار مشخص شده توسط ناشر منقضی نشده باشد). پس از بازیابی، به طور خودکار به حالت اولیه برمی گردد.

**تعامل پذیری**

هر دو پیاده سازی نرم افزاری اختصاصی و منبع باز DDS در دسترس هستند. که اینها شامل رابط های برنامه نویسی (API) و کتابخانه های پیاده سازی شده در زبان های **ایدا** ، **سی** ، C++، **سی شارپ** ، **جاوا**، **پایتون**، **اسکالا**، **لوآ** ، **فارو** و **روبی** است.

عرضه کنندگان DDS برای ابراز و به نمایش کشیدن تعامل پذیری DDS در محل جلسه های فنی OMG Spring از سال 2009 تا 2013 حضور پیدا کرده اند.

در طی دموها، هر عرضه کننده با استفاده از یک مجموعه آزمایشی به نام نمایش اشکال، موضوع های یکدیگر را منتشر می کردند و به اشتراک آن در می آمدند. به عنوان مثال، یک عرضه کننده اطلاعاتی در مورد یک شکل منتشر می کند و سایر عرضه کنندگان می توانند در موضوع مشترک شوند و نتایج را در صفحه نمایش اشکال خود نمایش دهند. هر عرضه کننده به نوبت اطلاعات را منتشر می کند و دیگری مشترک می شود. دو چیز دموها را ممکن کرد: پروتکل DDS-I یا انتشار اشتراک در زمان واقعی(Real-Time Publish-Subscribe)یا یه اختصار(RTPS) و توافق برای استفاده از یک مدل مشترک.

در مارس 2009، سه عرضه کننده تعامل پذیری بین محصول های مجزا و مستقل را نشان دادند که پروتکل OMG Real-time Publish-Subscribe نسخه 2.1 را از ژانویه 2009 اجرا می کردند. این نمایش شامل کشف ناشران و مشترکان یکدیگر در سیستم عامل های مختلف (میکروسافت ویندوز و لینوکس) بود و ارتباط های شبکه چندپخشی و تک پخشی را پشتیبانی می کرد.نمایش تعامل پذیری DDS از سناریوهایی مانند:

* اتصال ساده به شبکه با استفاده از پروتکل اینترنت (IP)(internet protocol)
* کشف ناشران و مشترکین
* کیفیت خدمات (QoS) سازگاری بین درخواست کننده و ارائه دهنده
* شبکه تحمل تاخیر
* چندین موضوع و نمونه از موضوع های
* مالکیت انحصاری موضوع های
* فیلتر کردن محتوای داده های موضوعی از جمله زمان و جغرافیا

تاریخچه
-------

توسعه خصوصیات DDS در سال 2001 آغاز شد. این خصوصیات توسط Real-Time Innovations (RTI)، یک شرکت چارچوب نرم افزاری، و Thales Group، یک شرکت صنایع جنگ افزاری و هوافضایی فرانسوی توسعه داده شده است. در سال 2004، گروه مدیریت شی (OMG) نسخه 1.0 DDS را منتشر کرد. نسخه 1.1 در دسامبر 2005، 1.2 در ژانویه 2007 و 1.4 در آوریل 2015 منتشر شد. DDS توسط چندین حق ثبت اختراع ایالات متحده پوشش داده شده است.خصوصیت های DDS دو سطح از رابط ها را توصیف می کند:

* انتشار-اشتراک با محوریت داده (DCPS) (data-centric publish-subscribe) سطح پایین‌تر که در جهت ارائه کارآمد اطلاعات مناسب به گیرندگان مناسب است.
* یک لایه اختیاری بازسازی محلی داده (DLRL) (data local reconstruction layer) بالاتر، که امکان ادغام ساده DDS را در لایه کاربرد فراهم می کند.

سایر استانداردهای مرتبط از سند اصلی اولیه پیروی کردند. پروتکل بیدرنگ انتشار-اشتراک سیم پروتکل DDS تعامل پذیری پروتکل سیمی ( The Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol Specification) تضمین کرد که اطلاعات منتشر شده در مورد موضوعی با استفاده از اجرای DDS یک عرضه کننده، توسط یک یا چند مشترک با استفاده از پیاده سازی های DDS عرضه کننده یکسان یا متفاوت قابل مصرف است. اگرچه این خصوصیت های جامعه DDS را هدف قرار داده است، اما استفاده از آن محدود نیست. نسخه 2.0 در آوریل 2008، نسخه 2.1 در نوامبر 2010، 2.2 در سپتامبر 2014 و 2.3 در می 2019 منتشر شد.

DDS برای CCM سبک (dds4ccm) (به انگلیسی: DDS for Lightweight CCM) یک الگوی معماری ارائه می دهد که منطق تجاری را از ویژگی های غیر کاربردی جدا می کند. یک برنامه افزودنی در سال 2012 پشتیبانی از جریان ها را اضافه کرد. یک PSM زبان جاوا 5 برای DDS یک اتصال جاوا 5 را تعریف کرد که به عنوان یک مدل خاص بستر (PSM) (به انگلیسی: Platform Specific Model) برای DDS نامیده می شود. این فقط بخش انتشار-اشتراک داده محور (DCPS) (به انگلیسی: Data-Centric Publish-Subscribe) را از خصوصیت های DDS را مشخص کرد. علاوه بر این، API های DDS معرفی شده توسط DDS-XTypes و DDS-CCM را نیز در بر می گیرد. DDS-PSM-Cxx اتصال زبان ISO/IEC C++ PSM را تعریف می‌کند که به عنوان یک مدل خاص پلتفرم (PSM) برای DDS شناخته می‌شود. این یک API جدید C‌++ برای برنامه نویسی DDS ارائه می دهد که برای یک برنامه نویس C++ طبیعی تر است. این خصوصییت های نگاشت هایی را برای رابط های برنامه نویسی (API) مشخص شده در DDS-XTypes و دسترسی به پروفایل های کیفیت خدمت (QoS) مشخص شده در DDS-CCM ارائه می دهد.

انواع موضوع های توسعه پذیر و پویا برای DDS (DDS-XTypes) از ارتباط انتشار-اشتراک داده محور پشتیبانی می کند که در آن موضوع با ساختارهای داده خاص تعریف می شوند. برای توسعه‌پذیر بودن، موضوع DDS از انواع داده‌هایی استفاده می‌کنند که قبل از زمان کامپایل تعریف شده و در سرتاسر فضای داده جهانی DDS استفاده می‌شوند. این مدل زمانی مطلوب است که بررسی نوع استاتیک مفید باشد. نمایه زبان مدلسازی یکپارچه (UML) دامنه ها و موضوع DDS را به عنوان بخشی از تحلیل و مدل سازی طراحی مشخص می کند. این خصوصیات همچنین نحوه انتشار و اشتراک اشیاء را بدون توصیف انواع به زبان دیگری مانند XML یا OMG IDL تعریف می‌کند. یک زبان توصیف واسط (IDL) در سال 2014 به طور مستقل از بخش 3 خصوصیت معماری کارگزار درخواست مشترک شیء (CORBA) (به انگلیسی: Common Object Request Broker Architecture) مشخص شد. این IDL 3.5 با خصوصیت CORBA 3 سازگار بود، اما به عنوان خصوصیت خود استخراج شد و به آن اجازه می داد مستقل از CORBA تکامل یابد.

پروتکل های دیگری که باید ذکر شوند عبارتند از: DDS-XRCE (DDS برای محیط هایی با محدودیت منابع شدید)، این پروتکل مشخصه های امکان ارتباط بین دستگاه های دارای منابع محدود، مانند میکروکنترلر و یک شبکه DDS را فراهم می کند. انتشار و اشتراک موضوعات را از طریق یک سرویس میانی در دامنه DDS و DDS-RPC (RPC Over DDS) که فراخوانی رویه‌ای دوردست را تعریف می‌کند را ممکن می‌سازد. اینها یک ارتباط درخواست/پاسخ دو طرفه را ارائه می دهند و خدمات توزیع شده را تعیین می کنند و با استفاده از یک رابط سرویس به تفصیل می پردازند. همچنین از فراخوانی روش همزمان و ناهمزمان پشتیبانی می کند.با شروع DDS نسخه 1.4 در سال 2015، لایه اختیاری DLRL به یک آیین نامه جداگانه منتقل شد.