**Uniface** е платформа за развој, дистрибуција и имплементација на апликации на голем број платформи, вклучувајќи мобилни, меинфрејм (mainframe), веб, SOA, Microsoft Windows, JEE и .NET.

Uniface апликациите се независни од базата на податоци и платформата на којашто работат. Uniface обезбедува интеграциска рамка којашто овозможува Uniface апликациите да се интегрираат со сите поголеми DBMS производи, но и широк спектар на други технологии, како меинфрејм (mainframe - CICS, IMS), веб-сервиси, SMTP и POP електронска пошта, LDAP директориуми, .NET, C и C++ програми, и Java. Uniface работи на Microsoft Windows, Windows Mobile, различни варијанти на Unix и Linux, IBM ISeries, Z/OS и VMS.

Лого на Uniface
Uniface може да се користи во комплексни системи коишто содржат критични податоци од витално значење за поддршка на деловните процеси, како што се веб-засновани апликации за електронска трговија, финансиски трансакции, администрација на плати, како и контрола на инвентар. Во моментот го користат илјадници компании во повеќе од 30 земји, со делотворна инсталирана основа од милиони корисници. Uniface апликациите рангираат од клиент/опслужувач до интернет, од внесување на податоци до автоматизација на процеси, како и портали кон кои се пристапува локално, преку интранет и интернет.

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

Uniface продукти
----------------

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

* **Uniface Development Environment (UDE)** – средина за развој на апликации којашто содржи колекција на интегрирани алатки за моделирање, имплементација, компајлирање, дебагирање и дистрибуција на апликации.
* **Uniface Flow** - средина за развој и имплементација на деловни процеси
* **Uniface View** - портал за интеграција на апликации којшто обезбедува организирана работна средина од веб документи, извештаи од бази на податоци, апликации, и други работни ресурси.

Uniface апликациите (вклучувајќи ги тука и UDE, Uniface Flow, и Uniface View) користат заедничка инфраструктура којашто се состои од:

* **Uniface Runtime Engine** – процес специфичен за секоја платформа којшто ги толкува и извршува компајлираните апликациски компоненти и библиотеки.
* **Uniface Router** – повеќенитен процес одговорен за интерпроцесна комуникација во Uniface апликациите, којшто ги иницира и запира Uniface Server процесите, врши врамнотежување на оптоварувањето, и разнесува пораки помеѓу различни Uniface процеси.
* **Uniface Server** - опслужувач-заснован процес којшто им овозможува на Uniface клиентите да пристапат до далечински ресурси, или да обработуваат далечински компоненти. Дејствува како апликациски опслужувач, опслужувач за пристап до бази на податоци и опслужувач за податотеки.
* Uniface репозиториум – складиште во вид на основа на податоци којашто поддржува SQL, коешто се користи за чување на дефинициите и одликите на развојните објекти, процесите и организациските модели, како и дефинициите на порталите.
* Опслужувач - Uniface го дистрибуира Apache Tomcat опслужувачот за развој и тестирање на семрежни прилози, но во производство може да се користи било кој опслужувач.
* Servlets - Jave Servlet-и кои служат како посредници во комуникацијата помеѓу опслужувачот и Uniface Server-от кај Uniface семрежните прилози, и при употреба на веб сервиси.
* Database connectors – драјвери коишто ја овозможуваат врската помеѓу Uniface и различни бази на податоци.
* Интеграциски алатки - драјвери, компоненти и програмски интерфејси коишто овозможуваат комуникација помеѓу Uniface и апликации од трети лица и технологии, вклучувајќи Java, CICS, IMS, LDAP, SMTP, POP, команди на оперативниот систем, COM, и многу други.

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

Uniface користи сопствен процедурален јазик наречен **Proc**, којшто се користи за кодирање на апликациите. Uniface ги автоматизира повеќето влезно-излезни операции преку своето јадро и стандарден код, така што многу основни операции не треба воопшто да се кодираат.

Uniface апликации
-----------------

Uniface апликациите се состојат од компоненти и претставуваат софтверски програми независни од инфраструктурата, коишто можат да создаваат или користат податоци од една или повеќе бази на податоци или системи од податотеки. Тие можат да бидат сложени апликации коишто вклучуваат компоненти што не се создадени од Uniface туку од други алатки за развој на апликации, и можат да се распоредат во дистрибуирани клиент/опслужувач и веб средини, како мобилни апликации или веб сервиси, и во меинфрејм (mainframe) средини.

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

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

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

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

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

