PDA

نسخه کامل مشاهده نسخه کامل : معماري سرويس‌گرا چيست؟



Babak_King
06-12-2005, 23:37
معماري سرويس‌گرا (SOA) شكل تكامل يافته محاسبه‌گري توزيع شده مبتني بر فرضيه طراحي تقاضا/پاسخ براي برنامه‌هاي كاربردي همگام و ناهمگام است. منطق تجاري يا توابع اختصاصي يك برنامه كاربردي به صورت ماژولار در آمده‌اند و به عنوان سرويس‌هايي براي برنامه‌هاي كاربردي مصرف‌كننده/كلاينت ارائه گرديده‌اند. مهم‌ترين نكته‌ در مورد اين سرويس‌ها طبيعت اتصال آزادانه آنهاست؛ بدين معني كه رابط سرويس، مستقل از پياده‌سازي است. توسعه‌دهندگان برنامه‌هاي كاربردي يا گردآورندگان سيستم‌ها مي‌توانند با ساختن يك يا چند سرويس بدون آگاهي از پياده‌سازي‌هاي زيرين سرويس‌ها اقدام به ايجاد برنامه‌هاي كاربردي نمايند. براي مثال، يك سرويس مي‌تواند در .Net يا J2EE پياده‌سازي گردد، و برنامه كاربردي استفاده كننده از سرويس مي‌تواند بر روي يك پلات‌فرم يا زبان متفاوت قرار داشته باشد.

معماري‌هاي سرويس‌گرا داراي خصوصيات اصلي زير هستند:

- سرويس‌هاي SOA داراي رابط‌هاي خود-توصيف‌گر در اسناد XML مستقل از پلاتفرم هستند. زبان توصيف سرويس‌هاي وب (WSDL) استاندارد به كار برده شده براي توصيف اين سرويس‌ها مي‌باشد.

- سرويس‌هاي SOA با پيام‌هايي كه رسما توسط شماي XML (كه XSD نيز ناميده مي‌شود) تعريف شده‌اند ارتباط برقرار مي‌نمايند. ارتباط ميان مصرف‌كنندگان و فراهم‌كنندگان يا سرويس‌ها معمولا در محيط‌هاي ناهمگن رخ مي‌دهد، با دانش كم يا بدون هيچ دانشي در مورد فراهم‌كننده. پيام‌هاي مبادله شده ميان سرويس‌ها را مي‌توان به عنوان اسناد تجاري مهم پردازش شده در يك سازمان نگريست.

- سرويس‌هاي SOA توسط يك رجيستري كه به عنوان يك فهرست دايركتوري عمل مي‌كند نگهداري مي‌گردند. برنامه‌هاي كاربردي مي‌توانند سرويس‌ها را درون رجيستري جستجو نمايند و سرويس را فراخواني كنند. توصيف، تعريف، و يكپارچگي جهاني (UDDI) استانداردي است كه براي رجيستري سرويس مورد استفاده قرار گرفته است.

هر سرويس SOA داراي يك كيفيت سرويس (QoS) مرتبط با خود است. برخي از عناصر اساسي QoS شامل نيازمندي‌هاي امنيتي، از قبيل احراز هويت و صدور مجوز، پيام‌رساني قابل اطمينان، و خط‌مشي‌هايي در اين زمينه كه چه افرادي مي‌توانند سرويس‌ها را فراخواني نمايند، مي‌باشد.



چرا SOA؟

