Кіріспе

Enterprise Objects Framework, немесе жай ғана EOF, 1994 жылы NeXT компаниясы NeXTSTEP және OpenStep әзірлеу платформалары үшін жаңаша объектілік реляциялық бейнелеу өнімі ретінде ұсынды. EOF деректер базасының қатарларын Java немесе Objective C нысандарына бейнелеу арқылы реляциялық деректер базасымен өзара әрекеттесу процесін абстракциялайды. Бұл әзірлеушілерді төменгі деңгейдегі SQL кодын жазудан көп дәрежеде босатады. EOF 1990-шы жылдардың ортасында NeXT-тің объектіге бағытталған платформасының жылдам қосымша әзірлеу мүмкіндіктеріне қызығушылық танытқан қаржы институттары арасында белгілі бір сәттілікке жетті. 1996 жылы Apple Inc компаниясының NeXT компаниясымен біріккеннен кейін, EOF бастапқыда NeXT-тен шыққан қосымша сервері болған WebObjects-тің толыққанды біріктірілген бөлігіне айналды. EOF-тың көптеген негізгі түсініктері Core Data құрамында қайта пайда болды, ол деректердің негізгі форматтарын одан әрі абстракциялап, SQL емес сақтау орындарына негізделуге мүмкіндік береді.

Тарих

1990 жылдардың басында NeXT Computer көптеген бизнес үшін дерекқорларға қосылудың маңыздылығын, сонымен қатар оның күрделі болу мүмкіндігін мойындады. Әрбір дереккөз әртүрлі деректерге қол жеткізу тілін (немесе API) пайдаланады, бұл әрбір жеткізушінің өнімін үйрену және пайдалану құнын арттырады. NeXT инженерлері объектіге бағытталған бағдарламалаудың артықшылықтарын пайдаланып, объектілерді реляциялық дерекқорлармен «сөйлесуге» мүмкіндік бергісі келді. Екі технологияның өте ерекше болғандықтан, шешім – әзірлеушілерді әрбір дереккөз үшін арнайы төмен деңгейдегі процедуралық кодты (SQL) жазудан қорғайтын абстракция қабатын құру болды. Бірінші әрекет 1992 жылы Database Kit (DBKit) құрылымын шығарумен жасалды, ол кез келген дерекқордың айналасына объектіге бағытталған құрылымды орады. Алайда, сол кезде NEXTSTEP жеткілікті қуатты болмады және DBKit дизайнында елеулі кемшіліктер болды. NeXT-тің екінші әрекеті 1994 жылы Enterprise Objects Framework (EOF) нұсқасы 1-ді шығару арқылы жүзеге асты, бұл OpenStep-ке үйлесімді және әлдеқайда модулдік толық қайта жазу болды. EOF 1.0 – NeXT Foundation Kit-ті пайдаланып шығарылған алғашқы өнім және ол әзірлеушілер қауымдастығына автоматты түрде босатылатын объектілерді (autoreleased objects) ұсынды. Ол кездегі даму тобына Джек Гринфилд, Рич Уильямсон, Линус Апсон және Дэн Уиллхайт кірді. 1995 жылдың соңында шыққан EOF 2.0 архитектураны одан әрі жетілдіріп, өңдеу контекстін (editing context) енгізді. Сол кездегі даму тобында Дэн Уиллхайт, Крейг Федериги, Эрик Нояу және Чарли Клейснер болды. EOF 1990 жылдардың ортасында қаржылық бағдарламалау қауымдастығында белгілі бір деңгейде танымал болды, бірақ ол World Wide Web және веб-қосымшалар тұжырымы пайда болғаннан кейін өзінің толық құндылығын көрсетті. EOF компанияларға ескі дерекқорларын вебке қайта жазбастан қосуға көмектеседі дегені анық болды. Мемлекеттік басқару, жүктемені бөлу және динамикалық HTML құруға арналған құрылымдарды қосу арқылы NeXT 1996 жылы бірінші объектіге бағытталған веб-қосымша серверін – WebObjects-ті, оның негізінде EOF-ты пайдаланып іске қосты. 2000 жылы Apple Inc. (NeXT-пен біріккен) EOF-ты жеке өнім ретінде қолдауды тоқтатты, яғни әзірлеушілер оны Mac OS X үшін десктоптық қосымшаларды жасау үшін пайдалана алмайды. Алайда, ол WebObjects-тің жаңа нұсқасының маңызды бөлігі болып қала берді. 2001 жылы шыққан WebObjects 5 өз құрылымдарының Objective-C бағдарламалау тілінен Java тіліне ауысқандығымен ерекшеленді. Бұл өзгеріске қарсы шыққандар EOF-тың күші оның Objective-C тамырының жанама салдары болды және EOF бұрынғы сұлулығы мен қарапайымдылығын жоғалтты деп мәлімдеді. EOGenerator сияқты үшінші тараптық құралдар Java енгізген кемшіліктерді жоюға көмектеседі (негізінен категориялардың жоғалуына байланысты). Objective-C код базасы кейбір өзгерістермен десктоптық қосымшаларды жасаушыларға Core Data ретінде, Apple Cocoa API-нің бөлігі ретінде, 2005 жылдың сәуірінде Mac OS X Tiger құрылымымен бірге қайта ұсынылды.