Слојот коjшто го дефинира пристапот до податоци (data tier) содржи физички структури блиски до базата на податоци коишто се дефинирани во Uniface апликацискиот модел. Uniface обезбедува физички пристап до податоците од базата со тоа што има вграден SQL во своите DBMS конектори. Пристапот до мрежата и поврзувачкиот софтвер (middleware) е вграден во драјверите за поврзувачкиот софтвер и Uniface Router-от.

Uniface Runtime Engine процесот ги извршува апликациските компоненти. Тој ги прикажува презентациските компоненти со помош на соодветен конектор за кориснички интерфејс (графички или карактерен) и ги праќа и прима податоците преку соодветен DBMS конектор.

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

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

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

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

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

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

### Компоненти

Објектите опишани во апликацискиот модел се користат во компонентите. Програмерите ги вклучуваат во компонентите објектите од моделот со нивно цртање во едиторот за презентациски компоненти, или со нивно вметнување во стеблото на компонентната структура. Исто така, тие може да додадат објекти на ниво на компонента коишто не се во апликацискиот модел, како што се контролни полиња, менија и компонентни променливи.

Компонентите ги наследуваат одликите и тригерите дефинирани во апликацискиот модел со нивно копирање од моделот во компонентите. Дефинициите можат да се сменат на ниво на компонента за да се овозможи специфична функционалност на компонентата. Ова ја прекинува врската помеѓу апликацискиот модел и компонентата (иако е можно врската да се обнови). Ако одликите или кодот во моделот се променат на ниво на модел, сите компоненти кои го содржат тој објект треба само повторно да се компајлираат за да ги наследат новите дефиниции. Ова е особено корисно при одржување на апликациите, и гарантира дека правилата поврзани со објектот се достапни секаде каде што тој и се користи.

### Uniface репозиториум (складиште)

Uniface одржува база на податоци којашто ги содржи неговите мета-податоци за да се овозможи повторна употреба на апликациските модели, дефинициите на компонентите, нивниот изглед, процедуралниот код и така натаму. Репозиториумот е приватен и е наменет за пристап исклучиво преку UDE (Uniface средината за развој на апликации) за да се обезбеди неговиот интегритет. Сепак, структурата на репозиториумот е документирана, со што се овозможува (иако не се препорачува) директен интерфејс со него, на пример, за подготовка на извештаи.

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

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

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

Поврзување со бази на податоци
------------------------------

Uniface им пристапува на многуте бази на податоци и системи на податотеки кои ги поддржува со помош на конектори (или драјвери). Uniface DBMS конекторите ги мапираат и претвораат типовите на податоци дефинирани во Uniface, во најсоодветниот формат за одреден медиум за складирање на податоци. Во тек на извршувањето, можно е да се проследат параметри за да се повикаат (или оневозможат) модули специфични за базата на податоци. Доколку конекторот за базата на податоци е лиценциран, можно е да се врши претворање на податоци помеѓу различни извори на податоци. Uniface исто така обезбедува интерфејс (Database Connector Interface), кој може да се користи за создавање на сопствени конектори за бази на податоци.

Лиценцирање
-----------

Лиценцирањето се изведува преку дистрибуираниот лиценцен менаџер на Compuware (Compuware Distributed License Manager), којшто претставува систем за дистрибуција на лиценци до клиентите врз основа на побараување. Менаџерот е имплементиран како лиценцен опслужувач, со што се исклучува потребата за чување на лиценци локално.

Историја на Uniface
-------------------

Оригинално наречен UNIS, производот е создаден во Холандија во 1984 година од страна на Inside Automation, компанија која беше предводена од Бодо Дуке (Bodo Douque), со Фриц Крес (Frits Kress) како технички директор. Во 1986 година, и производот и компанијата го сменија името во Uniface.
Uniface е развиен врз принципите на 3-шеми (3-schema) архитектурата на Американскиот национален институт за стандарди (ANSI). Првпат предложена во 1975 година, архитектурата дефинираше стандарден пристап за изградба на системи за управување со бази на податоци којшто се состои од 3 шеми (или мета-модели):

