معماری وب گرا (سبکی از سرویس گرایی)

در ابتدای مقاله پیش از آن که وارد بحث معماری وب گرا بشوم یک سوال مطرح میکنم که شاید برای شما هم جالب باشد. آن سوال اینست : آیا SOA پاسخی برای همه چیز در حوزه معماری است ؟ شاید اینطور نباشد. به ترکیب زیر دقت کنید :

WOA  / SOA + WWW + REST

ترکیب فوق ما را چند قدم جلوتر برده و کاستی های سرویس گرایی را پر می کند و مارا یاری می کند تا اپلیکیشن های کامل end-to-end بسازیم ، اگر چه مفهوم WOA شاید چندان فراگیر نباشد ولی بسیاری از آنچه تاکنون در سطح اینترنت می بینیم شالوده همین تفکر وب گرایی است.

معماری وب گرا یا Web-Oriented Architecture در ۲۰۰۶ توسط  Nick Gall از گروه Gartner ابداع شده است. معماری وب گرا یک سبک معماری نرم افزاری است که معماری سرویس گرا (Service-Oriented Architecture) را در راستای اپلیکیشن های تحت وب گسترش می دهد. معماری وب گرا در اصل توسط بسیاری از شبکه های اجتماعی و وب سایت های شخصی ساخته شده است.

 

تعریف رسمی Gartner از معماری وب گرا چنین است : معماری وب گرا یا Web-Oriented Architecture سبکی معمارگونه از معماری سرویس گرا یا همان Service-Oriented Architecture می باشد که به یکپارچگی سیستم ها و کاربران از طریق ابررسانه های مرتبط با هم در سطح جهانی بر اساس معماری وب می پردازد. این نوع معماری بر تمامی اینترفیس ها (رابط کاربری و  رابط کاربردی برنامه نویسی) به منظور دستیابی به تاثیرات شبکه ی جهانی از طریق پنج عنصر رابط اساسی ذیل تاکید دارد :

  • شناسایی منابع
  • بکارگیری منابع از طریق نمایش آنها (منابع وب)
  • پیام های خودتوصیفی
  • ابررسانه بعنوان قلب تپنده موقعیت برنامه
  • درگیر نکردن برنامه

Nick Gall همچنین فرمولی برای تعریف معماری وب گرا (WOA) ارائه داده است که بدین شکل است:

WOA = SOA + WWW + REST

Dion Hinchcliffe مدعی است که معماری وب گرا چنین است: مجموعه ای از هسته پروتکل های وب مانند HTTP, XML است و اینکه تنها تفاوت معماری سرویس گرای سنتی و مفاهیم معماری وب گرا اینست که WOA از REST حمایت می کند. REST متدی به طور فزاینده محبوب ، قدرتمند و ساده به منظور اعمال نفوذ پروتکل انتقال ابر متن HTTP بعنوان یک وب سرویس در چارچوب حقوق خودش است.

پشته ی معماری وب گرا WOA شامل چنین مواردی است :

  • توزیع (HTTP , Feeds)
  • ترکیب (Hypermedia , Mashups)
  • امنیت (Open ID, SSL)
  • قابلیت انتقال داده (XML,RDF)
  • قابلیت نمایش داده (ATOM, JSON)
  • متدهای انتقال (REST, HTTP, Bit Torrent)

بطور کل باید گفت WOA هر چیزی است که در اینترنت وجود دارد و هر چیزی که بر مبنای REST می باشد والبته سرویس گراست. در کلامی گویا باید گفت امروزه معماری وب گرا پراستفاده ترین نوع معماری در جهان تا به امروز بوده است. طبق پیش بینی Gartner در ۲۰۱۴ سبک معماری وب گرای (مبتنی بر REST) در ۸۰% سازمان هایی که سرویس گرایی را دنبال می کنند فراگیر خواهد شد. واقعا صحت یا عدم صحت تحقق این پیش بینی Gartner شاید مهم نباشد ؛ چرا که هر کسی می بایست WOA را بشناسد.