واقعيت موجود در سازمان‌هاي IT اين است كه زيربنا در ميان سيستم‌هاي عامل، برنامه‌هاي كاربردي، نرم‌افزارهاي سيستمي، و زيربناي كاربردي به صورت ناهمگن است. برخي برنامه‌هاي كاربردي موجود براي اجراي فرايندهاي فعلي تجارت مورد استفاده قرار گرفته‌اند، بنابراين آغاز از صفر براي ساختن زيربناي جديد يك رويكرد قابل انتخاب محسوب نمي‌گردد. سازمان‌ها بايد به شكلي سريع به تغييرات تجاري واكنش نشان دهند؛ از سرمايه‌هاي موجود در برنامه‌هاي كاربردي و زيربناي كاربردي به منظور تمركز بر روي نيازمندي‌هاي تجاري جديدتر استفاده نمايند؛ كانال‌هاي جديد تعامل با مشتريان، شركا، و تامين‌كنندگان را پشتيباني كنند؛ و يك معماري كه تجارت ارگانيك را پشتيباني نمايد به كار گيرند. SOA با طبيعت اتصال آزادانه خود به سازمان‌ها امكان بهره‌گيري از سرويس‌هاي جديد يا ارتقاي سرويس‌هاي موجود را به شيوه‌اي قطعه‌ قطعه به منظور تمركز بر نيازمندي‌هاي تجاري فراهم مي‌آورد، امكاني را براي قابل استفاده نمودن سرويس‌ها در كانال‌هاي متفاوت فراهم مي‌سازد، و سازمان موجود و برنامه‌هاي كاربردي نسل قبل را به عنوان سرويس‌ها ارائه مي‌كند، در نتيجه سرمايه‌هاي زيربناي IT موجود را حراست مي‌نمايد.

يك سازمان استفاده كننده از SOA مي‌تواند يك برنامه كاربردي مركب زنجيره تامين را با استفاده از مجموعه‌اي از برنامه‌هاي كاربردي موجود كه كاركرد خود را از طريق رابط‌هاي استاندارد ارائه مي‌دهند، ايجاد نمايد.



معماري سرويس

چندين مصرف‌كننده سرويس مي‌توانند با ارسال پيام اقدام به فراخواني سرويس‌ها نمايند. اين پيام‌ها معمولا توسط يك گذرگاه سرويس تغيير شكل داده شده و به سوي يك پياده‌سازي سرويس مناسب هدايت مي‌گردند. اين معماري سرويس مي‌تواند يك موتور قواعد تجاري را فراهم سازد كه امكان تلفيق قواعد تجاري در يك سرويس يا چندين سرويس را عملي سازد. معماري سرويس مزبور همچنين يك زيربناي مديريت سرويس فراهم مي‌آورد كه سرويس‌ها و اعمالي از قبيل بازرسي، پرداخت صورتحساب، و واقعه‌نگاري (logging) را مديريت مي‌نمايد. به علاوه، اين معماري انعطاف‌پذيري ناشي از دارا بودن فرايندهاي تجاري تغيير پذير را به سازمان‌ها ارزاني مي‌دارد، فرايندهايي كه نيازمندي‌هاي تنظيمي همانند Sarbanes Oxley (SOX)i را مد نظر قرار مي‌دهند، و سرويس‌هاي اختصاصي را بدون تحت تاثير قرار دادن ساير سرويس‌ها تغيير مي‌دهند.



زيربناي SOA

براي اجرا و مديريت برنامه‌هاي كاربردي SOA، سازمان‌ها نيازمند يك زيربناي SOA هستند كه بخشي از پلات‌فرم SOA محسوب مي‌گردد. يك زيربناي SOA بايد تمامي استانداردهاي مرتبط و ظرف‌هاي (container) مورد نياز زمان اجرا را پشتيباني كند. يك زيربناي SOA معمولي چيزي شبيه شكل 3 است. بخش‌هايي كه در ادامه اين مقاله مشاهده مي‌نماييد قطعات اختصاصي اين زيربنا را مورد بحث قرار مي‌دهند.



SOAP, WSDL, UDDI

