-{Uniface}- је платформа за развој и примену пословних апликација које могу да раде у великом опсегу окружења, укључујући и мобилна, мејнфрејм (), веб, -{SOA}-, Microsoft Windows, JEE и -{.NET}-.

-{Uniface}- апликације су независне од платформе и базе података. -{Uniface}- обезбеђује оквир који омогућава интеграцију -{Uniface}- апликација са свим већим ДБМС производима, као и широким сп-{ектром других технологија, као што су мејнфрејм базирани производи (-{CICS}-, -{IMS}-), веб сервиси,}- SMTP и -{POP}- е-пошта, -{LDAP}- директоријуми, -{.NET}-, -{C}- и -{C++}- програми, и Јава. -{Uniface}- ради под Microsoft Windows-ом, оперативним системом Мобилни Windows, разним укусима Јуникса и Линукса, IBM -{ISeries}-, -{Z/OS}-, и -{VMS}-.

-{Uniface}- може да се користи у сложеним системима који одржавају критичне податке предузећа од виталног значаја за подршку пословних процеса, као што је електронска куповина на веб-у, финансијске трансакције, администрација плата и контрола залиха. Тренутно је користе хиљаде фирми у више од 30 земаља, са ефикасном инсталираном базом од милиона корисника. -{Uniface}- апликације се крећу од клијент-серверских до веба, и од уноса података до управљања процесима, као и портала којима се приступа локално, преко интранета и интернета.

Првобитно развијен у Холандији у фирми -{Inside Automation}-, касније -{Uniface B}-V, производ и фирму је купила -{Compuware Corporation}- из Детроита у 1994, али је развој -{Uniface}--а и даље са седиштем у Амстердаму.

Производи -{Uniface}--а

Платформа Uniface садржи низ алатки за развој и имплементацију, од којих су већина заједно упаковане у Uniface Application Platform Suite (APS). APS обухвата:

Uniface Development Environment — интегрисана колекција алата за моделирање, имплементацију, компајлирање, дебаговање, и дистрибуцију апликација. Uniface Flow — окружење за развој и примену пословних процеса Uniface View — портал за интеграцију апликација који нуди организовану средину састављену од веб докумената, извештаја из базе података, пословних апликација, и других корпоративних ресурса.

Uniface апликације (укључујући и Uniface Development Environment, Uniface Flow и Uniface View) користе заједничку инфраструктуру који се састоји од:

Uniface Runtime Engine — процес, специфичан за платформу, који тумачи и извршава компајлиране програмске компоненте и библиотеке Uniface Router — вишенитни процес одговоран за међупроцесну комуникацију у Uniface апликацијама. Он почиње и зауставља Uniface Server процесе, врши балансирање оптерећења, и размењује поруке између различитих Uniface процеса. Uniface Server — серверски процес који омогућава Uniface клијентима да дођу до удаљених ресурса, или да изврше удаљене компоненте. Он делује као апликацијски сервер, сервер за приступ базама података, као и сервер датотека. Uniface репозиторијум — складиште које се састоји од базе података која подржава SQL и које служи за ускладиштење дефиниција и својства развојних објеката, процеса и организацијских модела, као и дефиниције портала. Веб сервер — Uniface дистрибуира Apache Tomcat сервер за развој и тестирање веб апликација, али било који веб-сервер се може користити у производном окружењу. Сервлети — Јава сервлети који посредују у комуникацији између веб-сервера и Uniface сервера код Uniface веб апликација и веб сервиса. Базни (DBMS) конектори — драјвери који се баве везама између Uniface-а и разних база података. Интеграцијски алати - драјвери, компоненте, и АПИ-ји који се баве комуникацијом између Uniface-а и независних апликација и технологија, укључујући и Јаву, CICS, IMS, LDAP, SMTP, POP, команде оперативног система, COM, и још много тога.

Поред тога, Uniface JTi (Java Thin Client Interface) може да испоручи клијент'-серверску Uniface апликацију на практично било који рачунар који је повезан на интернет.

Uniface има властити процедурални језик који се зове Proc, и који се користи за кодирање апликација и њиховог понашања. Uniface аутоматизује већину улазно/излазних операција кроз своје језгро и стандардни код, па велики број фундаменталних операција уопште не треба да се кодира.

Uniface апликације

Uniface апликације су засноване на компонентама и представљају програме независне од инфраструктуре, који могу да креирају или користе податке ускладиштене у једној или више база података или система датотека. Оне могу бити композитне апликације које укључују компоненте креиране помоћу других развојних алата, и могу бити распоређене у дистрибуираним клијент-серверским и веб окружењима, као и мобилним апликацијама, веб сервисима и мејнфрејм (mainframe) срединама.

Uniface има различите типове компонената који су намењени за коришћење у различитим слојевима вишеслојне (multi-tier) апликацијске архитектуре.

Компоненте у презентацијском слоју (presentation tier) су одговорне за кориснички интерфејс, и обухватају:

Forms— интерактивни екрани за приказивање и ажурирање података у клијент-серверском окружењу. Server Pages— интерактивне странице за приказивање и ажурирање података у веб окружењу Reports— извештаји за представљање података у штампаном облику.

Компоненте у слоју пословне логике (business logic tier) рукују пословним правилима и специфичним понашањем везаног уз конкретне задатке, и немају кориснички интерфејс:

Services — сервиси пружају обраду и пословну логику када их позову друге компоненте, било локално или даљински. Session Services — сесијски сервиси садрже централизирана, сложена пословна правила која утичу на више ентитета/табела података, као што су специфична операциона понашања, трансакције и референцијални интегритет. Entity Services— ентитетски сервиси садрже централизирана, једноставна правила за појединачне ентитете/табеле података.