اما REST چیست ؟ Representational State Transfer سبکی از معماری نرم افزار برای سیستم های ابررسانه توزیع شده مانند شبکه جهانی وب است. (منبع : ویکی پدیا) با هم اصول REST رو مرور کنیم :

  • هر چیزی یک منبع است.
  • هر منبعی یک تمثیل دارد.
  • هر منبعی یک نام بخصوص دارد.
  • انتقال موقعیت نیازمند کشف و شهود (Discovery) است.
  • پروتکل شبکه پایه WOA می باشد

بطور خلاصه WOA را بررسی می کنیم :

  • اطلاعات در قالب منابع (Resources) نمایش می یابند.
  • منابع توسط URI ها شناخته می شوند.
  • منابع از طریق HTTP اداره می شوند.
  • معاهدات به صورت ضمنی در نمایش منابع می باشند
  • رابط ها بطور کلی عام هستند.

معماری وب گرای سازمانی

معماری وب گرای سازمانی یا Enterprise Web Oriented Architecture (EWOA) یکی از زیر سبک های SOA می باشد. EWOA مجموعه ای از عناصر ، اصول و فرآیندهای معماری مبتنی بر وب می باشد. وب سایت ها و برنامه های کاربردی جدید مانند Google AdSense, Wikipedia و دیگر سرویس های RESTful از WOA استفاده می کنند.

مثال حال حاضر WOA را می توان Google’s Open Social  یا MindTouch دانست. در حال حاضر Mobile API بنایی اساسی بر تمرکز در استفاده از تکنولوژی WOA دارند. ساخت چنین سرویس هایی با استفاده از پروتکل های ساده شده وب نظیر Rest , JSON بیش از پیش آسان شده است. این پروتکل ها برای توسعه دهندگان وب بسیار راحت تر است چرا که CPU و پهنای باند کمتری را طلب می کنند. این پروتکل ها بیشتر بخاطر شبکه های اجتماعی بزرگ نظیر فیس بوک ، آمازون ، توییتر و … شناخته شده اند.

MindTouch هم یک شرکت اوپن سورس و یک سکوی مستندسازی استراتژیک و نوعی جدید از ECM می باشد. از جمله پروژه هایی که ارایه کرده است می توان به موارد ذیل اشاره کرد :

  • DReAM
  • SGML Reader
  • MindTouch Core/2010

در ادامه بکارگیری REST را در قالب شبکه جهانی وب (W3) در قالب جدول زیر با دیدگاه مقایسه ای با تلفیق در وب بررسی می کنیم :

{بنده می گویم} REST بدون WWW بی معناست. REST با Web است که تکمیل می شود و معنا پیدا می کند.

REST(www)Table

REST(www)Table

بررسی مزایای WOA

  • ساده سازی توسعه پذیری ، مقیاس پذیری
  • کاهش زمان توسعه ویژگی های جدید
  • کاهش زمان مهندسی مورد نیاز برای یکپارچه سازی
  • سازنده فرصت هایی جدید برای mash-ups و دیگر داستان های غیرقابل پیش بینی کاربری

اما وضعیت ارتباطی کلاینت ها و سرورها در WOA چگونه است ؟

  • سرویس ها وابسته به دیگر سرویس ها هستند.
  • ارتباطات از طریق HTTP صورت می گیرد.
  • کلاینت ها حکم منبع و سرویس دهی به دیگر کلاینت ها را دارند.
  • مقیاس پذیری ، توسعه پذیری == اتصالات داخی
شماتیکی از معماری وب گرا رو براتون طراحی کردم تا بهتر متوجه بشیم

شماتیکی از معماری وب گرا رو براتون طراحی کردم تا بهتر متوجه بشیم

بیضی های سمت راست در واقع لینک های وب هستند که با هم بصورت تنگانگ در ارتباط هستند و به هم گره خورده اند. لینک ها هم همان منابع تحت وب هستند که متشکل از صوت و تصویر و متن می باشند. (تارهای وب)

 

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

  • قابلیت استفاده مجدد سرویس
  • توافق سرویس
  • اتصال سست سرویس
  • تجرید سرویس
  • ترکیب پذیری سرویس
  • استقلال سرویس
  • عدم وابستگی سرویس (بی طرفی)
  • قابلیت کشف (شدن) سرویس

