معرفی ریموتینگ
پنج شنبه 16 شهریور 1391 9:28 AM
|
معرفی ریموتینگ
|
|
|
در این فصل یک مقدمه کوتاهی در مورد پیادهسازی[1] برنامههای کاربردی توزیع شده[2] و فنآوریهای[3] مربوط به آن ارائه میگردد.
ریموتینگ چیست ؟
ریموتینگ پروسهای از برنامهها یا اجزاء آن است که بصورت کامل بر روی هم تاثیر میگذارد.
در محیط .Netاین تکنولوژی توابعی را جهت برنامههای توزیع شده فراهم مینماید که آن حقیقتا جایگزین DCOM میشود.عموما پیاده سازی ریموتینگ بصورت عملی بین اجزاء ریموتینگ و اجزاء متحرک آن متمایز میباشد. ریموتینگ قالبی است که قابلیت اجرای متد بر روی سرورها را فراهم مینماید. و پارامترهای دریافتی و گذرا را به صورت مقادیر با ارزش بر میگرداند.
اجزاء ریموتینگ همیشه بر روی سرورها خواهند ماند فقط یک منبع به آن اختصاص مییابد که باید در میان ماشینهای دیگر قرار بگیرد. شیء متحرکبصورت رمز شده[4]به شکل دودویی و یا یک شکل قابل خواندنی انسانی بصورت XMLاز یک محدوده عبور میکند.و به صورت رمزگشایی[5] شده ارائه مینماید.
سرورها و کلاینتها یک کپی از شیءها را در خود نگهداری میکنند.
سناریوهایی[6] برای .Net Remoting
از ابتدای شروع بکارگیری سرویس دهنده , سرویس گیرنده غالبا عملیات ریموتینگ جهت دسترسی به منابع یک سرور مورد استفاده قرار میگرفت. هر پایگاهداده[7] و یا سرور حاوی فایل , پیادهسازی بسیاری از روشهایی است که اجازه میدهد کدها بصورت ریموتینگ اجرا شوند. در روشهای قدیمی برنامه نویسی تولید سرویس برای سرویسدهندههابه کار بسیار مشکلی بود.
امروزه ایجاد برنامههای کاربردی توزیع شده به مراتب آسانتر از آن است که آن برنامهها بصورت کاملا عملی در میان سیستمهای گوناکون جهت بهبود کارایی[8] , مقیاس پذیری[9] و نگهداری[10] آنها مورد استفاده قرار می گیرد.
منطق تجاری متمرکز[11]
یکی از طرحهای کلیدی جهت پیادهسازی ریموتینگ بر روی منطقتجاری روی یک یا چند سرویس دهنده مرکزی است . این امر بصورت قابل ملاحظهای برای نگهداری برنامههای کاربردی ساده است. دگرگونی در منطق تجارت,گسترش برنامههای کاربردی جهت سازماندهی برای 10.000 کاربر رایانه در سطح جهان را شامل نمی شود. فقط در این حالت سرویس دهنده مجزا به تنهایی بروز[12]میشود. زمانیکه منطق تجارت متمرکز میان برنامههای کاربردی مختلف مشترک[13] میشود این عمل تاثیر مضاعفی را بصورت قابل ملاحضهای بر روی نیروی انسانی خواهد داشت. در عوض به جای تغییر برنامههای کاربردی متعدد , فقط باید عملیات پیاده سازی سرویس دهنده تغییر یابد.
جدایی[14] فیزیکی لایه ها
امنیت یک بانک داده مورد نیاز یک شرکت در محیط تجارت الکترونیکی چالشی بسیار مهم میباشد که این دادهها باید در یک محیط کاملا امن و دور از دسترس عام قرار گیرد. یا حتی باید در یک سرور مخصوص قرارگیرد این عمل باعث جلوگیری از دسترسافراد غیر مجاز[15] به دادههای آن شرکت خواهد شد.درعوض با ایجاد اتصال مستقیم یک سرویس دهنده به برنامههای کاربردی که یک رابط میانی تولید شده میباشد از این خطر جلوگیری نمود. این سرویس در میان دو دیوارهآتش[16] واقع شده است. دیوارهآتش اول فقط اجازه اتصال[17]سرور شبکه به سرور برنامههای کاربردی را میدهد و دیوارهآتش دوم فقط اجازه اتصال سرویس دهنده برنامه را به بانک اطلاعاتی میدهد. به این دلیل که سرور برنامههای کاربردی اجازه اجرای پارامترهای اسکیوال[18] را ندارد, دستیابی تابعی یا شیها به منطق تجاری سپرده شده است. واحد منطق تجاری با استفاده از سرویس به دادها دستیابی پیدا میکند و آن را به لایه برنامه کاربردی انتقال میدهد.
سیر تکاملی Remoting
طرحهاییکه نمایش داده شدند اغلب ممکن است یک سیر تکاملی ثابتی از چارچوب ریموتینگ ارائه دهند. پیادهسازی برنامههای کاربردی تجاری در مقیاس بزرگ در یک روش توزیع شده بعد از مسائل تکنیکی میتواند اجرایی باشد.
CORBA,COM+وEJB این پروسه را از چند سال قبل آغاز کردهاند و همچنین ریموتینگ این پردازش را بیشتر از دیگران آسان کرده است.
بخش زیر تاریخچه مختصری از چارچوبهای گوناگون ریموتینگ بیان میگردد.
فراخواندن پردازه از راه دور[19] :
پروتکلی است که يک برنامه میتواند با استفاده از آن درخواست سرويسی را از برنامهموجود بر روی کامپيوتر ديگر در شبکه داشته باشد.RPCتسهيلات و امکانات لازمدر خصوص ارتباط بين برنامه ها را فراهم می نمايد . برنامه هائی که ازRPCاستفاده مینمايند ضرورتی به آگاهی از پروتکلهای شبکه کهارتباطات را حمايت مینمايند ، نخواهند داشت. درRPCبرنامه درخواست کننده سرويسگيرنده(Client)بوده و برنامه ارائه دهنده سرويس ، سرويس دهنده (Server) می باشد.
در واقعRPCیک ارتباط پردازش داخلی است که اجازه میدهد یک برنامه کامپیوتریبتواند یک زیربرنامه یا یک پردازه را در آدرس دیگری (معمولا بروی کامپیوتر دیگری درشبکه) اجرا نماید. در اصل برنامهنویسها کدهای خود را برای محلیمینویسند بدونآنکه نگران کارکردن آن بصورتریموت باشند.یکRPCبا ارسال درخواست یک کلاینتبه یک سرور ریموتشناخته شده شروع میشود تا آن سرور پردازه معینی را باپارامترهای مشخص اجرا نماید. سرور به کلاینت پاسخ میدهد وبرنامهکاربردی، پردازش را ادامه میدهد.
محیط توزیع محاسبات[20] :
این محیط در اوایل 1990 توسط بنیاد نرم افزار آزاد[21]طراحی شده است این محیط بدین جهت ایجاد شده تا مجموعهای از ابزار ها و سرویسهایی که اجازه مدیریت و توسعه آسان تر به برنامههای کاربردی توزیع شده را میدهد فراهم میکند.
چارچوب DCE چندین سرویس را آماده میکند مانند یک رویه ریموتینگ ، (DCE/RPC)سرویس های امنیتی ، سرویسهای زمانی و مانند آن.
پیادهسازی DCE کاری وحشتناک و سنگین است واسطهای های کاربر مجبورند تا با یک زبان تعریف واسط[22] معرفی شوند
ارتباط اشياء تجارى توزيعشده براساس استاندارد[23] :
ازآنجايى که ساختار اشياء COM و ساختار توزيعى اشيا (DCOM-Distributed COM) محصولرقيب CORBA از شرکت مايکروسافت محسوب مىگردند، لذا OMG مشخصههاىهمکاری[24]را براى COM و DCOM نيز تعريف نمود. (هرچند بهلحاظ پارهاى از نقاط ضعف DCOM مايکروسافت مجبور به ارائه تکنولوژى.Net گرديد. COM/CORBA بهمنظور يکپارچهسازى محيط ويندوز با يک محيط مبتنى بر CORBA مورد استفاده قرارمىگيرد. شرکتهاى زيادى عرضهکننده CORBA ORB[25]در بازار مىباشند. که در آن ميانمحصولOrbix Web از شرکت IONA وWiviBrokerبراى جاوا از شرکت INPRISE وWebspherبهعنوانسرور با قابليت ORB از شرکت آىبىام معروفترند.
در شکل بالا چگونگى فراخوانى برنامههاى ديگر توسط يک برنامه در ساختار CORBA نشانداده شده است. مفهوم کلى اين ساختار بسيار ساده است. برنامهاى که نياز به سرويسهاى ارائهشده دارد ساير برنامهها را فراخوانىمىنمايد. سرويسهايى که محل فيزيکى آنها در شبکه اهميتى نخواهد داشت.
CORBA با ارائه محيط مبتنى بر پيامها امکان اجراى اشياء راه دور را ازطريق انواعزبانهاى مختلف و روى سختافزارهاى گوناگون فراهم نموده است. شکل بالا نيز چگونگىفراخوانى يک رويه راه دور[26]را نشان مىدهد.
مکانيزم RPC که از مدتها قبل مورد استفاده قرار گرفته است مشابه CORBA است جامعيتآن را ندارد و معمولاً تنها يک زبان برنامهنويسى و يک سختافزار خاص را پشتيبانىمىنمايد.در شکل زير چگونگى ايجاد اشياء مبتنى بر CORBA نشان داده شده است که با کامپايلکردن تعاريفزبان تعریف واسط به کدينگهاى کلاینت و سرور اشياء مبتنى بر CORBA ايجاد مىگردندو برنامههاى کاربردى حاصل ازطريق CORBA bus و با استفاده از پروتکل ارتباطى GIOP يا IIOP با يکديگر ارتباط برقرار مىنمايند.
مدل شي موُلفه توزيع شده[27] :
پروتكل(قرداد)شيُ مايكروسافت مي باشد, كه اين امكان را به موُلفه هاي ActiveX ميدهد تا با يكديگر از طريق شبكه كامپيوتري اارتباط برقراركنند موُلفه ActiveX, شيُ قابل دسترسي راه دوري مي باشد كه رابط معين ومشخصي دارد وخودكفا ميباشد. موُلفهُ ActiveXميتواند در اسناد وب تعبيه شود بطوري كه آنها بطور خودكار براي سرويس گيرنده ميگيرند وبارگذاري[28] ميكنند تا در مرورگر وب سرويس گيرنده اجرا كنند. DCOM سهولت موقعيت راه دور را تاُمين مي كند كه اجازه مي دهد سرويس گيرندهها, اشياُ سرويس دهنده راه دور را ايجاد كنند. آن مدل ايمني را در دسترس قرار مي دهدكه به برنامه نويسان اجازه ميدهد محدود كنند كساني را كه ممكن است شيُ سرويس دهنده اي را ايجاد كنند وكساني را كه آن را احضار مي كنند.سرانجام, زبان تعريف رابط براي تعريف رابطهاي شيُي قابل دسترسي راه دور و فراخواني روال از راه دور در نظر گرفته مي شود.
سرويس های وب[29] : رويکرد جديد در برنامه های توزيع شده
برای برنامه نويسی توزيع شده تاكنون متدلوژی های متفاوتی مطرح بوده است . سرويس های وب جديدترين رويکرد در اين زمينه می باشند. چرا با اين همه تنوع ، ما مجددا؛ به يك معماری جديد برای پردازش برنامه های توزيع شده نياز داريم ؟ چرا ما به سرويس های وب نياز داريم ؟ چرا خودمان را با يكی از متدهای موجود نظير RPC ، DCOM ، CORBA تطبيقنمیدهيم؟پاسخبهتمامسوالاتفوقومواردمشابهظهورورشدسريعاينترنتووباست . در حقيقت اينرنت زمينه مناسب جهت تكامل برنامههای توزيع شده را فراهم نمود. تکنولوژیهای پيش از اين، اغلب درشبكههایاختصاصی ايمنواعتمادپذيرمورداستفادهقرارمیگرفتند.برنامههایتوزيعشدهكهبررویاينترنتاجراءمیگردند،دارای چالش های خاص خود بوده و با توجه به تنوع ، وسعت بسيار زياد و رشد فزاينده ، ضرورت وجود يك مدل جديد برای برنامه نويسی توزيع شده بدرستی احساس می گردد.
كالبد شكافی سرويس های وب
سرويسهای وب تصوير جديدی از برنامههای توزيع شده را ارائه دادهاند . در اين راستا سه هدف عمده دنبال میشود :
§ برنامههابسادگیبرنامههایديگربررویوبراپيداكردهوباآنهاتبادلاطلاعاتیداشتهباشند.
§ ازتمامیتواناينترنتوپروتكلهایمربوطهاستفادهگردد.
§ يكمتدولوژیايمنبرایتبادلاطلاعاتیراارائه نمايد
SOAP[30] یک پادمان مبتنی بر XMLاست، برای رد و بدل کردن اطلاعات بین برنامهها. اطلاعات در SOAPبه صورت پیام[31]وازطریقپادمانهایموجوددراینترنتمانندHTTPمنتقل میشود (SOAPدر سایر پادمانها، مانند SMTPیا MIMEنیز قابل استفاده است). به زبان سادهتر، SOAPیک پادمان است برای دستیابی به یک سرویس ارایه شده در وب[32]. آخرین نسخه SOAP، نسخه 1.2 میباشد.
یکی از مسایلی که در دهه اخیر از اهمیت خاصی برخوردار بوده، چگونگی ارتباط برنامههای تحت اینترنت با یکدیگر بوده است. برنامههای عادی از RPC[34]برای فراخوانی اشیاء DCOMیا CORBA، استفاده میکنند. اما مشکلی که در این نوع فراخوانیها در بستر اینترنت وجود دارد، مسدود شدن این نوع ترافیکها در ProxyServer ها و دیوارهای آتش است.
در صورت استفاده از SOAPبا این مشکل روبرو نخواهید بود. SOAPبه راحتی میتواند بین برنامههایی که در بسترهای متفاوت طراحی شده اند و در بسترهای متفاوتی در حال سرویسدهی هستند، ارتباط برقرار کند.
پیام ها در SOAPیک فایل XMLهستند که از ساختار زیر پیروی میکنند:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
یکی از مهمترین معایب آنامنیتوقابلیتاعتمادپایینمیباشد.همین کاستی باعث شده است که تولیدکنندگان نرمافزار به این فکر بیفتند تا SOAPرا توسعه دهند و استانداردهای جدیدتری با امکانات بیشتری تولید کنند. استاندارد تولید شده توسط مایکروسافت با نام GXA[41]ارایه شد. که یک پیادهسازی ازآن WSE[42]است. WSEیک ابزار قدرتمند است که شما با استفاده از DotNet Frameworkو WSEمی توانید وب سرویس های امن و قدرتمند بنویسید. به بیان سادهتر WSEابزار شما برای طراحی و ساخت وب سرویس ها با .NETمی باشد.
.Net Remoting
وبسرویسهاسیستمیبسیارسادهدارندوازآنهامیتوانبهعنوانابزاریجهتبرقراریارتباطبین سیستمهایمختلفاستفادهکرد،ولیباتمامقابلیتهاوامکاناتیکهوبسرویسهادارنداینتکنولوژیدربرخیمواردبهاندازهکافیانعطافپذیروسریعنیستولذاپاسخگویگروهخاصیازنیازهانیست.
وبسرویسهاامکانی جهتدسترسیبهاشیاءوتوابعازطریقشبکهرافراھممیکنند،ولیباتمامقابلیتهاوامکاناتیکهوبسرویسهادارنداینتکنولوژیدربرخیمواردبهاندازهکافیانعطافپذیروسریعنیستولذاپاسخگویگروهخاصیازنیازها نیست.
بزرگترینعاملیکهاینمحدودیتراایجادمیکندنیازوبسرویسهابهIISویابهعبارتدیگرASP.NETRemotingمیباشد. جهت فائق آمدن به این مسائل می توان از .NET Remoting استفاده کرد. در واقع .NET Remotingهمدقیقاًهمانسرویسیرافراهممیکندکهوبسرویسهافراهممیکنندولیدارایویژگیهای خاصیمیباشدکهانعطافوسرعتزیادینسبتبهوبسرویسهایعادیفراھممیکند.
.NET Remotingیک چارچوب قابل انعطاف و قابل توسعه را ارائه میکند و روشهای انتقال متفاوتی را اجازه می دهد (HTTP,TCP بصورت پیشفرض پشتیبانی میشوند). بسیار پرکاربرد در برنامههای کاربردی توزیع شده بشمار میآید. از .NET Remotingبرای انتقال HTTPدر اینترنت و یاTCPدر شبکه های داخلی میتوان استفاده نمود.
خلاصه :
در این فصل یک تعریف کوتاهی از گسترش برنامههای توزیع شده و روشهای مربوط را ارائه میدهد. در ادامه شرحی از چارچوبهای گوناگون ریموتینگ بیان میگردد که میتوان به (RPC,DCE/RPC,CORBA,DCOM , SOAP,.Net Remoting ) اشاره کرد.
[1] Development
[2] Distributed
[3] Technologies
[4]Serialized
[5]Deserialized
[6]Scenarios
[7]DataBase
[8]Performance,
[9]Scalability
[10] Maintainability
[11]Centralized
[12] Update
[13]shared
[14]Separation
[15]AttackersOr Hacker
[16]Firewall
[17]Connection
[18]Sql
[19]RPC - Remoteprocedurecall
[20]DCE
[21]OSF
[22] IDL
[23]CORBA
[24]interoperability
[25]Object Request Broker
[26]Remote Procedure calls
[27]DCOM
[28]Download
[29] Web Service
[30]Simple Object Access Protocol
[31]Message
[32]Web Service
[33]Platform Independent
[34]Remote Procedure Call
[35]Envelope
[36]Header
[37]Call
[38]Response
[39]Fault
[40]Design View
[41]Global XML Web Services Architecture
[42]Web Services Enhancements