RPC крш RMI
RPC менен RMI ортосундагы негизги айырма RPC - бул алыскы компьютерде процедураны чакырууга мүмкүндүк берүүчү механизм, ал эми RMI - RPCди javaда ишке ашыруу. RPC тил нейтралдуу, бирок бериле турган алгачкы маалымат түрлөрүн гана колдойт. Башка жагынан алганда, RMI Java менен чектелген, бирок объекттерди өткөрүүгө мүмкүндүк берет. RPC салттуу процедуралык тил конструкцияларын ээрчийт, ал эми RMI объектиге багытталган дизайнды колдойт.
RPC деген эмне?
RPC, ал Remote Procedure Call дегенди билдирет, процесстер аралык байланыштын бир түрү. Бул жергиликтүү компьютерде же алыскы компьютерде иштеген башка процессте функцияны чакырууга мүмкүндүк берет. Бул концепция көп убакыт мурун 1980-жылы пайда болгон, бирок биринчи белгилүү ишке ашыруу Unixте көрүлгөн.
RPC бир нече кадамдарды камтыйт. Кардар адаттагыдай эле жергиликтүү компьютерде процедуралык чакырууну жасайт. Клиент stub деп аталган модул аргументтерди чогултуп, билдирүү түзүп, операциялык системага өтөт, Операциялык система системага чалуу жасап, бул билдирүүнү алыскы компьютерге жөнөтөт. Сервердеги операциялык система кабарды чогултат жана сервердин stub деп аталган сервердеги модулуна өтөт. Андан кийин сервер stub сервердеги процедураны чакырат. Акыры, натыйжалар кардарга кайра жөнөтүлөт.
RPCти колдонуунун артыкчылыгы - бул тармактын деталдарынан көз карандысыз. Программист жөн гана абстракттуу түрдө көрсөтүүсү керек, ал эми операциялык система ички тармактын деталдарын карайт. Ошентип, бул программалоону жеңилдетет жана физикалык жана протоколдук айырмачылыктарга карабастан, RPC каалаган тармакта иштөөгө мүмкүндүк берет. RPC ишке ашыруулар Unix, Linux, Windows жана OS X сыяктуу бардык негизги операциялык системаларда бар. RPC жалпысынан тилде нейтралдуу, ошондуктан ал маалымат түрлөрүн эң примитивдүү түргө чектейт, анткени алар бардык тилдер үчүн жалпы болушу керек. RPCдеги мамиле объектиге багытталган эмес, бирок C. тилиндегидей салттуу процедуралык механизм.
RMI деген эмне?
RMI, ал Remote Method Invocation дегенди билдирет, бул API (Колдонмо программалоо интерфейси) объектке багытталган табиятты колдоо үчүн javaда RPCди ишке ашырат. Бул бир эле компьютерде же алыскы башка Java виртуалдык машинасында Java ыкмаларын чакырууга мүмкүндүк берет. RMI чектөөсү Java методдорун гана чакырса болот, бирок бул объекттерди аргумент катары өткөрүп, баалуулуктарды кайтарып бере турган артыкчылыгы менен коштолот. Java виртуалдык машинасында байт коддун катышуусуна байланыштуу RMI RPCге караганда жайыраак деп эсептегенде, RMI программистке абдан ыңгайлуу жана аны колдонуу абдан оңой.
RMI Java'да орнотулган коопсуздук механизмдерин колдонот жана ошондой эле TCP эмес ыңгайлаштырылган транспорт катмарынын протоколдорун колдонууга мүмкүндүк берген розеткаларды берет. Мындан тышкары, RMI брандмауэрлерди айланып өтүү ыкмаларын камсыз кылат. RMIде пайда болгон кадамдар RPCге окшош. RMI ишке ашыруу ички тармактын чоо-жайын карайт, анда программист алар жөнүндө кабатырланбашы керек.
RPC менен RMI ортосунда кандай айырма бар?
• RPC тил нейтралдуу, ал эми RMI Java менен чектелген.
• RPC C тилиндегидей процедуралык, бирок RMI объектиге багытталган.
• RPC примитивдүү берилиштердин түрлөрүн гана колдойт, ал эми RMI объекттерди аргумент катары өткөрүүгө жана маанилерди кайтарууга мүмкүндүк берет. RPC колдонуп жатканда, программист ар кандай татаал объекттерди примитивдүү маалымат түрлөрүнө бөлүшү керек.
• RMI бул RPC программалоо оңой.
• RMI RPCге караганда жайыраак, анткени RMI java байт кодунун аткарылышын камтыйт.
• RMI объектиге багытталгандыктан дизайн үлгүлөрүн колдонууга мүмкүндүк берет, ал эми RPCде мындай мүмкүнчүлүк жок.
Корытынды:
RPC крш RMI
RPC – алыскы компьютерде процедураны чакырууга мүмкүндүк берген тилдин нейтралдуу механизми. Бирок, тилдин нейтралдуу өзгөчөлүгү аргумент катары берилүүчү маалымат түрлөрүн чектейт жана баалуулуктарды примитивдүү түрлөргө кайтарат. RMI - бул Java-да RPCди ишке ашыруу жана ал объекттин өтүшүн колдойт, бул программисттин жашоосун жеңилдетет. RMIнин артыкчылыгы объектке багытталган дизайнды колдоо, бирок Java менен чектөө - кемчилик.