نکته مهم در تفاوت بین WOA , SOA اینست که معماری سرویس گرا به منظور  ابزار دوستانه بودن از بالا به پایین طراحی شده است (Top-Down) اما معماری وب گرا بصورت پایین به بالا طراحی شده است (Bottom-Up) . مساله دیگر اینکه SOA از WS-Security و دیگر استانداردهای پیچیده به منظور تامین امنیت استفاده می کند در حالی که WOA همانطور که در ابتدای مقاله و در شکل پشته های وب بدان اشاره شد از HTTPS ، OAuth و HMAC-SHA-1 بهره می برد.

 

مفهومی به نام Mashup

Mashup در واقع وب سایت ها و برنامه های کاربردی هستند که از ترکیب چند سرویس و مزایای چند سرویس دهنده ایجاد شده اند. بدین صورت که داده ها و سرویس های چند منبع بصورت یکپارچه حاصل می شود. اما اینکه چرا Mashup از نظر استفاده رو به افزایش است دو دلیل اصلی دارد :

  • مقادیر داده های بسیار زیاد از منابع متنوع در دسترس قرار می گیرد.
  • توسعه ابزارهای رابطی که با کمک آنها می توان به سادگی از Mashup استفاده کرد.

برخی از نمونه های Mashup می توان به موارد ذیل اشاره کرد :

  • Photo Mashup
  • Messaging Mashup
  • Search Mashup
  • Video Mashup
  • Travel Mashup

 

بعنوان مثال می توان با ترکیب تصاویر و آدرس های مختلف دانشگاه های تهران یک map Mashup درست کرد.

برای Photo Mashup ابزار Color Picker هم هست که امکان جست و جوی تصاویر را بر اساس رنگ فراهم می کند و از سرویس اشتراک گذاری عکس Flickr استفاده می کند که در این آدرس قابل استفاده است.

معماری Mashup هم مثل معماری MVC (البته با تفاوت های فاحش) سه لایه ای است :

  • لایه نمایش / تعامل کاربر (همان رابط کاربری است)
    • تکنولوژی ها : HTML/XHTML, CSS, Javascript, Asynchronous JS and Xml (Ajax).
  • وب سرویس ها : عملکرد محصول از طریق سرویس های API هم قابل دسترسی است
    • تکنولوژی ها : XMLHTTPRequest, XML-RPC, JSON-RPC, SOAP, REST
  • داده : فراهم آوردن امکان ارسال ، مرتب سازی و دریافت داده
    • تکنولوژی ها : XML , JSON , KML

از نظر معماری  Mashup  دارای ۲ سبک است : الف) مبتنی بر وب ب) مبتنی بر سرور

 در ادامه با هم نمونه ای از استقرار معماری وب گرا WOA در سازمان بصورت شماتیک می بینیم. با هم مشاهده می کنیم با این پیاده سازی موانع سر راه ما کاهش پیدا می کند ، سرعت یکپارچگی افزایش پیدا می کند. بدین صورت که می توان از قدرت شبکه جهانی وب در جهت انتقال محتوی مورد نیازمان به هر جا و در هر زمان بهره جست.

شاید برای شما سوال پیش بیاید که ما در معماری وب گرا بحث می کردیم اصلا چرا وارد مفهوم Mashup شدیم؟

بعبارت فنی تر چرا معماری وب گرا (WOA) برای Mashups اهمیت دارد ؟ پاسخ یک کلمه است : REST . همانطور که بالاتر مقاله هم اشاره کردم Mashup از REST بهره می برد. به منظور افزایش اطلاعات در رابطه با REST باید گفت Roy Fielding آنرا بنیان نهاده است. میخواهید او را بهتر معرفی کنم ؟ وی یکی از خالقان HTTP است و مگر می توان وب را بدون HTTP فرض کرد که مهمترین پروتکل انتقال ابر متن در جهان و پروتکل زیربنایی وب است؟! REST به خوبی با معماری اینترنت عجین شده است! بپرسید چرا ؟ چون پروتکل اصلی اینترنت HTTP است و هر دوی این ها از یک ذهن نشات گرفته و او کسی نیست جز Roy Fielding. اما باید بگویم REST یک استاندارد نیست ، با وجود سادگی بسیار زیاد تنها یک سبک استفاده از HTTP است.