* Концептуална шема - дефиниција на сите податочни елементи и врски помеѓу нив. Постои само една концептуална шема за базата на податоци. Uniface ја имплементира концептуалната шема како апликациски модел (во различни верзии на Uniface исто познат како модел на деловни објекти - Business Object Model, или како модел на апликациски објекти – Application Object Model).
* Надворешна шема - различни надворешни (кориснички) погледи врз податоците. Може да има повеќе надворешни шеми за базата на податоци. Uniface ги имплементира надворешните шеми како компоненти. Во текот на еволуцијата на Uniface, надворешните шеми станаа форми (Forms); невидливите форми коишто се извршуваат во позадина без приказ на корисникот станаа сервиси (Services); сервисите се поделија на сесиски сервиси (Session Services) наменети за објектите во слојот на оперативната логика, и ентитетски сервиси (Entity Services) кои можат да бидат или во слојот на оперативната логика, или во слојот којшто го дефинира пристапот до податоците. Формите кои беа користени за печатење наместо да бидат прикажани на екран, станаа извештаи (Reports). Мрежните места (USP – Uniface Server Pages) беа воведени за развој на семрежни прилози, а подоцна беше воведено и динамично мрежно место (DSP – Dynamic Server Page) за поддршка на Web 2.0 функционалност.
* Внатрешнa шема - дефиниција на физичката репрезентација на складираните податоци. Uniface ја препушта имплементацијата на внатрешната шема на многуте системи на релациски бази на податоци со коишто може да се поврзе, овозможувајќи на тој начин да биде независен од употребуваната база на податоци.

Uniface е развиен на DEC VAX компјутер, користејќи го локалниот VAX систем за управување со податотеки RMS. Трага од ова сè уште постои во производот и ден денес, и е препознатлива по континуираната употреба на "GOLD" копчето за промена на режими на работа. (DEC VT терминалите, всушност, имале златно или жолто копче на тастатурата. Денес, "GOLD" копчето е едноставно пренасочено кон копчето "+" на бројчената тастатура, или кон некое функциско копче.)

Раните верзии на производот доаѓаа во пакет со Sybase RDBMS базата на податоци под името FastBuild, иако пристапот до податоци не беше ограничен само на таа база на податоци.

Uniface постојано еволуира за да се справи со новите технологии и апликациски архитектури. Ова е од клучно значење за неговиот успех, бидејќи апликациите развиени со Uniface можат да бидат мигрирани, изменети и модернизирани без да се загуби оригиналната развојна инвестиција.

Uniface верзии
--------------

**Uniface верзија 3** (1986): Uniface 3 беше прва верзија на производот претставена во јавноста. Овозможуваше поддршка за повеќе бази на податоци (RMS, Oracle, C-ISAM, Ingres и RDB); виртуелна машина за преведување; структурен едитор, Uniface текст и команден едитор.

**Uniface верзија 4** (1988): Uniface 4 имаше подобрен текст едитор (сега наречен форм-едитор), подобрено печатење и приказ на екран, воведе поддршка за MS-DOS и интерфејс за CASE алатки.

**Uniface верзија 5** (1990): Uniface 5 овозможи клиент/опслужувач дистрибуција со воведување на далечински пристап до бази на податоци преку програма наречена Polyserver. Воведе графички кориснички интерфејс преку универзалниот презентациски интерфејс (Universal Presentation Interface - UPI). Поддршката за бази на податоци беше проширена на вкупно 13 бази и системи на податотеки, и производот сега беше достапен на MS-DOS, VMS, OS/2, Stratus VOS и UNIX. Исто така, беше воведена поддршка за Јапонското писмо.

**Uniface Six** (1994): Uniface Шест го заврши преминот кон целосно графичка средина за развој. Вклучуваше графички форм-едитор и едитор за апликациските модели; подобрена дистрибуција со динамични објектни библиотеки (Dynamic Object Library - DOL); поддршка за поврзување и вградување на објекти на Microsoft (Object Linking and Embedding - OLE); воведе поддршка за Apple Macintosh; додаде систем за контрола на пристап; интегрирана контрола на верзии, додаде алатки за известување наречени Personal Series (иако тие подоцна беа отстранети кога произведувачот на алатките одлучи да не го подобри својот производ); проширена поддршка на платформи.

**Uniface Seven** (1997): Uniface Седум беше фокусиран на интеграција на компоненти - и Uniface и надворешни - преку воведување на Uniface Request Broker (URB) архитектурата. URB поддржува двонасочна и синхрона или асинхрона комуникација помеѓу компонентите. Освен далечински пристап до податоци, беа додадени и партиционирани апликациски опслужувачи и размена на пораки. Uniface Седум исто така ги донесе првите Uniface алатки за развој и дистрибуција на семрежни прилози со воведувањето на веб апликациски опслужувач и Uniface Request Dispatcher (URD).

Други подобрувања вклучуваа нови видови компоненти (сервиси, мрежни места, извештаи), едитор за ‘потписи‘ (Signature Editor), подсистеми и алатка за конструкција на подсистеми (Assembly Workbench), операции, не-модални форми, компонентни инстанци, подобрени едитори и полесна навигација, подобрен интерфејс за надворешни едитори, нов дебагер, интегриран систем за он-лајн помош, шаблони за компоненти, подобрена валидација, Uniface Name Server и менаџер за графичка поделба на апликации.