EOF қалай жұмыс істейді

Enterprise Objects нысандық реляциялық бейнелеуге арналған құралдар мен базалық құрылымдарды ұсынады. Бұл технология әртүрлі дерек көздерінен деректерді алу механизмдерімен, мысалы, JDBC және JNDI каталогтары арқылы реляциялық деректер базаларынан, сондай-ақ деректерді осы дерек көздеріне қайтару механизмдерімен маманданған. Бұл механизмдер қабатталған, абстрактілі тәсілмен құрылған, бұл дамытушыларға деректерді алу және сақтау туралы нақты дерек көзіне немесе дерек көзін ұсынатын жеткізушіге қарағанда жоғары деңгейде ойлауға мүмкіндік береді. Бұл бейнелеудің орталық бөлігі – модель файлы ("EOModel"), оны визуалды құралдардың бірімен – EOModeler немесе Xcode-қа орнатылған EOModeler плагині арқылы құрастыруға болады. Бейнелеу келесідей жұмыс істейді: деректер базасының кестелері кластарға бейнеленеді, деректер базасының бағандары кластың атрибуттарына бейнеленеді, ал деректер базасының қатарлары нысандарға (немесе кластың мысалдарына) бейнеленеді. Сіз қанағаттандырылған деректер көздеріне негізделген деректер модельдерін құра аласыз немесе бастапқыдан деректер модельдерін құрап, деректер көзінде деректер құрылымдарын (кестелер, бағандар, біріктірулер) жасау үшін пайдалана аласыз. Нәтижесінде деректер базасының жазбаларын Java нысандарына түрлендіруге болады. Деректер модельдерін пайдаланудың артықшылығы – қолданбалар оларға қол жеткізетін дерек көздерінің ерекшеліктерінен оқшауланады. Қолданбаның бизнес-логикасын деректер базасының логикасынан бөлу дамытушыларға қолданбаны өзгертпестен деректер базасын өзгертуге мүмкіндік береді. EOF басқа құралдарда көрінбейтін деректер базасының ашықтығын қамтамасыз етеді және бастапқы кодты өзгертпей, әртүрлі жеткізушілердің деректер базаларына қол жеткізу үшін бірдей модельді пайдалануға, тіпті әртүрлі жеткізушілердің деректер базалары арасындағы қатынастарды құруға мүмкіндік береді. Оның қуаты негізгі дерек көздерін тұрақты нысандардың басқарылатын графиктері ретінде көрсетуден туындайды. Қарапайым тілмен айтқанда, бұл қолданбаның модельдік қабатын жадта анықталған деректер нысандарының жиынтығы ретінде ұйымдастырады дегенді білдіреді. Ол осы нысандарға енгізілген өзгерістерді қадағалайды және қажет болған жағдайда, мысалы, пайдаланушы кері қайтару командасын орындағанда, оларды кері қайтара алады. Содан кейін, қолданбаның деректеріне өзгерістерді сақтау уақыты келгенде, ол нысандарды негізгі дерек көздеріне архивтейді.