WSDL، UDDI، و SOAP قطعات اساسي زيربناي SOA هستند. WSDL براي توصيف سرويس به كار برده شده است؛ UDDI، براي ثبت و جستجوي سرويس‌ها؛ و SOAP، به عنوان يك لايه نقل و انتقال جهت ارسال پيام‌ها ميان مصرف‌كننده سرويس و فراهم‌كننده سرويس. در حالي كه SOAP ساز و كار پيش‌فرض براي سرويس‌هاي وب است، تكنولوژي‌هاي جايگزين، انواع ديگري از انقيادها (binding) را براي يك سرويس تحقق مي‌بخشند. يك مصرف‌كننده مي‌تواند به جستجوي يك سرويس در رجيستري UDDI بپردازد، WSDL را براي سرويسي كه داراي توصيف است تهيه نمايد، و سرويس را از طريق SOAP فراخواني كند.



WS-I Basic Profile

WS-I Basic Profile، كه از سوي Web services Interoperability Organization فراهم شده است، يكي ديگر از قطعات اساسي مورد نياز براي تست و interoperability (قابليت كار با ساير اجزاي سيستم) سرويس است. فراهم‌كنندگان سرويس مي‌توانند از مجموعه‌هاي تست Basic Profile براي تست نمودن interoperability سرويس در ميان پلات‌فرم‌ها و تكنولوژي‌هاي متفاوت استفاده كنند.



J2EE و .Net

اگر چه پلات‌فرم‌هاي J2EE و .Net براي برنامه‌هاي كاربردي SOA پلاتفرم‌هاي توسعه غالب به شمار مي‌روند، اما SOA به هيچ عنوان به اين پلات‌فرم‌ها محدود نيست. پلات‌فرم‌هايي از قبيل J2EE نه تنها يك framework را براي توسعه‌دهندگان جهت سهيم شدن در SOA فراهم مي‌آورند، بلكه با طبيعت ذاتي خود، يك زيربناي كامل و مورد تاييد از لحاظ بسط‌پذيري، قابليت اطمينان، دسترس‌پذيري، و كارآيي را براي دنياي SOA به ارمغان مي‌آورند. مشخصه‌هاي جديدي از قبيل JAXB (Java API for XML Binding)، كه كاربرد آن در نگاشت اسناد XML به كلاس‌هاي جاوا است، JAXR (Java API for XML Registry)، كه كاربرد آن در تعامل با رجيستري‌هاي UDDI به يك شيوه استاندارد است، و XML-RPC (Java API for XML-based Remote Procedure Call)، كه كاربرد آن در فراخواني سرويس‌هاي راه دور در J2EE 1.4 است توسعه و گسترش سرويس‌هاي وبي كه در ميان ظرف‌هاي استاندارد J2EE قابل انتقال هستند را تسهيل مي‌نمايند، ضمن اين كه به شكل همزمان به كار با سرويس‌هاي موجود در پلات‌فرم‌هاي ديگري از قبيل .Net مي‌پردازند.



كيفيت سرويس‌ها

سيستم‌هاي حياتي موجود در سازمان‌ها نيازمندي‌هاي پيشرفته‌اي از قبيل امنيت، قابليت اطمينان، و تراكنش‌ها را مد نظر قرار مي‌دهند. همچنان كه سازمان‌ها شروع به پذيرش معماري سرويس به عنوان ابزاري براي توسعه و گسترش برنامه‌هاي كاربردي مي‌نمايند، مشخصه‌هاي بنيادين وب از قبيل WSDL، SOAP، و UDDI قادر به برآورده ساختن اين نيازمندي‌هاي پيشرفته نيستند. همچنان كه قبلا گفته شد، اين نيازمندي‌ها، همچنين تحت عنوان كيفيت سرويس‌ها شناخته مي‌شوند. تعداد بيشماري از مشخصه‌هاي مرتبط با QoS در هيئت‌هاي برخي استانداردها همچون W3C (World Wide Web Consortium) و OASIS (Organization for the Advancement of Structured Information Standards) مطرح گرديده‌اند. بخش‌هايي كه در ادامه آمده است برخي از اثرات QoS و استانداردهاي مرتبط را مورد بحث قرار داده‌اند.