Слој који дефинише приступ подацима садржи физичке структуре базе података које су део Uniface апликацијског модела. Uniface обезбеђује физички приступ подацима помоћу уграђеног SQL-а у базним конекторима. Приступ мрежи и посредничком софтверу је уграђен у драјвере и Uniface рутер.

Uniface Runtime Engine извршава апликацијске компоненте. Он приказује презентацијске компоненте помоћу одговарајућег корисничког интерфејса (било графичког или карактерног), и шаље и прима податке преко базних конектора.

Развој апликација

Развој апликација Uniface-ом се базира на коришћењу модела и компоненти (model-driven, component-based development). Структура података, пословна правила и стандардно понашање апликације су уграђени у апликацијски модел. Дефиниције из модела могу да се поново користе и компоненте их наслеђују, али оне могу заменити наслеђене дефиниције и тиме обезбедити специфично понашање и карактеристике. Употреба шаблона побољшава продуктивност и спроводи доследност приликом дефинисања модела.

Апликацијски модел

Апликацијски модел дефинише ентитете (табеле), поља (колоне), кључеве (индексе) и релације, заједно са референцијалним интегритетом. Сваки ентитет и поље у моделу има својства и сет тригера. Пословна правила се додају моделу декларативно – помоћу сетирања својства, и процедурално – помоћу додавања Proc кода (Uniface-овог процедуралног језика) у тригере.

Тригери су контејнери за код. Неки тригери представљају корисничке или системске догађаје, на пример ‘Occurrence Gets Focus’, ’Read’ or ’Leave Field’. Други покривају питања као што је провера валидности, или делују као контејнери за методе везане уз одређени објекат.

Употреба тригера на нивоу модела омогућава Uniface-у да прикупи особине и понашања у оквир пословних објеката, тиме раздвајајући логичку од физичке структуре података. То омогућава да се стандардно понашање дефинише једном, а да се поново употреби у току развоја апликације. Тиме се убрзава развој апликација и олакшава употреба трослојне апликацијске архитектуре.

Компоненте

Објекти који су описани у апликацијском моделу се поново употребљавају у компонентама. Програмери уграћују објекте из модела у компоненте са њиховим цртањем у едитору за компоненте на презентацијском нивоу, или убацивањем у стабло компонентне структуре. Они такође могу да додају објекте који нису у апликацијском моделу на нивоу компоненте, као што су контролна поља, менија и компонентне променљиве.

Својства и тригери дефинисани у апликацијском моделу се наслећују њиховим копирањем из модела у компоненту. Дефиниције могу да се промене на нивоу компоненте како би се добила нека специфична функционалност. У том случају се раскида веза између апликацијског модела и компоненте (иако је могуће да се та веза поново успостави). Ако се својства и код мењају на нивоу модела, све компоненте које садрже тај објекат треба само да се поново компајлирају да би се прикупиле нове дефиниције. Ово пружа погодности при одржавању, и осигурава да су правила у вези са објектом доступна где год да се он користи.

Uniface репозиторијум

Uniface одржава базу података сопствених метаподатака за потребе поновног коришћења - апликацијски модели, компоненте дефиниције, компонентни изглед, процедурални код, и тако даље. Репозиторијуму може да се приступи искључиво преко Uniface-ове развојне средине, како би се обезбедио његов интегритет. Међутим, структура репозиторијума је документована, тако да је могуће (мада није препоручљиво) да се њему директно приступи, на пример, за припрему извештаја.

Коришћењем централизованог репозиторијума, развој апликација може да се подели на тимове програмера. Uniface може да се интегрише са било којим системом за контролу изворног кода (SCCS) који подржава спецификације Microsoft-овог заједничког интерфејса за контролу изворног кода (Microsoft Common Source Code Control Interface Specification). SCCS функционалности доступне у оквиру Uniface-а зависе од конкретног SCCS–а који се користи, јер произвођачи софтвера различито тумаче и примењују MS CSCC интерфејс. Као резултат тога, подршка функционалности и понашања варира у зависности од SCCS-а у употреби.

Дистрибуција апликација

Uniface апликације могу бити распоређене на платформама од мејнфрејма (mainframe) до мобилних, без промене кода. Компоненте (и други објекти, као што су покретне љуске, менија, траке са алаткама (панели), симболи, глобални и укључени Proc записи) се компајлирају и скупљају у објекте који могу да буду упаковани у ZIP датотеке, и распоређени на било којој платформи. Ови објекти се процесирају коришћењем виртуелне машине и интерпретатора специфичних за сваку платформу. (Јава и други језици касније су пратили Uniface у том погледу). Компоненте могу да се компајлирају на једној машини и извршавају на другој, под условом да је Uniface виртуелна машина присутна.

Повезивање са базама података

Uniface приступа многим базама података и системима датотека које подржава помоћу базних конектора (или драјвера). Базни конектори мапирају и конвертују Uniface-ове типове података у најпогоднији формат за одређени медијум за ускладиштење података. У току извршавања, могу да се сетирају параметри како би се омогућиле (или онемогућиле) одређене екстензије базе података. Под условом да је базни конектор лиценциран, могуће је конвертовање података између различитих извора. Uniface такође обезбеђује интерфејс (Database Connector Interface) који може да се користи за креирање сопствених конектора.

Лиценцирање

Лиценцирање се обавља преко Compuware-овог дистрибуираног лиценцног менаџера (Distributed Licence Manager - DLM), који ради на принципу дистрибуције лиценци клијентима на њихов захтев. DLM ради као лиценцни сервер, чиме се искључује потреба да се лиценце одржавају локално.

Историја Uniface-а