Uniface Седум воведе уште неколку други алатки:

* Алатка за моделирање, интеграција и управување со деловни процеси. Оваа алатка се преименува во Optimal Flow под Uniface 8, потоа Uniface Flow под Uniface 9.
* Портал за деловна интеграција, првично наречен Optimal View, а подоцна Uniface View.
* Uniface JTi - опслужувач-заснован, тенок клиент за веб пристап до клиент/опслужувач апликации преку интернет или интранет, овозможувајќи високи перформанси и преку нископојасни мрежи.

**Uniface 8** (2001): Uniface 8 донесе големи промени во областа на интеграција на процеси. Uniface насочувачот и опслужувачот овозможија размерлива и врамнотежена апликациска дистрибуција. Web Request Dispatcher-от (WRD) го замени URD, подобрувајќи ги перформансите. Беше воведена поддршка за веб сервиси со SOAP и XML. Поврзувањето и интероперабилноста беа подобрени, и беше воведен метод за имплементирање на 3-слојна апликациска архитектура. Беа воведени конектори за SOAP, COM, CORBA и MQSeries; управувањето со екраните и податотеките беше подобрено; беше воведена нова алатка за подобрена апликациска дистрибуција; беа вовдени нови поттипови на компоненти за поддршка на 3-слојната архитектура; беа додадени справувачи (handles) за работа со компонентни инстанци, и беше воведено автоматско ослободување на меморија (garbage collection).

**Uniface 9** (2006): Uniface 9 беше фокусиран на графичкиот кориснички интерфејс (GUI) и генерално подобрувања на употребливоста на производот, полесна дистрибуција и интеграција. Беше воведена поддршка за Windows Mobile, а конфигурацијата и дистрибуцијата беа поедноставени со користење на компримирани (ZIP) архиви. Поддршката за Unicode само ги подобри и така импресивните повеќејазични можности, а подобрувањата во развојот на семрежни прилози и ракувањето со XML го донесе Uniface во линија со индустриските стандарди. Воведувањето на можноста за динамичко поместување на полињата во формите отстрани некои стари бариери за подобрување на флексибилноста.

Други одлики вклучуваа подобрено ракување со бои; динамични менија; интерфејс за XML; едитор на дијаграми за апликациските модели; вкрстено референцирање за поддршка при промени и апликациска дистрибуција, како и подобрена функционалност при работа со веб сервиси.

**Uniface 9.4** (2010): И покрај тоа што се води како подверзија на 9, Uniface 9.4 воведе доволно големи новини за да се смета за засебна верзија. Главен фокус беше ставен на т.н. богати интернет апликации (Rich Internet Application - RIA), со што е можно да се развиjат Web 2.0 апликации со богата функционалност на клиент/опслужувач апликации, a со користење на истите алатки и методологии кои се користат за развој на класичните клиент/опслужувач апликации. Поддршката за локални јазици и локации е значително подобрена, како и поддршката за HTML електронска пошта (HTML e-mail), зголемена безбедност и енкрипција.

**Uniface 9.5** (2011): Uniface 9.5 ја подобри интеграцијата на производот со светската пајажина. Воведувањето на JavaScript посредник, заедно со други подобрувања, овозможи обработка на страната на клиентот наместо на опслужувачот, со што се подобрија перформансите, интеграцијата, функционалноста и употребливоста. Управувањето со мрежни сесии сега вклучува и зголемена безбедност, а обработката на веб сервиси поддржува комплексни типови на податоци за сервиси засновани и на SOAP, и на REST протоколот. Исто така, воведени се подобрувања за критични клиент/опслужувач апликации, особено во областа на мрежниот посреднички елемент (grid widget).

Наводи
------

Надворешни врски
----------------

* Nextcom Czech company developing in Uniface
* www.udev.info Архивирано на 19 септември 2019 г. building better web applications with Uniface (Tutorials und HowTo's)
* Uniface-Dev Архивирано на 2 март 2013 г. French website about technology Uniface
* The Uniface Community Архивирано на 27 март 2014 г. Community web site
* Архивирано на 4 август 2020 г. Uniface product page
* Uniface mailing list and archive Архивирано на 6 јули 2011 г.
* Usenet Uniface newsgroup
* Profe$ional Uniface Users Universe a community web site
* Uli Merkel's Uniface resources and guide
* T.U.R.F. Архивирано на 12 октомври 2008 г. The Uniface Related Forum
* Database Driver for Source Code UD6: a database driver for the Uniface repository (used with Version Control)