امنيت

مشخصه Web Services Security امنيت پيام را مد نظر دارد. اين مشخصه بر روي تبادل اعتبارنامه، يكپارچگي پيام، و محرمانگي پيام متمركز گرديده است. نكته جذاب در مورد اين مشخصه اين است كه آن از استانداردهاي امنيتي موجود، از قبيل SAML (Security Assertion Markup Language)، بهره مي‌گيرد و امكان استفاده از اين استانداردها را به منظور ايمن‌سازي پيام‌هاي سرويس‌هاي وب فراهم مي‌سازد. Web Services Security يك تلاش مداوم و در حال رشد از سوي OASIS است.



قابليت اطمينان

در يك محيط SOA معمولي، اسناد متعددي ميان استفاده‌كنندگان از سرويس و فراهم‌كنندگان سرويس مبادله مي‌گردد. تحويل پيام‌ها با خصوصياتي همچون تحويل يكباره و فقط يكباره، تحويل حداكثر يكباره، حذف دوباره‌اي پيام، تحويل تضمين شده پيام، و تصديق در سيستم‌هاي حياتي كه از معماري سرويس استفاده مي‌كنند از اهميت بالايي برخوردار مي‌گردد. WS-Reliability و WS-ReliableMessaging دو استانداردي هستند كه مسائل مربوط به پيام‌رساني قابل اطمينان را مد نظر قرار مي‌دهند. هر دوي اين استانداردها اكنون بخشي از OASIS مي‌باشند.



خط‌مشي

فراهم‌كنندگان سرويس در برخي موارد استفاده‌كنندگان از سرويس را ملزم به مراوده با خط‌مشي‌هاي معين مي‌نمايند. به عنوان يك مثال، يك فراهم‌كننده سرويس ممكن است يك نشانه امنيتي Kerberos را براي دستيابي به سرويس الزامي نمايد. اين استلزام‌ها به عنوان اظهارنامه‌هاي خط‌مشي تعريف گرديده‌اند. يك خط‌مشي ممكن است شامل چندين اظهارنامه باشد. WS-Policy نحوه مورد مراوده قرار گرفتن خط‌مشي‌ها ميان استفاده‌كنندگان از سرويس و فراهم‌كنندگان سرويس را به شكل استاندارد در مي‌آورند.



هماهنگ‌سازي

همچنان كه سازمان‌ها به معماري سرويس روي مي‌آورند، سرويس‌ها مي‌توانند براي يكپارچه‌سازي مخازن داده، برنامه‌هاي كاربردي، و كامپوننت‌ها مورد استفاده قرار گيرند. يكپارچه‌سازي برنامه‌هاي كاربردي بدان معني است كه نيازمندي‌هاي پردازش، از قبيل ارتباط ناهمگام، پردازش موازي، تبديل داده‌ها، و تصحيح، بايد استانداردسازي گردند. BPEL4WS يا WSBPEL (Web Services Business Process Execution Language) يك مشخصه OASIS است كه هماهنگ‌سازي سرويس را مد نظر دارد، جايي كه فرايندهاي تجاري با استفاده از مجموعه‌اي از سرويس‌هاي گسسته ايجاد گرديده‌ باشند. WSBPEL اكنون بخشي از OASIS مي‌باشد.



مديريت

همچنان كه تعداد سرويس‌ها و فرايندهاي تجاري ارائه شده به عنوان سرويس در سازمان افزايش مي‌يابد، يك زيربناي مديريت كه امكان مديريت سرويس‌هاي در حال اجرا در يك محيط ناهمگن را به مديران سيستم مي‌دهد از اهميت بالايي برخوردار مي‌گردد. WSDM (Web Services for Distributed Management) بيانگر آن خواهد بود كه هر سرويس پياده‌سازي شده بر اساس WSDM توسط يك راهكار مديريت سازگار با WSDM قابل مديريت خواهد بود.