REST همچنین از متدهای اختصاصی HTTP نظیر GET, PUT , POST , DELETE در بالای یک URL استفاده می کند تا نشان دهد چه رویدادی رخ می دهد.

در پایان گفته ها در رابطه با REST باید بگویم ATOM همان REST است. منظورم از ATOM ویرایشگر معروف متنی نیست که برای نوشتن کدهای برنامه نویسی استفاده قرار می گیرد؛ آنرا غالبا به شکل Atom می نویسند چرا که مخفف چند کلمه نیست و یک کلمه خاص است  اما ATOM یک استاندارد وب به زبان XML است که برای خوراک وب بعنوان جایگزینی برای RSS استفاده می شود. ATOM را با AtomPub یا APP اشتباه نگیرید ؛ چرا که APP پروتکل انتشاری است مبتنی بر پروتکل انتقال ابرمتن (HTTP) و برای به روزرسانی محتوی وب مورد استفاده قرار می گیرد.

در ادامه مباحث دررابطه با معماری وب گرا باید گفت WOA امروزه بعنوان مدل حاکم برنامه های تحت شبکه مطرح است اما متاسفانه فروشندگان بزرگی در پشت آن حضور ندارند به همین دلیل آنچنان که باید عمومیت نیافته است. WOA همچنان می تواند بیشترین سود حاصل را از طریق شبکه فراهم کند. شاید بتوان گفت کوتاه ترین مسیر برای رسیدن به چنین نتیجه ای همین معماری وب گرا است.

شماتیک وب گرایی در قالب سرویس گرایی

شماتیک وب گرایی در قالب سرویس گرایی

فرمول جالبی هم برای تعریف وب ارایه شد است که با هم می بینیم :

HTTP + URIs = Web

ظرافت فرمول بالا به اهمیت پروتکل زیربنایی وب یعنی HTTP اشاره دارد.  URI هم مجموعه ای از رشته هاست که برای شناسایی یک منبع خاص تحت وب به کار می روند.در شکل زیر رابطه بین URI , URN , URL را بررسی می کنیم. URI تشکیل شده است از URL و URN . URL متد دسترسی به منبع را مشخص می کند در حالی که URN تنها مشخص کننده نام منبع می باشد و هیچ گونه روشی برای دسترسی به ما ارایه نمی دهد. بعنوان مثال یک شماره ISBN کتاب یک نوع URN است.

شماتیک URI , URL

شماتیک URI , URL

منابعی که ازشون واسه مقاله استفاده کردم رو اینجا ذکر میکنم :

Web-oriented Architectures: On the Impact of Web 2.0 on Service-oriented

Architectures , Gunnar Thies, Gottfried Vossen

Nick Gall,WOA: Putting the Web Back in Web Services

Nick Gall Web-oriented architecture and the rise of pragmatic SOA

Dion Hinchcliffe, The SOA with reach: Web-Oriented Architecture

Web Oriented Architecture. Presented at Gluecon 2010 by Aaron Fulkerson

Dion Hinchcliffe. http:// Hinchcliffe.org. some rights reserved , 2008 [Shape]

org [Shape]

https://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)

https://javabyab.com

محمد احسان حیدری

محمد در حال حاضر دانشجوی مقطع کارشناسی ارشد رشته مهندسی فناوری اطلاعات در دانشگاه شهید بهشتی است. او علاقه زیادی به تولید محتوی غنی مرتبط با توسعه نرم افزارها و تکنولوژی های مبتنی بر وب دارد. از علایق تحقیقاتی او می توان به معماری موتورهای جست و جو، وب سرویس ها ، تکنولوژی های مبتنی بر وب ، معماری وب گرا و معماری نرم افزار اشاره کرد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

در تلگرام هم همراه شما هستم

اگر علاقه مند به مباحث معماری سیستم های اطلاعاتی و نرم افزاری هستید می توانید به کانال ما در تلگرام بپیوندید و از تازه های معماری نرم افزار اطلاع پیدا کنید

پیوستن بستن