Мұраны қолдану

Enterprise Objects жобалау кезінде әзірлеушілер объектіге бағытталған мұрагерлік мүмкіндігін пайдалана алады. Мысалы, Клиент объектісі мен Қызметкер объектісі сияқты екеуі де, есім, мекенжай және телефон нөмірі сияқты жалпы сипаттамаларын Жалпы Адам объектісінен мұраға алуы мүмкін. Бұл ойлау қағидасы объектіге бағытталған дизайнға ендірілгенімен, реляциялық деректер базаларында мұрагерлікке тікелей қолдау жоқ. Дегенмен, Enterprise Objects арқылы нысандық иерархияны көрсететін деректер модельдерін құруға болады. Яғни, деректер базасының кестелеріне мұрагерлікті қолдау үшін, бірнеше кестеге немесе деректер базасы кестесінің белгілі бір көріністеріне сәйкес келетін корпоративтік объектілерді жобалауға болады.

Enterprise Object (EO) дегеніміз не?

Кәсіптік Объект – объектіге бағытталған бағдарламалауда жиі белгілі болған бизнес-объектіге ұқсас. Бұл бизнес саласындағы физикалық немесе түсініксіз объектіні (мысалы, клиент, тапсырыс, тауар және т.б.) моделідейтін класс. EO-ны басқа объектілерден ерекшелендіретін нәрсе – оның деректер мысалы дерек сақтағышына сәйкес келеді. Әдетте, кәсіптік объект реляциялық деректер базасындағы қатарды көрсететін кілт-мәнді жұптарды қамтиды. Кілт – бұл бағанның атауы, ал мән – деректер базасының сол қатарындағы мәлімет. Сондықтан EO қасиеттері кез келген жұмыс істеп тұрған қосымшаның өмір сүру мерзімінен тыс сақталады деуге болады. Нақтырақ айтқанда, Кәсіптік Объект – com.webobjects.eocontrol.EOEnterpriseObject интерфейсін іске асыратын класс мысалы. Кәсіптік Объектке сәйкес модель (EOModel деп аталады) бар, ол класс объектісінің моделі мен деректер базасының схемасы арасындағы байланысты анықтайды. Дегенмен, кәсіптік объект өзінің моделін тікелей білмейді. Мұндай абстракция деңгейі деректер базасының провайдерлерін әзірлеушінің кодын өзгертпестен ауыстыруға мүмкіндік береді. Бұл Кәсіптік Объекттерге жоғары қайта пайдалану мүмкіндігін сыйлайды.

ЕОФ және негізгі деректер

Олардың ортақ бастауына қарамастан, екі технология дамып, өзгеше жолға түсті, әр технология бастапқы Objective C код базасының бір бөлігін сақтап, жаңа мүмкіндіктер қосты.

Тек EOF қолдауы бар ерекшеліктер

EOF қолданушыға арналған SQL-ді, ортақ редақтау контексттерін, ішкі редақтау контексттерін, қарым-қатынастарды алдын ала жүктеу және пакеттік қателерді қамтиды – бұл мүмкіндіктердің барлығы Core Data қолдамайтын бастапқы Objective-C нұсқасында болған. Core Data, EOModelGroup сияқты нәрсені де ұсынбайды, бірақ NSManagedObjectModel класы қолданыстағы модельдерден модельдерді біріктіру және топтамалардан біріктірілген модельдерді алу әдістерін қамтамасыз етеді.

Тек негізгі деректермен қамтамасыз етілетін мүмкіндіктер

Негізгі деректер алынған қасиеттерді, басқарылатын объект модельіндегі көптеген конфигурацияларды, жергілікті сақтау орындарын және сақтау орындарын біріктіруді (нақты бір нысанға қатысты деректер бірнеше сақтау орындарында таралуы мүмкін), қасиеттер атауларын бейімдеуді және жергілікті тілге аударуды, сондай-ақ растау ескертулерін, қасиеттерді растау үшін предикаттарды қолдауды қамтиды. Бұл мүмкіндіктер бастапқы Objective-C нұсқасында бар, бірақ Java нұсқасында қолданылмайды.