ساير صفت‌هاي QoS از قبيل هماهنگي ميان شركا و تراكنش‌ها كه در بر دارنده چندين سرويس هستند به ترتيب در مشخصه‌هاي WS-Coordination و WS-Transaction (كه باز هم جزو تلاش‌هاي OASIS محسوب مي‌گردند) مد نظر قرار گرفته‌اند.



SOA سرويس‌ وب نيست

آن گونه كه به نظر مي‌رسد در مورد ارتباط ميان SOA و سرويس‌هاي وب نوعي سردرگمي عمومي وجود دارد. در يكي از گزارش‌هاي Gartner مورخ آوريل 2003، Yefim V. Natis اين گونه تقاوت ميان آنها را شرح مي‌دهد: ”سرويس‌هاي وب راجع به مشخصه‌هاي تكنولوژي هستند، در حالي كه SOA يك قاعده‌ي طراحي نرم‌افزار است. شايان ذكر است كه WSDL سرويس‌هاي وب يك استاندارد تعريف رابط مناسب SOA است: اين نقطه‌اي است كه سرويس‌هاي وب و SOA اساسا به يكديگر پيوند مي‌خورند.“ اساسا، SOA يك الگوي معماري است، در حالي كه سرويس‌هاي وب سرويس‌هاي پياده‌سازي شده توسط مجموعه‌اي از استانداردها مي‌باشند؛ سرويس‌هاي وب يكي از روش‌هايي است كه شما با استفاده از آن مي‌توانيد SOA را پياده‌سازي نماييد. مزيت پياده‌سازي SOA با سرويس‌هاي وب اين است كه شما به يك رويكرد بي‌طرفانه نسبت به پلات‌فرم به منظور دستيابي به سرويس‌ها و interoperability بهتر دست مي‌يابيد همچنان كه فروشندگان بيشتر و بيشتري مشخصه‌هاي بيشتر و بيشتري از سرويس‌هاي وب را پشتيباني مي‌نمايند.



مزاياي SOA

در حالي كه مفهوم SOA اساسا جديد نيست، SOA با تكنولوژي‌هاي توزيع‌شده موجود متفاوت است به گونه‌اي كه اغلب فروشندگان آن را پذيرفته و داراي يك مجموعه پلات‌فرم يا برنامه كاربردي هستند كه داراي قابليت SOA مي‌باشند. SOA، با يك مجموعه از استانداردهايي كه همه جا در دسترس هستند، قابليت استفاده مجدد از سرمايه‌ها و دارايي‌هاي موجود در سازمان را بهبود مي‌بخشد و به شما امكان ايجاد برنامه‌هاي كاربردي كه مي‌توانند بر فراز برنامه‌هاي كاربردي موجود و جديد ساخته شوند، مي‌دهد. SOA امكان ايجاد تغيير در برنامه‌هاي كاربردي در شرايطي كه كلاينت‌ها يا استفاده‌كنندگان از سرويس جداي از تغييرات صورت گرفته در پياده‌سازي سرويس حفظ شوند، فراهم مي‌آورد. SOA امكان ارتقاي استفاده‌كنندگان از سرويس يا سرويس‌هاي اختصاصي را فراهم مي‌سازد؛ بازنويسي كامل يك برنامه كاربردي يا حفظ يك سيستم موجود كه ديگر نيازمندي‌هاي جديد تجاري را مد نظر قرار نمي‌دهد لازم نيست. نهايتا، SOA انعطاف‌پذيري بيشتري را براي سازمان‌ها در ساختن برنامه‌هاي كاربردي و فرايندهاي تجاري به شيوه‌اي سريع‌تر با بهره‌گيري از زيربناي برنامه‌ي كاربردي موجود به منظور توليد سرويس‌هاي جديد فراهم مي‌نمايد.