55
Univerzitet u Novom Sadu Tehnički fakultet „Mihajlo Pupin“ Zrenjanin TEMA: SOFTVERSKA ARHITEKTURA DISTRIBUIRANIH INFORMACIONIH SISTEMA SUBJECT: SOFTWARE ARCHITECTURE IN DISTRIBUTED INFORMATION SYSTEMS -Master radMentor: Student: Doc. dr Ljubica Kazi Tamaš Njari, MIT 18/17 Informacione tehnologije - master Zrenjanin, 2017.

Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

Univerzitet u Novom Sadu

Tehnički fakultet „Mihajlo Pupin“

Zrenjanin

TEMA: SOFTVERSKA ARHITEKTURA DISTRIBUIRANIH INFORMACIONIH

SISTEMA

SUBJECT: SOFTWARE ARCHITECTURE IN DISTRIBUTED INFORMATION

SYSTEMS

-Master rad–

Mentor: Student:

Doc. dr Ljubica Kazi Tamaš Njari, MIT 18/17

Informacione tehnologije - master

Zrenjanin, 2017.

Page 2: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

2

Univerzitet u Novom Sadu

Tehnički Fakultet "Mihajlo Pupin" Zrenjanin

Ključna dokumentacijska informacija

Redni broj:

RBR

Identifikacioni broj:

IBR

Tip dokumentacije:

TD

Monografska dokumentacija

Tip zapisa:

TZ

Tekstualni štampani materijal

Vrsta rada (dipl, mag, dokt):

VR

Master rad

Ime i prezime autora:

AU

Tamaš Njari

Mentor (titula, ime, prezime, zvanje):

MN

Prof. dr. Ljubica Kazi

Naslov rada:

NR

Softverska arhitektura distribuiranih informacionih sistema

Jezik publikacije:

JP

Srpski (latinica)

Jezik izvoda:

JI

Srpski (latinica) / Engleski

Zemlja publikovanja:

ZP

Srbija

Uže geografsko područje:

UGP

Vojvodina

Godina:

GO

2018.

Izdavač:

IZ

Autorski reprint

Mesto i adresa:

MA

Tehnički fakultet ''Mihajlo Pupin'', Đure Đakovića bb Zrenjanin

Fizički opis rada:

FO

Broj poglavlja 7 / strana 55 / slika 22/ listinga 9/

Naučna oblast:

NO

Informacione tehnologije

Naučna disciplina:

ND

Distribuirani informacioni sistemi

Predmetna odrednica, ključne reči:

PO

MVC, Distribuirane, RestFul,

UDK

Čuva se:

ČU

U biblioteci Tehničkog Fakulteta „Mihajlo Pupin“ Zrenjanin

Važna napomena:

VN

Izvod:

IZ

U ovom radu opisane su tehnike koje se primenjuju u okviru softverska arhitekture

distribuiranih informacionih sistema. Opisane su osnovne tehnike višeslojne

objektno – orientisane arhitekture sa slojevima , MVC arhitektura, kao i softverske

arhitekture koje podražavaju razne modele kolaboracije. Primer je realizovan

korišćenjem Entity framework-a, MVC arhitekturom, RestFul servisom, PHP

programskim jezikom, .Net framework-om i programsko razvojno okruženje

Microsoft Visual Studio.

Datum prihvatanja teme od strane NN veća:

DP

Datum odbrane:

DO

Page 3: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

3

Članovi komisije: (ime i prezime / titula / zvanje

/ naziv organizacije / status)

KO

Page 4: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

4

University of Novi Sad

Technical Faculty "Mihajlo Pupin" Zrenjanin

Key word documentation

Accesion number:

ANO

Identification number:

INO

Document type:

DT

Monograph Document

Type of record:

TR

Textual printed material

Concents code:

CC

M.Sc thesis

Author:

AU

Tamaš Njari

Menthor:

MN

Prof. dr. Ljubica Kazi

Title:

TI Software architecture in distributed information systems

Language of text:

LT

Serbian (Latin)

Language of abstract:

LA

English / Serbian

Country of publication:

CP

Serbia

Locality of publication:

LP

Vojvodina

Publication year:

PY

2018.

Publisher:

PU

Author’s Reprint

Publication place:

PP

Technical faculty '' Mihajlo Pupin'' Đure Đakovića bb Zrenjanin

Physical description:

PD

chapters 7 / pages 55 / pictures 22/ lists of code 9/

Scientific field:

SF

Distributed information systems

Scientific discipline:

SD

Methodology of research work

Subject, Key words:

SKW

MVC, Distributed, RestFul

UC

Holding Data:

HD

Library of Technical Faculty “Mihajlo Pupin“, Zrenjanin

Note:

N

Abstract:

AB

This paper describes the techniques used in the software architecture of distributed

information systems. The basic techniques of multilayered object-oriented

architecture with layers, MVC architectures, and software architectures that reflect

various collaborative models are described. An example is realized using Entity

framework, MVC architecture, RestFul service, PHP programming language, .Net

framework and Microsoft Visual Studio development environment

Accepted on Scientific Board on:

AS

Defended:

DE

Page 5: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

5

Thesis defend Board:

DB

Page 6: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

6

Sadržaj

1. Metodološki okvir istraživanja ............................................................................................ 9

1.1. Predmet i problem istraživanja ....................................................................................... 9

1.2. Način istraživanja ............................................................................................................ 9

1.3. Cilj i zadaci istraživanja ................................................................................................... 9

1.4. Hipoteze u istraživanju .................................................................................................... 9

1.5. Očekivani rezultati ........................................................................................................ 10

1.6. Metodološki postupak................................................................................................... 10

2. Teorijsko istraživanje......................................................................................................... 11

2.1. Stilovi softverske arhitekture ........................................................................................ 11

2.1.1. Slojevita arhitektura ...................................................................................................... 12

2.1.2. Objektno-orijentisana arhitektura ................................................................................ 12

2.1.3. Podacima usredsređena arhitektura ............................................................................ 13

2.1.4. Arhitektura zasnovana na događajima ........................................................................ 14

2.2. Softverski arhitekturni paterni ...................................................................................... 15

2.2.1. Višeslojna arhitektura ................................................................................................... 16

2.2.2. MVC arhitektura............................................................................................................ 18

2.2.3. Komparacije višeslojne arhitekture i MVC arhitektura ................................................. 20

3. Stručno istraživanje ........................................................................................................... 23

3.1. Komparativna analiza karakteristika MVC u raznim verzijama u okviru .NET tehnologije ................................................................................................................................ 23

3.2. MVC u .NET-u ................................................................................................................ 25

3.2.1. .NET Framework ............................................................................................................ 26

3.2.2. .NET Core ....................................................................................................................... 26

3.3. MVC u Javi ..................................................................................................................... 27

3.3.1. Spring MVC .................................................................................................................... 28

3.3.2. Strust ............................................................................................................................. 28

3.4. MVC u PHP-u ................................................................................................................. 29

3.4.1. Laravel ........................................................................................................................... 30

3.4.2. Symfony ......................................................................................................................... 30

Page 7: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

7

3.5. SOA arhitektura ............................................................................................................. 31

3.5.1. Web servisi SOAP i Restful ............................................................................................ 31

4. Rezultati naučno-stručnih istraživanja .............................................................................. 34

4.1. Popularnost programskih jezika ................................................................................... 34

4.2. Statistika korišćenja Veb servisa ................................................................................... 36

4.3. Najbolji alati za testiranje API ....................................................................................... 37

5. Implementirano rešenje .................................................................................................... 40

5.1. Opis poslovnog konteksta ............................................................................................. 40

5.2. Cilj i opis korišćenih tehnologija .................................................................................... 40

5.2.1. Microsoft Visual Studio 2017 ........................................................................................ 40

5.2.2. Entity Framework .......................................................................................................... 40

5.3. Korisničko uputstvo ....................................................................................................... 41

5.4. Opis implementacije...................................................................................................... 42

5.4.1. Kreiranje MVC projekta ................................................................................................. 42

5.4.1.1. Model ........................................................................................................................ 42

5.4.1.2. Kreiranje baze podataka pomoću Entity Framework-a ............................................ 42

5.4.1.3. Controller .................................................................................................................. 43

5.4.1.4. View ........................................................................................................................... 45

5.4.2. RESTFul servis ................................................................................................................ 45

5.4.2.1. Kreiranje RESTFul servisa .......................................................................................... 45

5.4.2.2. Kontrolisanje RESTFul API-a ...................................................................................... 48

5.4.2.3. Kreiranje prikaza ....................................................................................................... 50

5.4.3. Povezivanje PHP aplikacije sa veb serverom................................................................. 51

6. Zaključak ........................................................................................................................... 53

7. Literatura .......................................................................................................................... 54

Page 8: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

8

Apstrakt

U ovom radu opisane su tehnike koje se primenjuju u okviru softverska arhitekture distribuiranih

informacionih sistema. Opisane su osnovne tehnike višeslojne objektno – orientisane arhitekture

sa slojevima , MVC arhitektura, kao i softverske arhitekture koje podražavaju razne modele

kolaboracije. Primer je realizovan korišćenjem Entity framework-a, MVC arhitekturom, RestFul

servisom, PHP programskim jezikom, .Net framework-om i programsko razvojno okruženje

Microsoft Visual Studio.

Abstract

This paper describes the techniques used in the software architecture of distributed information

systems. The basic techniques of multilayered object-oriented architecture with layers, MVC

architectures, and software architectures that reflect various collaborative models are described.

An example is realized using Entity framework, MVC architecture, RestFul service, PHP

programming language, .Net framework and Microsoft Visual Studio development environment.

Page 9: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

9

1. Metodološki okvir istraživanja

1.1. Predmet i problem istraživanja

Predmet istraživanja su različite arhitekture softvera koje su u primeni u okviru distribuiranih

informacionih sistema, kao sto su višeslojne objektno – orientisane arhitekture sa slojevima (sloj

za rad sa podacima, sloj poslovne logike, servisni sloj, prezentacioni sloj), MVC arhitektura, kao

i softverske arhitekture koje podražavaju razne modele kolaboracije softvera (Publisher -

Subscribe).

1.2. Način istraživanja

U ovom radu predmet istraživanja je izučen sa teorijskog i empirijskog aspekta. U teorijskom

aspektu biće opisane osnovne definicije pojedinih tehnika u radu sa distribuiranim informacionih

sistema. U empirijskom delu biće opisana postojeća stručna rešenja i dat primer kojim se ilustruje

primena pojedinačnih tehnika.

1.3. Cilj i zadaci istraživanja

Ciljevi i rezultati istraživanja su: teorijska analiza osnovnih koncepata koji se odnose na softverske

arhitekture distribuiranih informacionih sistema, analiza postojećih naučnih i stručnih rešenja u

oblasti i komparacija rezultata, izrada prototipa veb aplikacije primenom višeslojne arhitekture i

MVC arhitekture. Cilj izrade prototipa aplikacije je ilustrovanje primene jednog od najčešće

korišćenih arhitekturnih paterna - MVC arhitekture.

1.4. Hipoteze u istraživanju

Osnovna hipoteza:

Najčešće korišćene savremene tehnologije razvoja softvera omogućavaju implementaciju softvera

kroz višeslojne arhitekture uz podršku distribuiranom procesiranju i servisno-orijentisanom

pristupu.

Podhipoteze:

Savremene tehnologije razvoja softvera omogućavaju implementaciju softvera kroz višeslojne

arhitekture.

Savremene tehnologije razvoja softvera omogućavaju implementaciju softvera uz podršku

distribuiranom procesiranju.

Savremene tehnologije razvoja softvera omogućavaju implementaciju softvera uz podršku

servisno-orijentisanom pristupu.

Page 10: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

10

1.5. Očekivani rezultati

• Teorijski prikaz osnovnih koncepata.

• Rezultati analize stručnih rešenja primene različitih softverskih arhitektura.

• Rezultati analize naučnih istraživanja u oblasti različitih softverskih arhitektura.

• Realizovan primer softverske aplikacije koja koristi različite tehnologije i arhitekture.

1.6. Metodološki postupak

1. Naučno-metodološko koncipiranje istraživanja

2. Teorijska istraživanja

3. Analiza postojećih stručnih rešenja i naučno-istraživačkih rezultata

4. Praktična implementacija primene različitih tehnoloških elemenata

5. Sumiranje i dokumentovanje rezultata

Page 11: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

11

2. Teorijsko istraživanje

“Softverska arhitektura računarskog sistema ili programa je struktura, koja obuhvata

softverske komponente, spoljašnje vidljive osobine ovih komponenti i relacije između njih. Termin

se takođe odnosi i na dokumentaciju softverske arhitekture sistema. Dokumentovanje softverske

arhitekture olakšava komunikaciju između svih učesnika u razvoju i omogućava ponovno

korišćenje komponenti dizajna i šablona između projekata.

Disciplina softverske arhitekture se fokusira na ideji smanjenja kompleksnosti kroz

apstrakciju i razdvajanja interesa. Danas još uvek ne postoji precizna definicija softverske

arhitekture. Postoji više desetina klasičnih i modernih tumačenja i definicija i više stotina definicija

od strane IT zajednice. Jednu interesantnu definiciju dao je Eoin Woods: Softverska arhitektura je

skup odluka o dizajnu koje, ako se ne donesu korektno, mogu dovesti do neuspeha projekta.”[11]

“Distribuirani informacioni sistemi su složeni delovi softvera od kojih su komponente po

definiciji raspoređene na više mašina. Za ovladanje složenošću neophodno da sistem bude uredno

organizam. Postoje različiti načini za organizaciju distribuiranog sistema, ali nam je važno da

napravimo razliku između logičke organizacije sakupljanja softverskih komponenti, i stvarnu

fizičku realizaciju.

Organizacija distanciranih sistema uglavnom se odnosi na softverske komponente koje

čine sistem. Ove softverske arhitekture nam govore o tome kako se organizuju različite softverske

komponente i kako treba da integrisati.

Stvarna fizička realizacija distribuiranog sistema zahteva da instanciramo i stavimo

softverske komponente na stvarne mašine. Postoji mnogo različitih izbora koji se mogu učiniti u

tome. Konačna instanca softverske arhitekture se takođe naziva sistemska arhitektura.”[1]

2.1. Stilovi softverske arhitekture

Distribuirane sistemske arhitekture su povezane sa komponentama i konektorima.

Komponente mogu biti pojedinačni čvorovi ili važne komponente u arhitekturi dok su konektori

oni koji povezuju svaku od ovih komponenti.

• Konektor: Komunikaciona veza između modula koja poređuje u koordinaciji ili saradnji

između komponenti.

• Komponenta: modularna jedinica sa dobro definisanim interfejsima; zamenljiv; ponovno

upotrebljiv.

Koristeći komponente i konektore, možemo doći do različitih konfiguracija, koje su u klasu

klasificirane u arhitektonske stilove. Do sada je identifikovano nekoliko stilova, od kojih su

najvažniji za distribuirane sisteme:

• Slojevita arhitektura (Layered Architecture).

• Objektno- orijentisana arhitektura (Object-based Architecture).

• Podacima usredsređena arhitektura (Data-centered Architecture).

Page 12: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

12

• Arhitektura zasnovana na događajima (Event-based Architecture).

2.1.1. Slojevita arhitektura

“Layered Architecture (Složena arhitektura) razdvaja slojeve komponenti jedan od

drugog, dajući mu mnogo modularni pristup. Poznati primer za to je OSI model koji uključuje

slojevitu arhitekturu kada se sarađuju sa svakom od komponenti. Svaka interakcija je sekvencijalna

kada sloj stupi u vezu sa susednim slojem i ovaj proces se nastavlja, sve dok se ne obezbedi zahtev.

Ali u određenim slučajevima, implementacija može biti izvedena tako da se neki slojevi preskoče,

što se naziva preko granična koordinacija. Kroz koordinaciju između slojeva, mogu se postići bolji

rezultati zbog povećanja performansi. Lamele na dnu pružaju uslugu slojevima na vrhu. Zahtev se

kreće od vrha do dna, a odgovor se šalje odozdo prema vrhu. Prednost korišćenja ovog pristupa je

da pozivi uvek prate unapred definisanu stazu i da se svaki sloj može lako zameniti ili promeniti

bez uticaja na celokupnu arhitekturu.”[9]

Slika 1: Osnovna ideja slojevita arhitektura [29]

2.1.2. Objektno-orijentisana arhitektura

“Object-based architecture je zasnovana je na labavom spoju aranžmana objekata. Ne

postoji specifična arhitektura poput slojeva. Kao i kod slojeva nema sekvencijalan skup koraka

koji treba izvršiti za određeni poziv. Svaka od komponenti se naziva objekat, pri čemu svaki objekt

može da komunicira sa drugim objektima preko datog konektora ili interfejsa. Ove je mnogo

direktnije tamo gde sve različite komponente mogu imati direktnu interakciju sa drugim

komponentama putem direktnog poziva.”[9]

Page 13: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

13

Slika 2: Osnovna ideja objektno-orijentisane arhitekture [29]

“Kao što je prikazano na gornjoj slici, komunikacija između objekta se dešava kao poziv

metode. Ove se generalno zovu Remote Call Calls (RPC). Neki popularni primeri su Java RMI,

Web Services i REST API (Application Programming Interface) pozivi. Sledeći propertiji su.

Ovaj stil arhitekture je manje strukturiran.

Komponenta = objekat.

Konektor = RPC (Remote Procedure Call) ili RMI (Remote Method Invocation).

Kada se razdvajaju ovi procesi u prostoru, ljudi žele da su komponente anonimne i

zamenljive. I proces sinhronizacije bi trebao biti asinhroni, što je dovelo do arhitekture

usredsređenih na podatke i arhitektura zasnovanih na događajima.”[9]

2.1.3. Podacima usredsređena arhitektura

“Data-centered arhitektura zasniva se na data-centru, gde se primarna komunikacija odvija

preko centralnog spremišta podataka. Ovo zajedničko spremište može biti aktivno ili pasivno. Ovo

je više kao problem potrošača u proizvodnji. Proizvođači proizvode predmete u zajedničku

prodavnicu podataka, a potrošači mogu tražiti podatke od nje. Ovo zajedničko skladište, čak je i

jednostavna baza podataka. Ali ideja je da komunikacija između objekata koji se dešavaju kroz

ovo zajedničko skladište. Ovo podržava različite komponente (ili objekte) obezbeđujući istrajni

prostor za skladištenje za te komponente (kao što je MySQL baza podataka). Sve informacije koje

se odnose na čvorove u sistemu čuvaju se u ovom istrajnom skladištu. U arhitekturi baziranim na

događaj, podaci se šalju i primaju samo od onih komponenti koje su se već́ pretplatile.

Page 14: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

14

Neki popularni primeri su distribuirani sistemi datoteka, potrošač-proizvođač i veb usluge

bazirane na podacima.”[9]

Slika 3: Osnovna ideja podacima usteđena arhitektura [28]

2.1.4. Arhitektura zasnovana na događajima

“Kod Event-based arhitekture celokupna komunikacija u ovoj vrsti sistema se dešava kroz

događaje. Kada se generiše događaj, on će biti poslat u sistem busa. Uz to, svi ostali će biti

obavešteni govoreći da se takav događaj dogodio. Dakle, ako je neko zainteresovan, taj čvor može

izvući događaj iz busa i koristiti ga. Ponekad ovi događaji mogu biti podaci ili čak URL adrese

resursa. Dakle, prijemnik može pristupiti svim informacijama koje se daju u događaju i postupaju

u skladu s tim. Procesi komuniciraju kroz širenje događaja.

Ovi događaji povremeno prenose podatke. Prednost u ovom arhitektonskom stilu je da su

komponente labavo povezane. Zbog toga je lako dodati, ukloniti i modifikovati komponente u

sistemu. Neki primeri su izdavač - pretplatnički sistem (Publisher - subscriber sistem), Enterprise

Services Bus (ESB) i akka.io.

Jedna od glavnih prednosti je da ove heterogene komponente mogu kontaktirati busom

kroz bilo koji komunikacijski protokol. Međutim, ESB ili određena magistrala, ima mogućnost da

postupi s bilo kojom vrstom dolaznog zahteva i postupa u skladu s tim.”[9]

Page 15: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

15

Slika 4: Osnovna ideja arhitektura zasnovana na događajima [27]

“Event-based arhitektonski stil zasniva se na arhitekturi izdavača-pretplatnika. Između svakog

čvora ne postoji direktna komunikacija ili koordinacija. Umesto toga, objekti koji su pretplaćeni

na uslugu, komuniciraju preko sabir nice događaja.

Arhitektura zasnovana na događaju podržava nekoliko stilova komunikacije.

• Publisher-subscriber.

• Broadcast.

• Point-to-Point.

Glavne prednosti ove arhitekture su da su komponente razdvojene u svemiru - labavo spojene.”[9]

2.2. Softverski arhitekturni paterni

Da bi bilo koji dizajn sistema bio uspešan, moramo odabrati definisan arhitektonski obrazac koji

je pogodan za sistem iz svakog aspekta. Arhitektonski obrazac je odabran na osnovu toga koliko

je kompatibilan sa dizajnom, koliko će biti efikasan za postizanje željenog rezultata, njegovu

ekonomičnost, vreme koje će potrošiti i resurse koji će joj trebati. Za određene projekte uzeti su u

obzir prethodno kreirani arhitektonski obrasci kako bi se dobio uvid u preferirani obrazac.

Distribuirani sistemi se sastoje od različitih hardvera i softvera (kolektivno zvane komponente)

koji komuniciraju jedni sa drugima samo putem prenosa poruka. Ove komponente se nalaze unutar

jedne mreže. Dakle, kada razmišljamo o stilovima arhitekture za distribuirane računare, glavni

zadatak bi bio da se osigura da oni mogu komunicirati jedni s drugima preko komunikacijske

mreže.

Page 16: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

16

2.2.1. Višeslojna arhitektura

Višeslojna arhitektura (ili n-tier arhitektura) je arhitektura klijent-servera koja se koristi u

razvoju softvera, gde su vizuelizacija, upravljanje podacima i poslovna logika podeljeni u zasebne

procese. To znači da su ove različite funkcije hostirane na nekoliko mašina ili klastera,

osiguravajući da se usluge pružaju bez razmene resursa i, kao takve, ove usluge se isporučuju u

vrhunskom kapacitetu. "N" u ime n-tier arhitekture se odnosi na bilo koji broj od 1.

U objektno-orijentisanom dizajnu višeslojne arhitekture softverske podrške informacionog

sistema, najčešći su slojevi:

• Prezentacioni sloj (Presentation layer).

• Aplikativni sloj (Application layer).

• Sloj poslovne logike ( Busness layer).

• Sloj pristupa podacima (Data access layer).

Prednosti korišćenja višeslojne arhitekture:

• Sigurnost: Svaki od tri nivoa možete osigurati odvojeno koristeći različite metode.

• Jednostavan za upravljanje: Pruža mogućnost za upravljanje svakim nivoom zasebno,

dodavanjem ili modifikovanjem svakog nivoa bez uticaja na druge nivoe.

• Skalabilnost: Pruža mogućnost dodavanja više resursa, po nivou, bez uticaja na druge

nivoe.

• Fleksibilnost: Pored izolovane skalabilnosti, omogućuje proširenje svakog nivoa na bilo

koji način.

Page 17: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

17

Slika 5: Troslojna softverska arhitektura [25]

Prema[8] u arhitekturi klijenta / servera broj nivoa zavisi od tri sloja programa, tj. Sloja

prezentacije, aplikacije / poslovne logike i sloja baze podataka. Prezentacioni sloj je najviši sloj u

bilo kojoj arhitekturi koja omogućava korisniku interakciju sa sistemom. Ona rukuje ulazima koje

korisnik daje i prikazuje izlaz na korisničkom ekranu. Primena ili poslovni logički sloj je srednji

sloj koji se sastoji od poslovnih pravila / algoritama. Ona se bavi razmenom informacija između

sloja prezentacije i sloja baze podataka. Baza podataka je donji sloj koji pruža usluge (usluge

datoteka, usluge štampanja, komunikacijske usluge i usluge baze podataka) na gornje slojeve.

Klijent / server arhitektura može biti kategorizirana kao:

➢ Jednostruka arhitektura.

➢ Dvostruka arhitektura.

➢ Troslojna arhitektura.

➢ N-tier arhitektura.

Jednostruka arhitektura

Lako je dizajnirati i implementirati jedan-tier arhitekturu, jer ne postoji razdvajanje slojeva

programa. Svi tri sloja programa su tesno povezani jedni sa drugima. Jedna tier arhitektura se

koristi kada je aplikacija jednostavna, tj. Broj korisnika je manji, a zahtevi za aplikacijama nisu

složeni.[8]

Dvostruka arhitektura

Dvostruka arhitektura je ona u kojoj klijent direktno komunicira sa serverom. Podržava

integrirano razvojno okruženje kako bi se olakšao brzi razvoj aplikacija. Gornja dva sloja (sloj

prezentacije i poslovna logika) rade zajedno, ali sloj baze podataka je odvojen od njih. Ova

arhitektura dobro funkcioniše u malom okruženju gde su korisnici ograničeni. Razvoj aplikacija

dvotirnog je manji od jedno slojnih.

Dvotirna arhitektura je najbolje u distribuiranom okruženju u kojem rade različite radne

grupe. Ali njegova performansa se smanjuje ako broj korisnika prelazi 100. Ova arhitektura ima

ograničenu fleksibilnost prilikom premeštanja funkcionalnosti programa sa jednog servera na

drugi.[8]

Tri nivoa arhitekture

Osnovano je 1990. godine kako bi se uklonile ograničenja dvosmerne arhitekture u pogledu

skalabilnosti, kompatibilnost, sistemsku administraciju, konfiguraciju i batch poslove. Treći nivo

uveden u trostruku arhitekturu je "srednji sloj servera" koji je postavljen pomoću korisničkog

interfejsa i komponente za upravljanje podacima. Funkcija srednjeg nivoa je upravljanje procesom

za izvršavanje poslovne logike i pravila. On je uklonio ograničenje arhitekture od dva nivoa tako

što je podržavao stotine korisnika istovremeno. Tri-tierna arhitektura je poželjna kada su potrebne

visoke performanse, a korisnik ne znajući za složenost distribuiranog klijent / server okruženja.

Struktura veb aplikacije može se razlikovati u skladu sa potrebama, ali po mogućnosti to je

troslojna aplikacija.[8]

Page 18: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

18

N-tier arhitektura

N-tier arhitektura je razvijena iz arhitekture klijentskog servera. Glavni razlog za njegovu

evoluciju je podeliti aplikaciju na delove (nivoe) koji se održavaju i ovi delovi se stavljaju u stack

jednu na drugu. Na ovaj način svaki nivo je izolovan od drugog. Ažuriranje aplikacije je lako jer

promene moraju biti napravljene u jednom sloju koji nije u celoj aplikaciji. Ukoliko se neke

promene izvrše na nivou, one ne utiču na drugi nivo koji se nalazi iznad ili ispod u stacku.

Standardne objektno orijentirane tehnike se koriste za postavljanje nivoa i povezivanje nivoa

direktno u stack.[8]

Osnovna ideja n-tier arhitekture je omogućiti programu da pozove drugi program ili

aplikaciju za pozivanje druge aplikacije. Drugim rečima, postoji nekoliko delova aplikacije koji

su napravili različiti programeri, ali oni rade zajedno.[8]

2.2.2. MVC arhitektura

MVC (Model – View – Controller) je arhitekturalni patern koji se koristi za razvoj softvera.

Kada reč o programiranju, programeri često žele da razdvoje kod koje se radi sa poslovnom

logikom ili sa korisničkim interfejsom. Za olakšavanje razvoja koda je napravljen MVC

arhitektura. MVC arhitektura se koristi za izolaciju poslovne logike iz korisničkog interfejsa, on

razdvaja aplikaciju u tri glavne komponente: model, pogled i kontroler.

Slika 6: MVC arhitektura [26]

Okvir MVC-a uključuje sledeće komponente:

“ Model - Modelski objekti su delovi aplikacije koji implementiraju logiku za domen

podataka aplikacije. Često model predmeta preuzima i čuva stanje modela u bazi podataka, na

primer, objekat može preuzeti podatke iz baze podataka, raditi na njemu, a zatim upisati ažurirane

informacije natrag u tabelu proizvoda u SQL Server bazi podataka.

View - Pogledi su komponente koje prikazuju korisnički interfejs aplikacije. Tipično, ovaj

korisnički interfejs je kreiran iz podataka o modelu. Primer bi bio prikaz uređaja za tabelu

Page 19: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

19

proizvoda koja prikazuje tekstualna polja, padajuće liste i polja za potvrdu zasnovane na trenutnom

stanju objekta proizvoda.

Controller - Kontroleri su komponente koje obrađuju interakciju korisnika (UI), rade sa

modelom i na kraju izaberu prikaz za prikazivanje prikaza korisničkog interfejsa. U aplikaciji

MVC, prikaz samo prikazuje informacije. Kontroler rukuje i odgovara na korisnički unos i

interakciju, na primer, kontroler obrađuje vrednosti upita string-a i prosleđuje ove vrednosti

modelu, koji zauzvrat mogu koristiti ove vrednosti za upite ka bazi podataka.

MVC patern pomaže omogućava da kreirate aplikacije koje odvajaju različite aspekte

aplikacije (logika ulaza, poslovna logika i UI logika), dok obezbeđuju labavu vezu između ovih

elemenata. Šablon specificira gde svaka vrsta logike treba da se nalazi u aplikaciji. UI logika

pripada pogledu. Ulazna logika pripada kontroleru. Poslovna logika pripada modelu. Ovo

razdvajanje pomaže upravljanju sa kompleksnošću prilikom izgradnje aplikacije, jer omogućava

fokusiranje na jedan aspekt implementacije u isto vreme, na primer, može se fokusirati na prikaz

bez zavisnosti od poslovne logike.

Nepravilna integracija 3 glavne komponente MVC aplikacije impliciraju potrebu za

paralelnim razvojem, na primer, jedan programer može da radi na pogledu, drugi programer može

da radi na kontrolnoj logici, a treći programer može da se fokusira na poslovnu logiku u

modelu.”[10]

MVC arhitektura je pristup koji se može koristiti u okviru različitih tehnologija i nije

fokusirana na primenu u okviru samo jednog programskog jezika. Nekoliko najpopularnijih

frameworka su: Laravel, Zend, Jango.

Kada se koristi MVC patern arhitekture ?

U okviru istraživanja [6] prikazano je da arhitektura MVC šablona daje ideju razdvajanja

aspekata, pomaže nam da provedemo razdvajanje nadležnosti između modela, prikaza i kontrolera

u okviru aplikacija. Razdvajanje briga olakšava nam testiranje naše primene jer je odnos između

različitih komponenti primene jasniji i koherentan. MVC nam pomaže da implementiramo

razvojni pristup zasnovana na testovima, u kojem implementiramo automatizovane testne pre nego

što napišemo kod. Ovi slučajevi testiranja jedinica pomažu nam da unapred definišemo i

potvrdimo zahteve novog koda pre nego što ga upišemo.

Slede smernice za odlučivanje o mogućnosti primene MVC arhitekture na osnovu analize

karakteristika i potreba aplikacije:

➢ Na našoj aplikaciji je potrebna asinhrona komunikacija na boksu.

➢ Naša aplikacija ima funkcionalnost koja rezultira neuspešnim učitavanjem punih stranica

za komentarisanje posta tokom korišćenja Facebooka ili beskonačnog skrolovanja itd.

➢ Manipulacija podataka je uglavnom na strani klijenta (pretraživač), a ne na strani servera.

➢ Isti tip podataka se dostavlja na različite načine na jednoj stranici (navigacija).

➢ Kada naša aplikacija ima mnogo beznačajnih veza koje se koriste za modifikovanje

podataka (dugme, prekidači).

Page 20: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

20

Prednosti MVC arhitekture

➢ Arhitektura MVC nam pomaže da kontrolišemo složenost aplikacije tako što ćemo ga

podeliti u tri komponente, tj. Model, prikaz i kontroler.

➢ MVC ne koristi serverske forme, zato je idealan za one koji žele potpunu kontrolu nad

ponašanjem aplikacija.

➢ Pristup zasnovan na testiranju podržava MVC arhitektura.

➢ MVC koristi šablon prednjeg kontrolera. Šema prednjeg kontrolera rukuje višestrukim

dolaznim zahtevima pomoću jednog interfejsa (kontrolera). Prednji kontroler pruža

centralizovanu kontrolu. Moramo konfigurisati samo jedan kontroler na veb serveru

umesto mnogih.

➢ Prednji kontroler pruža bogatu komunikaciju za rutiranje podrške za dizajniranje naše veb

aplikacije.[6]

2.2.3. Komparacije višeslojne arhitekture i MVC arhitektura

Najrasprostranjenija upotreba višeslojne arhitekture je troslojna arhitektura. Troslojna

arhitektura obično se sastoji od državnog nivoa, logičkog sloja i nivoa prikaza. Višeslojna

arhitektura pruža model pomoću kojeg programeri mogu kreirati skalabilne, fleksibilne i

višekratne aplikacije. Zbog segregacije primene u nivoe, programeri mogu da izmene ili dodaju

određeni sloj, umesto da prerađuju celu aplikaciju. Glavna razlika između sloja i sloja ovde je da

se sloj odnosi na logičko razdvajanje briga dok se nivo odnosi na fizičko razdvajanje briga.[7]

Moduli troslojne arhitekture koji su korisnički interfejs (ekran), poslovna logika (logika) i

računarsko skladištenje podataka (stanje) razvijaju se i održavaju nezavisno, uglavnom na

odvojenim platformama.

Slika 7. 3-tier arhitektura

Page 21: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

21

Ima prednost modularnog softvera sa dobro definisanim interfejsima. Bilo koja od tri nivoa

u troslojnoj arhitekturi može se nadograditi ili zameniti nezavisno sa promenama u zahtevima ili

tehnologijom. Srednji sloj može biti višeslojni za koji se ovaj arhitektonski šablon naziva

višeslojna arhitektura ili n-tier arhitektura. Protoka podataka između nivoa je deo arhitekture.

Middleware obično povezuje dva nivoa.[7]

Model Viev Controller sadrži tri komponente - View, Model i Controller.

• View je korisnički interfejs. Kao rezultat dobija podatke dobijene od kontrolera.

• Model je poslovni subjekt / podaci. Ona definiše poslovna pravila za podatke kako se

podaci mogu manipulisati ili menjati.

• Controler sadrži logiku koja vrši promene u modelu u zavisnosti od akcija koje pokreće

UI. Manipuliše podatke.

Nedostatak MVC-a je da je teško testirati jedinicu.

Kontroler ne zna ništa o pogledu, može da promeni kontrolere. Jedan kontroler može da

koristi višestruki pogled. Pregledajte prave promene učinjene na modelu, tako da su oba u

sinhronizaciji u odnosu na podatke.

Slika 8. Model View Controller.

Višeslojne arhitekture i MVC arhitekture koriste se za korisnički interaktivni dizajn

sistema. Sledeća tabela će detaljno prikazati poređenje između svakog arhitektonskog uzorka.[7]

Page 22: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

22

Slika 9. Komparacije višeslojne i MVC arhitekture

Višeslojna arhitektura obično ima svaki sloj odvojen od strane mreže. Sloj prezentacije se

nalazi na nekim veb serverima, a zatim se govori o serverima za podršku aplikacijama preko mreže

za poslovnu logiku, a zatim se pregovara sa serverom baze podataka, ponovo preko mreže, a možda

i server za aplikacije takođe poziva neke od udaljenih servisa (recimo Authorize.net za obradu

plaćanja).

MVC je šablon programskog dizajna gde su različiti delovi koda odgovorni za

predstavljanje modela, prikaza i kontrolera u nekoj aplikaciji. Ove dve stvari su povezane jer, na

primer, sloj Model može imati unutrašnju implementaciju koja poziva bazu podataka za čuvanje i

preuzimanje podataka. Kontroler može boraviti na veb serveru i daljinski pozvati programe

aplikacija za preuzimanje podataka. MVC izvlači detalje o načinu implementacije arhitekture

aplikacije. Višeslojna arhitektura se upravo odnosi na fizičku strukturu implementacije. Ove dve

su ponekad zbunjene jer se MVC dizajn često implementira pomoću Višeslojne arhitekture.[7]

Page 23: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

23

3. Stručno istraživanje

3.1. Komparativna analiza karakteristika MVC u raznim verzijama u

okviru .NET tehnologije

ASP.NET MVC je Microsoftov razvojni okvir koji kombinuje efikasnost i urednost

modelerske-pogled-kontrolera (MVC) arhitekture, najsavremenije ideje i tehnike iz agilnog

razvoja i najbolje delove postojećeg ASP-a .NET platforma.[4]

Slika 10: Istorija raznih verija .net- a i MVC-a [30]

MVC 1.0 je objavljen u 2009. godini. ASP.NET MVC framework izgrađen na ASP.NET

3.5, to znači da korisnici mogu iskoristiti mnoge postojeće ASP.NET 3.5 funkcije, kao što su

lokalizacija, autorizacija itd. Korisnici mogu iskoristiti MVC dizajn šeme za kreiranje Veb

aplikacije koji uključuju sposobnost da postignu i održavaju jasno razdvajanje zabrinutosti (pogled

iz logike poslovanja i aplikacije i pozadinskih podataka), kao i olakšavanje razvojnog testa.

Karakteristika ovog izdavanja programa:

• MVC arhitektura sa webform mehanizmom (MVC architecture with webform engine).

• Rutiranje (Routing).

• HTML asistent (HTML Helpers).

Page 24: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

24

• Ajax asistent (Ajax Helpers).

• Automatsko spajanje (Auto binding).

MVC 2.0 je objavljen u 2010 godini. ASP.NET MVC framework izgrađen na ASP.NET

4.0, u ovoj verziji povećana je produktivnost prilikom pisanja ASP.NET MVC aplikacija, na

primer, Add View dialog box koristi prednosti prilagođenih šablona za generisanje koda da

generiše prikaz baziran na modelu objekta. Karakteristika ovog izdanja programa:

• Oblast (Area).

• Asinhroni kontroler (Asynchronous controller).

• Html pomocni metod sa lambda izrazom (Html helper methods with lambda

expression).

• Atributi anotacije podataka (DataAnnotations attributes).

• Validacija sa klijnetske strane (Client side validation).

• Prilagodeni šabloni (Custom template).

• Skafolding (Scaffolding).

MVC 3.0 je objavljen u 2011 godini. ASP.NET MVC framework izgrađen na ASP.NET

4.0. “ Glavna karakteristika u MVC verziji 3 je predstavljanje Razor View Engine-a. Prethodne

verzije MVC se oslanja na standardni ASP.NET mehanizam za prikazivanje, što zavisi od blokova

ASP.NET <% and %>. Razor View zamenjuje tradicionalne blokove pomoću @ karaktera. Takođe

ima fleksibilnije funkcije i omogućava bolje testiranje jedinica.“[2] Karakteristika ovog izdanja

programa:

• Nenametljiva javascript validacija (Unobtrusive javascript validation).

• Razor mehanizam prikaza (Razor view engine).

• Globalni filteri (Global filters).

• Daljinska validacija (Remote validation).

• Rešenje zavisnosti za IoC(Dependency resolver for IoC).

• ViewBag.

MVC 4.0 je objavljen u 2012 godini. ASP.NET MVC framework izgrađen na ASP.NET

4.5. “Verzija 4 MVC okvira pruža niz poboljšanja u odnosu na verziju 3. Postoje neke značajne

nove funkcije kao što su podrška za Web API aplikacije, podrška za mobilne uređaje i neke korisne

tehnike optimizacije za slanje sadržaja klijentu. Osim toga, postoji puno malih poboljšanja, kao

što je pojednostavljena sintaksa za Razorove prikaze, što je bolje organizovan sistem za pružanje

osnovnih informacija o konfiguraciji u MVC aplikacijama i neke nove šablonske opcije za Visual

Studio MVC projekte.“[3] Karakteristika ovog izdanja programa:

• Mobilni projektni šablon (Mobile project template).

• Povezivanje i minifikacija (Bundling and minification).

• Podrška za Windows Azure SDK.

MVC 5.0 je objavljen u 2013 godini. ASP.NET MVC framework izgrađen na ASP.NET

4.5. “Poboljšana je i ASP.NET verzija 4.5.1, na kojoj je izgrađen MVC Framevork 5. Najvažnija

Page 25: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

25

promena je dodavanje API-ja identiteta ASP.NET, koji zamenjuje sistem članstva za upravljanje

korisničkim povereništvima.“[4] Karakteristika ovog izdanja programa je:

• Filteri za autentifikaciju (Authentication filters).

• Bootstrap podrška.

• Nove stavke za skafoldinga (New scaffolding items).

• ASP.NET Identitet.

MVC 5.2 je objavljen u 2014 godini. ASP.NET MVC framework izgrađen na ASP.NET

4.5. U ovom verziji programa je proširen routing atributa. Karakteristika ovog izdanja programa

je:

• Rutiranje bazirano na atributima (Attribute based routing).

• Ispravke grešaka i ažuriranje manjih funkcija.

3.2. MVC u .NET-u

Postoje dve podržane implementacije za izgradnju server-side aplikacija za .NET: .NET

Framework i .NET Core. Obojica dele mnoge iste komponente i možete podeliti kod preko dva.

Međutim, postoje dve fundamentalne razlike između njih i vaš izbor zavisi od onoga što želite da

postignete. Ovaj članak daje upite o tome kada da ih koriste.

Koristite .NET Core za poslužiteljsku aplikaciju kada:

• Cross-platformne.

• Vi ciljate mikro servise.

• Docker kontejnere.

• Potrebni su sistemi visokih performansi i skalabilnih sistema.

• Potrebne su različite verzije .NET po aplikaciji.

Koristite .NET Framework za poslužiteljsku aplikaciju kada:

• Aplikacija trenutno koristi .NET Framework (preporuka je da se proširi umesto da se

migrira).

• Vaša aplikacija koristi biblioteke .NET-a nezavisnih proizvođača ili NuGet pakete koji nisu

dostupni za .NET Core.

• Aplikacija koristi .NET tehnologije koje nisu dostupne za .NET Core.

• Aplikacija koristi platformu koja ne podržava .NET Core.[20]

Page 26: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

26

3.2.1. .NET Framework

.NET Framework je srce Microsoft .NET. .NET Framework je platforma za razvoj softvera

Microsoft .NET. Kao i svaka platforma, ona pruža vreme rada, definiše funkcionalnost u nekim

bibliotekama i podržava skup programskih jezika. .NET Framework pruža neophodne

kompajlirane vremenske i radne vremenske osnove za izgradnju i pokretanje aplikacija zasnovanih

na .NET.

.NET Framework se sastoji od:

• Zajednički jezik Runtime.

• Klasične biblioteke.

• Podrška za višestruki programskih jezik.

Uobičajeni radni jezik (CLR) (takođe se naziva i runtime). Zajednički jezik.

Runtime (CLR) obrađuje usluge izvršavanja, uključujući integraciju jezika, sigurnost i

upravljanje memorijom. Tokom razvoja, runtime (CLR) pruža funkcije koje su potrebne za

pojednostavljenje razvoja.[22]

Glavne karakteristike dizajna su:

• Interoperabilnost: Ovo omogućava programima razvijenim od strane NET-a da pristupe

funkcionalnostima u programima razvijenim izvan .NET.

• Zajednički Runtime Engine: Zajedno poznat kao runtime u zajedničkom jeziku,

omogućava programima razvijenim u .NET da pokazuju zajednička ponašanja u korišćenju

memorije, rukovanju izuzetkom i sigurnosti.

• Nezavisnost jezika: Specifikacije jezičke infrastrukture (CLI) omogućavaju razmenu

tipova podataka između dva programa razvijena na različitim jezicima.

• Baza baznih klasa: Biblioteka koda za najčešće funkcije - koristi se od programera da bi se

izbeglo ponavljanje prepisivanja koda.

• Jednostavnost upotrebe: postoje alati za osiguranje jednostavnosti instaliranja programa

bez ometanja prethodno instaliranih aplikacija.

• Sigurnost: Programi razvijeni u .NET su bazirani na zajedničkom sigurnosnom

modelu.[21]

3.2.2. .NET Core

.NET Core je otvorena izvorna modularna platforma za kreiranje aplikacija i usluga koje

se pokreću na Windows, Linux i Mac. Podržava više jezika, kao što su C #, VB, F # i savremena

rešenja, kao što su generički, LINQ (Language Integrated Query), async razvoj i još mnogo toga.

ASP.NET Core je odličan redizajn klasičnog ASP.NET-a. To je open source i cross-

platform okvir za izgradnju internet povezanih aplikacija (web, cloud, IoT, mobile backend itd.).

Page 27: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

27

Može da radi na .NET Core ili u potpunosti .NET Framework. Takođe je modularan tako da uvodi

minimalne troškove, jer možete uzeti samo komponente koje stvarno trebaju.

Milioni razvijača su koristili (i nastavili da koriste) ASP.NET 4.k za kreiranje veb

aplikacija. ASP.NET Core je redizajn ASP.NET 4.k, sa arhitektonskim promenama koje

rezultiraju lakšim, modularnim okvirom.

ASP.NET Core pruža sledeće prednosti:

• Jedinstvena priča za izgradnju veb UI i veb API-ja.

• Arhitektura za testabilnost.

• Razor Pages omogućavaju lakše i produktivnije scenarije fokusirane na kodiranje.

• Mogućnost razvoja i pokretanja na Windows, MacOS i Linux.

• Open-source i fokusirani na zajednicu.

• Integracija savremenih okvira na klijentskoj strani i razvojnih tokova posla.

• Sistem za konfiguraciju zasnovana na oblaku.

• Ugrađena injekcija zavisnosti.

• Laka, visoko performansa i modularna HTTP zahteva.

• Mogućnost hostovanja na IIS-u, Nginx-u, Apache-u, Dockeru ili samo-domaćinu u

sopstvenom procesu.

• Izgradnja različitih aplikacija kada ciljate .NET Core.

• Alat koji pojednostavljuje savremeni veb razvoj.

ASP.NET Core MVC je okvir za veb aplikacije zasnovana na ASP.NET Core, koji

implementira šablon model-viev-controller. MVC je sastav trećih logičkih slojeva:

• Model - poslovni sloj.

• View - sloj prikaza / prezentacije.

• Conntroller - kontrola ulaza.

Model predstavlja stanje aplikacije. Kontroler obrađuje interakcije i modifikuje model.

Kontroler takođe prenosi informacije u pogled. Pogled preuzima neophodne informacije i

predstavlja ga korisniku - daje interfejs.

ASP.NET Core je veoma fleksibilna platforma koja prati savremene obrasce, poput

injekcije zavisnosti.[21]

3.3. MVC u Javi

„Java je programskih jezik koji se koristi za izradu i razvoj velikog broja aplikacionih

softvera i njegovu implementaciju u najrazličitija multiplatformska okruženja. Java programiranje

je jedno od najzastupljenijih danas, posebno imajući u vidu veliku primenu u izradi aplikacija za

mobilne telefone i tablet uređaje kroz Android operativni sistem. Java platforme imaju široku

upotrebu u programiranju i primenjenim softverskim rešenjima, koje se kreću od najjednostavnijih

Page 28: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

28

digitalnih uređaja, mp3 plejera, mobilnih telefona, pa sve do kompleksnih web servera i

korporativnih aplikacija.“[24]

“Java web aplikacioni okviri zasnovani na Model-View-Control (MVC) uzoru

projektovanja, poslednjih godina značajno utiču na standardizaciju aplikacione strukture i

smanjuju vreme i napor potreban za razvoj web orjentisanih informacionih sistema. Međutim, u

poslednjih nekoliko godina, zbog pojave velikog broja Java Web okvira sa različitim konceptom

strukture koje sa sobom nose određene dobre osobine i nedostatke, bitno je otežan izbor okvira za

izradu Java Web aplikacija.“[16]

3.3.1. Spring MVC

“Spring je moderan okvir za razvoj aplikacija u Javi. Njegova glavna svrha je

pojednostaviti razvoj kroz mnoge module koje Spring donosi integraciju sa različitim

tehnologijama. Spring jezgro - "bean container" - služi za povezivanje različitih aplikativnih

objekata, koji nude različite načine opisivanja konfiguracije, od kojih su najznačajnije XML

datoteke. Osim toga, Spring to radi na neinovativan način, što znači da aplikacijski objekti nisu

„svesni“ da njihov životni ciklus upravlja Spring te zbog toga mogu postojati i samostalno.”[12]

Rod Johnson je stvorio Spring framework za razvoj J2EE web aplikacije. Prva verzija

Spring frameworka objavljena je tokom 2004. Godine, a poslednja verzija 2.5 je realizovana

krajem 2007. godine.

Spring Web MVC je izvorni veb okvir izgrađen na Servlet API-u i od samog početka je

uključen u Spring Framework. Spring je poznat programerima kao dobro razvijen ekosistem. Ima

brojne dodatke, kao što su SOAP usluge, REST API-i i sigurnosna autentikacija. Jedan od

najbitnijih karakteristika ovog frameworka je što se prilikom projektovanja aplikacije koriste samo

oni moduli koji su potrebni u specifičnim slučajevima korišćenja, a ne celokupni okvir.

„Arhitektura Spring web MVC okvira zasniva se JSP Model 2 arhitekturi, tj. podrazumeva

postojanje kontroler servleta, kao centralne ulazne tačke za sve dolazeće zahteve. Ova komponenta

u Spring MVC okviru realizovana je preko klase DispatcherServlet. Sloj poslovne logike aplikacije

realizovan je preko kontroler komponente. U prezentacionom delu, Spring MVC podržava različite

tehnologije prikaza. Kao najznačajnija karakteristika prezentacionog sloja ističe se mogućnost

ostvarenja potpune nezavisnosti između poslovne logike i konkretne prezentacione

tehnologije.”[16]

3.3.2. Strust

Struts framework pomaže u razvoju veb aplikacija. Struts java framework je jedan od

najpopularnijih okvira za veb bazirane aplikacije. Java servlet, JavaBeans, ResourceBundles i

XML itd su Jakarta commons paketi koji se koriste za ostvarivanje ove svrhe. Ovo je

implementacija MVC obrazaca sa otvorenim izvorima za razvoj veb aplikacije. Karakteristike ove

vrste okvira su:

• Veća robusna ili pouzdana arhitektura.

Page 29: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

29

• Pomaže u razvoju primene bilo koje veličine.

• Lako je dizajnirati.

• Skalabilno.

• Pouzdana web aplikacija sa Javom.

“Struts okvir je prvobitno razvijen od strane Craig R. McClanahan. On je donirao ovaj

okvir Apache fondaciji u maju 2000. godine, a Apache Software Fondacija je kompletno

realizovala Struts okvir u periodu od 2001. do 2002. godine. Apache Struts Project, danas nudi dve

glavne verzije Struts okvira. Struts 1 okvir je poznat kao jedan od najpopularnijih Java web

aplikacionih okvira. Ovaj okvir ima veliki broj dostupnih dokumenata, široko je podržan od strane

Java zajednice i predstavlja najbolji izbor za razvojne timove koji cene dokazana rešenja za

uobičajene probleme. Struts 2 okvir je nastao kao rezultat nezavisnog rada zajednice WebWork2

okvira i Struts 1 okvira. Struts 2 okvir predstavlja izbor za razvojne timove koji rešavaju teže

probleme. Danas je Struts postao standard za izgradnju web aplikacija u Java programskom jeziku

i prihvaćen je širom Java zajednice. Najvažniji razlog za njegovu popularnost je jednostavnost

arhitekture i njegova uska integracija sa J2EE platformom.” [16]

3.4. MVC u PHP-u

PHP je široko korišćeni open source skripting jezik za generalnu upotrebu. Prvi put se

pojavio kao alat pod nazivom ,,Personal Home Page tools’’, i on je pomagao korisnicima oko

rešavanja problema vezanim za održavanje i kreiranje veb stranica. Vremenom se pokazao kao

veoma dobar i koristan, a ubrzo je postao potpun jezik kao što je danas menjajući naziv u PHP –

Hypertext Preprocessor.

PHP je serverski jezik, što znači da se sve skripte izvršavaju na web serveru kao i da se

vraćaju rezultati skripte korisniku putem HTTP protokola. Za razliku od PHP-a, JavaScript je

client-side skriptni jezik što bi značilo da se njegov kod izvršava samo na klijentskom računaru u

njegovom web browseru. Isto kao i PHP, JavaScript doprinosi dinamičkom aspektu web stranice,

na primer kada se vrše preuzimanja rezultata sa određenog izvora podataka, javlja se razlika

između server-side skripti i client-side skripti. Činjenica je da ukoliko se koristi PHP/server-side

način preuzimanja podataka, navedeni podaci se preuzimaju dok se skripta izvršava na serveru,

oni se obrađuju i nakon obrade vraćaju samo oni koji podaci koji zadovoljavaju određene

kriterijume (uslove). Kod client-side načina, pošto se kod izvršava na klijentskom računaru (kao

što je napomenuto), korisnici sa malim predznanjem ovog jezika sa određenim alatima imaju

mogućnost izmene JavaScript koda unutar pristigle HTML stranice i na taj način mogu narušiti

sigurnost same aplikacije ili steći uvid u njeno interno funkcionisanje koje može dovesti do raznih

zloupotreba.

Postoji nekoliko popularnih PHP razvojnih okruženja, na primer: Symfony, Laravel,

CakePHP, koji prate Model View Controller (MVC), koji razdvaja poslovnu logiku iz korisničkog

interfejsa, čineći kod čist i proširiv. PHP je odličan jezik za razvoj web-a i pruža veliki broj alata

i biblioteka. PHP razvojna okruženja dolaze sa određenim bibliotekama, one pomažu za kreiranje:

Page 30: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

30

• Validacija formulara (Form Validation).

• SOAP/REST API.

• Mehanizam keširanja (Caching Mechanism).

• Ulazno / izlazno filtriranje (Input/Output Filtering).

• Rukovanje podacima s JSON-om (Data Handle With JSON).

• Apstrakcija baze podataka (Database Abstraction).

• Sesija i rukovanje kolaèiæima (Session and Cookie Handling).

3.4.1. Laravel

Prema istraživanju SitePoint-a se može videti da je Laravel najpopularnije php razvojno

okruženje.[31]

Tailor Otvell je stvorio Laravel kao pokušaj da obezbedi napredniju alternativu za

CodeIgniter, koji nije pružio određene funkcije kao što je ugrađena podrška za autentikaciju

korisnika i autorizaciju. Prva verzija Laravela je objavljena 9. juna 2011. godine, ovo je bila beta

verzija Laravel-a, kasnije istog meseca su objavili Laravel 1. Poslednja verzija Laravela 5.7 je

objavljena 4. Septembra 2018.

Laravel je besplatno PHP razvojno okruženje otvorenog koda (open source) za kreiranje

web aplikacije korišćenim MVC obrasca i zasnovana na Symony-u. Karakteristika Laravela su

modularni sistemi za pakovanje sa namenskim menadžerom zavisnosti, različiti načini pristupa

relacijskim bazama podataka, uslužnim programima koji pomažu u primeni.

Aplikacije Laravela prate tradicionalni šablon Model-View-Controller, gde se koriste:

• Controller – koristi se za rukovanje korisničkim zahtevima i za preuzimanje

podataka, koristeći modele.

• Model – koristi se za interakciju sa bazom podataka i preuzimanje podataka o

objektima.

• View - koristi se za prikazivanje stranica.

3.4.2. Symfony

Symfony je PHP razvojno okruženje otvorenog koda (open source) za web aplikacije. Prva

verzija Symfony-a (Symfony 1.0) je objavljena juna 2007. godine a poslednja verzija (Symfony

4.1) je objavljena u maju 2018. godine.

Symfony je skup više komponenti PHP-a koji omogućavaju programeru da kreira

skalabilne aplikacije visokih performansi. Sa 30 komponenti iz koje se može izabrati, programer

ima potpunu slobodu da eksperimentiše i radi u RAD okruženju. Simfony API takođe omogućava

jednostavnu integraciju sa aplikacijama nezavisnih proizvođača i mogu se koristiti sa popularnim

okvirima front-end, kao što je AngularJS.

Page 31: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

31

U Symfony-u ima mogućnost da se koristi MVC arhitekture, ali više se koristi kao HTTP

framework, Symfony je Request/Response razvojno okruženje.

3.5. SOA arhitektura

“Servisno orijentisana arhitektura se može definisati kao IT arhitektura koja podržava

transformaciju poslovnog okruženja u skup međusobno labavo povezanih servisa koji između sebe

komuniciraju tako što razmenjuju poruke ili koordiniraju neku aktivnost i time obezbeđuju

zaokružen tok poslovnih procesa koje podržavaju. U osnovi, priča o SOA je optimalno i efikasno

usaglašavanje poslovanja i informatičkih tehnologija koje ga podržavaju.

IT infrastruktura u velikoj meri podržava poslovne procese kompanija, ali cilj je da ona

bude fleksibilna u tolikoj meri da relativno lako podrži transformaciju poslovnih procesa u skup

povezanih servisa odnosno ponovljivih poslovnih funkcija kojima se može pristupiti ukoliko je

potrebno i kroz mrežu. Servisno orijentisana arhitektura pravi aplikacije pomoću gotovih

softverskih servisa čije su funkcionalnosti potpuno nezavisne jedne od drugih i u kojima se ne

nalaze ugrađeni pozivi za povezivanje.“[15]

Do sad ne postoji standarda ili zvanična definicija za SOA. IBM definisao kao “Služba

orijentirana arhitektura (SOA) je poslovni pristup IT-arhitekturi koji podržava integraciju vašeg

poslovanja kao povezanih, ponovljivih poslovnih zadataka ili usluga.“[13]

3.5.1. Web servisi SOAP i Restful

Veb servisi, u veoma širokom smislu, predstavljaju metode komunikacije između dve

aplikacije ili elektronskih uređaja preko World Wide Web (WWW). Postoje dve vrste veb servera:

Simple Object Access Protocol (SOAP) i Representational State Transfer (REST).

SOAP definiše standardni komunikacijski protokol (skup pravila) za XML razmenu

poruka. SOAP koristi različite transportne protokole, kao što su HTTP i SMTP. Standardni HTTP

protokol olakšava SOAP modelu da tunel kroz zaštitne zidove i proksije bez ikakvih modifikacija

SOAP protokola. SOAP ponekad može biti sporiji od tehnologija srednjeg softvera kao što je

CORBA ili ICE zbog njegovog verbalnog XML formata.[14]

REST opisuje skup arhitektonskih principa pomoću kojih se podaci mogu preneti preko

standardizovanog interfejsa (kao što je HTTP). REST ne sadrži dodatni sloj razmene poruka i

fokusira se na pravila dizajna za kreiranje usluga bez državljanstva. Klijent može pristupiti resursu

koristeći jedinstveni URI i vraćanje reprezentacije resursa. Sa svakom novom predstavom resursa,

klijentu se kaže da prenosi stanje. Dok pristupa RESTful resursima sa HTTP protokolom, URL

resurs služi kao identifikator resursa, a GET, PUT, DELETE, POST i HEAD su standardne HTTP

operacije koje se obavljaju na tom resursu.[14]

Glavna prednost Veb servisa je da njegovi potrošači mogu koristiti uslugu bez znanja o

detaljima njegove implementacije, kao što su hardverska platforma, programskih jezik, objektni

Page 32: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

32

model i sl. Veb server pruža slobodni spoj između heterogenih sistema uz pomoć XML poruka,

obezbedi interoperabilnost.

Veb serveri su dizajnirani da obezbede infrastrukturu za razmenu poruka neophodnih za

komunikaciju na različitim platformama koristeći industrijske standarde. Veb servisi takođe

koriste asinhronu komunikaciju kako bi rešili problem latencije koji se javlja zbog zahteva

udaljenih lokacija na Internetu. Ovo omogućava izvršavanje pozadinskih zadataka za klijenta (kao

što je reagovanje na interakcije korisnika) sve do stvarnog završetka zahteva za Veb uslugom.

➢ .NET

ASP.NET pruža okvir koji se može lako koristiti za izgradnju Veb servisa fokusiranjem na

logiku aplikacije, a ne na hardveru koji je potreban za pisanje infrastrukturnog koda za

komunikacijski protokol ili za transport poruka. Veb usluge kreirane u ASP.NET-u mogu da

koriste funkcije iz .NET okvira kao što su keširanje, autentikacija i upravljanje državom. Veb

servis koristi ekstenziju ".asmx" pomoću @Veb servisne direktive (na vrhu fajla) prema ASP.NET

modelu primene. Može biti samostalna aplikacija ili pod komponenta veće Veb aplikacije. Veb

servis u kontekstu .NET je komponenta koja se nalazi na Veb serveru i pruža informacije i usluge

drugim mrežnim aplikacijama koristeći standardne Veb protokole kao što su HTTP i Simple

Object Access Protocol (SOAP).

.NET Veb servisi pružaju asinhronu komunikaciju za XML aplikacije koje rade preko

okvira komunikacije .NET. Postoje tako da korisnici na Internetu mogu da koriste aplikacije koje

ne zavise od njihovog lokalnog operativnog sistema ili hardvera i uglavnom se zasnivaju na

pretraživačima.

➢ Java

Veb servisi su nezavisni od platforme. To znači da se veb servis može razviti na velikom

broju jezika koji se pokreću na mnogim platformama. platforma Java i Java2 Enterprise Edition

(j2EE) pružaju funkcije od izgradnje i primene Veb usluga. Prednosti jezika Java i J2EE platforme

su nezavisnost proizvođača i potrošnja aplikacija. Aplikacije koje su izgrađene na J2EE platformi

mogu biti primenjene na implementaciji J2EE od velikog broja proizvođača. Korišćenje Java-a za

razvoj Veb servisa omogućava da prednost nezavisnosti proizvođača pored nezavisne platforme i

nezavisnosti veb usluga. Java ima podršku za Veb usluge preko paketa Java Veb Services

Developer Pack (JVSDP). JESDP sadrži biblioteke za generisanje XML-a i SOAP-a, obradu

XML-a, pristup registrima usluga i pozivajući RPC-bazne Veb usluge. [5]

➢ PHP

PHP je poznat kao programskih jezik u Veb 2.0 eri koji omogućuje razvoj agilnog softvera

na serveru. Postoji mnogo okvira i alata u PHP-u koji mogu pomoći korisnicima da grade RESTful

aplikacije. Postoji nekoliko PHP frejmworka koji nam pomažu u kreiranju RESTful aplikacije, na

primer: Tonic, Konstrukt, Zend Framework.

Page 33: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

33

Tonic je open-source RESTFul za razvoj veb aplikacija PHP biblioteka. Dizajniran je tako

da korisnik može napraviti RESTFul aplikacije na pravi način. Koncept resursa se daje značajno,

a biblioteka daje programeru slobodu da kreira aplikaciju.

Konstrukt je RESTFul okvir kontrolera za PHP5. Kontroleri su resursi i mapiranje URI-do-

kontrolera daje aplikaciji logičku strukturu. Okvir otkriva HTTP metode programeru i omogućava

programeru da prilagodi aplikaciju onako kako on želi.

Page 34: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

34

4. Rezultati naučno-stručnih istraživanja

U ovom delu smo fokusirali na programskih jezik C#, PHP i Java. Istraživanje je podeljeno

na:

4.1. Popularnost programskih jezika

U ovom delu ćemo pogledati najpopularnije programske jezike u 2018 godini. Za to ćemo

ispitivati tri popularna veb sajta, a to su :

• Tiobe Programming Index.

• Indeed.com.

• GitHub.

Tiobe Programming Index

Decenijama, Tiobe (kompanija za kvalitet softvera) generisala je indeks najpopularnijih

programskih jezika. Oni ažuriraju ovu listu mesečno, izvlačući podatke iz stotina izvora širom

sveta. [17]

Slika 11. Najbolji programskih jezici[17]

Gornji grafikon pokazuje 20 najpopularnijih programskih jezika od decembra 2017. Svi

jezici zajedno ukupno 100%. Tiobe faktori u varijablama kao što je broj profesionalnih programera

širom sveta, kursevi obuke i proizvođači trećih strana. Većina ovih informacija dolazi od analize

Page 35: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

35

rezultata pretraživača. U ovom istraživanju možemo videti da je najpopularniji programskih jezik

Java sa njegovom 13,27%. Programski jezik C# na petom mestu sa 2,82% , programskih jezik

PHP na devetom sa 1,59%.[17]

Indeed.com

Kao najveći svetski pretraživač za posao, zapravo predstavlja dobro merenje najzahtevnijih

programskih poslova.[17]

Slika 12. Najtraženiji jezici[17]

Ovaj grafikon prikazuje najtraženije poslove po Indeed.com-u. U ovom istraživanju je

preuzeto 50 najpopularnijih jezika iz indeksa Tiobe i tražili "(" Jezik ") Developer". Ima smisla da

su najpopularniji jezici najviše otvoreni za rad. U ovom istraživanju možemo videti da su

najtraženiji Java programeri, na treću mestu su C# programeri a na sedmom mestu su PHP

programeri.[17]

GitHub

GitHub je jedno od najvećih korpusa kodova koji se danas koriste. Svake godine kreiraju

izveštaj o pregledu godine, deleći statistiku o svojoj programerskoj zajednici.[17]

Page 36: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

36

.

Slika 13. Najtraženiji zahtev [15]

Github Godina u pregledu nam daje najviše 15 zahteva za povlačenje iz svoje zajednice.

Zahtevi za povlačenjem su indikator količine koda koji se piše. U ovom istraživanju Java je na

trećom mestu nakon toga PHP je na petom mestu i C# na osmom mestu.[17]

U odnosu na istraživanje Java je najpopularniji programskih jezik, nakon toga je C# i PHP.

4.2. Statistika korišćenja Veb servisa

REST API se u velikoj meri smatra standardnim protokolom za veb API-je. Dok drugi

protokoli koji se koriste za Veb API su manje popularni od REST API-ja. SOAP i JavaScript su

manje popularni od REST-a. REST API raste brzo od 2006. Razvijači se oslanjaju na ovaj API jer

je lako razumeti od ostalih. Stopa rasta i korišćenja REST API je veća od ostalih. Postoje razni

grafikoni dostupni na različitim lokalitetima šteti stopu rasta odmora API od 2006. do 2011. godine

je veća nego bilo koji drugi API.[19]

Sa šanse da je jedna stvar povećala širok odgovor; to su standardi RESTful. Oni su u

početku predstavili Roi Fielding u poglavlju 5 njegovog rada o mrežnim softverskim

arhitekturama. Jedan od razloga za popularnost REST API je razumljiv i lak za programere da

kodiraju na njemu. Razvijanje REST API-a je lakše od ostatka kada je vaš stvarni fokus na

podacima.[19]

Clai Loveless, bivši CTO Masheri-a, održao je prezentaciju "Lekcije od neuspeha SOAP-

a" na Glue Con 2011, deljenje nekih statističkih podataka sa programabilnog Veba, indeksiraoca

API izvora, pokazujući da je SOAP rastao tokom godina, ali ima manji udeo od REST-a, koji je

imao konzistentan rast. [18]

Page 37: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

37

Slika 14.Osnovu direktorijuma od 3.200 veb API-a navedenih u programu ProgrammabledWeb, May 2011[18]

4.3. Najbolji alati za testiranje API

“API testiranje (Testiranje interfejsa aplikativnog programiranja) je tip testiranja softvera

koji se fokusira na određivanje da li razvijeni API-ovi ispunjavaju očekivanja u pogledu

funkcionalnosti, pouzdanosti, performansi i sigurnosti aplikacije.

Interesovanje za testiranje API / Veb servisa stalno raste u poslednjih nekoliko godina,

prema Google Trendovima. Istraživanje kompanije Smartbear preko 5.000 profesionalaca iz 2017.

godine pokazalo je da će se u naredne dve godine očekivati povećanje broja API testera koji

automatizuju više od 50% svojih testova za 30% (sa 59% na 77%). Pored toga, 80% ispitanika je

izjavilo da su odgovorne za neke API testove.

Page 38: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

38

Slika 15. Pet najbolje alati za testiranje API

1. SoapUI

SoapUI je funkcionalno testiranje alata namenjeno API testiranju, omogućavajući

korisnicima da jednostavno testiraju REST i SOAP API i Veb usluge. Slobodni paket: Koristeći

besplatni paket SOAP UI, korisnici mogu dobiti kompletan izvorni kod i napraviti svoje željene

funkcije. Kreirajte test brzo i jednostavno pomoću povlačenja i ispuštanja, Point-and-click.

Ponovna upotreba skripte: testovi opterećenja i skeniranja bezbednosti mogu se ponovo koristiti

za funkcionalne testove u nekoliko koraka.

2. Katalon

Katalon Studio je besplatan alat za automatizaciju testova za API, Veb i Mobilne aplikacije.

Ona se pojavljuje kao vodeće sredstvo za testiranje API / Veb servisa i pozicionira se kao

sveobuhvatno rešenje za automatizaciju od kraja do kraja kako za programera tako i za testere.

Katalon Studio podržava SOAP i REST zahteve sa različitim vrstama komandi i funkcijama

parametriranja. Štaviše, mogućnost kombinovanja UI i API / Veb usluga za više okruženja

(Windows, Mac OS i Linux) se smatra jedinstvenom prednosti Katalon Studioa među top API

alatima.

3. Postman

Pošto je prvobitno Chrome plugin, Postman sada proširuje svoje rešenje sa izvornom

verzijom za Mac i Windows. Poštar je dobar izbor za API testiranje za one koji ne žele da se bave

kodiranjem u integrisanom razvojnom okruženju koristeći isti jezik kao i programeri.

4. Tricnetis Tosca

Tricentis Tosca je neprekidna platforma za testiranje za Agile i DevOps.

Page 39: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

39

5. Apigee

Apigee je alat za testiranje API-a za unakrsni oblak, omogućavajući korisnicima da mere i

testiraju performanse API-ja, podržavaju i grade API pomoću drugih urednika poput Svagger-

a.“[23]

Page 40: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

40

5. Implementirano rešenje

5.1. Opis poslovnog konteksta

Primer poslovnog procesa koji je izabran za ilustrovanje primerima implementacije

kompanija koja pruža usluge strimovanja multimedijalnog sadržaja preko interneta.

Studio ima mogućnost da dodaje nove filmove. Korisnik ima mogućnost da pregleda sve

dostupne filmove iz baze. I nakon plaćanja ima mogućnost da pogleda odabrani film. Nakon toga

korisnik ima mogućnost da da povratne informacije i utiske o filmu, ove podatke veb sajt prikaže

na veb stranici da bi ostali korisnici imali mogućnost da pročitaju utisak pre naručivanja filma i

slanja nazad utiska za studio.

5.2. Cilj i opis korišćenih tehnologija

Tehnologije koje su korištene u realizaciji primera su: Visual Studio 2017, Entity

framework.

5.2.1. Microsoft Visual Studio 2017

“Microsoft Visual Studio je programska sredina stvorena za izradu kompjuterskih

programa za Microsoft Windows. Takođe se koristi i za izradu web sajtova kao i web i mobilnih

aplikacija. Visual studio koristi platforme kao što su: Windows API, Windows Forms, Windows

Presentation Foundation, Windows Store i Microsoft Silverlight.

Visual Studio sadrži kod editor sa integrisanim debugger-om. Druge alatke su kod

profajler, forms designer za izradu aplikacija, web designer aplikacije i druge alatke. Pored alatki

i osnovnih funkcionalnosti, moguće je instalirati i plugin-ove za poboljšavanje funkcionalnosti.

Visual Studio podržava 36 različitih programskih jezika i dozvoljava kod editoru i

debugger-u da ih menjaju. Ugrađeni programskih jezici su C, C++ i C++/CLI (via Visual C++),

VB.NET (via Visual Basic .NET), C# (via Visual C#), F# i TypeScript. Drugi jezici kao što su

Python, Ruby, Node.js i M je moguće dodati. Podržava i XML/XSLT, HTML/XHTML, JavaScript

i CSS.“[41]

5.2.2. Entity Framework

Entity Framework 6 (EF6) je testiran i testiran objekt-relacijski mapper (O / RM) za .NET

sa dugogodišnjim razvojem i stabilizacijom funkcija. Kao O / RM, EF6 smanjuje neusklađenost

impedancije između relacionog i objektno orijentisanog sveta, omogućavajući programerima da

napišu aplikacije koje međusobno deluju sa podacima koji se čuvaju u relacijskim bazama

podataka koristeći jako otkucane .NET objekte koji predstavljaju domen aplikacije i eliminišu

potrebu da veliki deo pristupa podacima "vodovod" koji obično treba da pišu.

EF6 implementira mnoge popularne O / RM funkcije:

Page 41: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

41

• Mapiranje klasa POCO entiteta koje ne zavise od bilo koje vrste EF.

• Automatsko praćenje promena.

• Rezolucija identiteta i Jedinica rada.

• Poželjno, lenjivo i eksplicitno učitavanje.

• Prevod jako upisanih upita pomoću LINQ-a (Language INtegrated Query).

• Mogućnosti bogatog mapiranja, uključujući podršku za:

One-to-one, one-to-many i many-to-many odnosima.

• Nasleđivanje (tabela po hijerarhiji, tabela po tipu i tabeli po konkretnoj klasi).

• Složeni tipovi.

• Iskustvo "Code First" za stvaranje entitetskih modela pisanjem koda..

• Integracija sa aplikacijskim modelima .NET Framework-a, uključujući ASP.NET, i preko

baze podataka, sa WPF i WinForms.

5.3. Korisničko uputstvo

Implementiran je deo programa koji se odnosi na unos i ažuriranje podataka o filmovima.

Ovaj deo softvera je realizovan u ASP.NET MVC-u. Pored MVC forme postoji i javan API. u

narednom radu je prikazan kako se radi sa API-om i PHP aplikacija koja koristi javni API ovog

programa.

U ovom odeljku je dat izgled osnovnog ekrana za unos podataka. Ostale softverske funkcije

veb aplikacije nisu realizovane.

Slika 16. Unos novog filma

Page 42: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

42

5.4. Opis implementacije

5.4.1. Kreiranje MVC projekta

5.4.1.1. Model

Model je jedan od osnovnih delova MVC arhitekture. Nakon kreiranje projekata, u

Solution Explorer-u dobijemo fajl koja se naziva Model. U ovom fajlu kreiramo dve klase. Prva

klasa se naziva “Film“ a druga je “Zanr“. U ovim klasama se nalaze svojstva(property).

using System;

using System.ComponentModel.DataAnnotations;

namespace MasterRad2018.Models

{ public class Film

{

public int Id { get; set; }

[Required]

public string Naslov { get; set; }

public string Opis { get; set; }

public Zanr Zanr { get; set; }

[Required]

[Display(Name = "Žanr")]

public byte ZanrId { get; set; }

public DateTime DatumDodavanja { get; set; }

public DateTime DatumIzlaska { get; set; }

}} Listing br. 1 Kod za klasu, ”Film"

using System.ComponentModel.DataAnnotations;

namespace MasterRad2018.Models

{

public class Zanr

{

public byte Id { get; set; }

[Required]

[StringLength(255)]

public string Ime { get; set; }

}} Listing br. 2 Kod za klasu ,”Zanr"

5.4.1.2. Kreiranje baze podataka pomoću Entity Framework-a

U ovom radu iskorišten je Code-first pristup. Code-first radi tako sto Entity Framework

generiše modele i mape u toku izvršavanja na osnovu entitetskih klasa i dodatne konfiguracije

modela. Pomoću Package Manager -a smo dodavali novu migraciju nakon toga EF(Entity

Framework) iz čita iz klase “Film“ i “Zanr“ svojstva (property) i generiše kod. Pomoću ovog koda

EF kreira tabelu “Film“ i tabelu “Zanr“.

public partial class DodajFilmZanr : DbMigration

{

Page 43: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

43

public override void Up() {

CreateTable(

"dbo.Zanrs",

c => new

{

Id = c.Byte(nullable: false),

Ime = c.String(nullable: false, maxLength: 255),

})

.PrimaryKey(t => t.Id);

CreateTable(

"dbo.Films",

c => new

{

Id = c.Int(nullable: false, identity: true),

Naslov = c.String(nullable: false),

Opis = c.String(),

ZanrId = c.Byte(nullable: false),

DatumDodavanja = c.DateTime(nullable: false),

DatumIzlaska = c.DateTime(nullable: false),

})

.PrimaryKey(t => t.Id)

.ForeignKey("dbo.Zanrs", t => t.ZanrId, cascadeDelete: true)

.Index(t => t.ZanrId);

}

public override void Down() {}

Listing br. 3 Kod za migraciju

5.4.1.3. Controller

U ovom delu koda se nalaze metode za kreiranje brisanje, ažuriranje i dodavanje novih

filmova. Za komunikaciju sa bazom koristimo Entity Framework i LINQ.

using MasterRad2018.Models;

using MasterRad2018.ViewModel;

using System;

using System.Data.Entity;

using System.Linq;

using System.Web.Mvc;

namespace MasterRad2018.Controllers

{

public class FilmoviController : Controller

{

private ApplicationDbContext _context;

public FilmoviController()

{

_context = new ApplicationDbContext();

}

protected override void Dispose(bool disposing)

{

_context.Dispose();

}

Page 44: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

44

public ActionResult Novo()

{ var zanrs = _context.Zanrs.ToList();

var viewModel = new FilmViewModel

{

Zanrovi = zanrs

};

return View("FilmForm", viewModel);

}

public ActionResult Urediti(int id)

{

var film = _context.Film.SingleOrDefault(m => m.Id == id);

if (film == null)

return HttpNotFound();

var viewModel = new FilmViewModel()

{

Film = film,

Zanrovi = _context.Zanrs.ToList()

};

return View("FilmForm", viewModel);

}

[HttpPost]

public ActionResult Snimi(Film film)

{

if (film.Id == 0)

{

film.DatumDodavanja = DateTime.Today;

_context.Film.Add(film);

}

else

{

var filmUDb = _context.Film.SingleOrDefault(m => m.Id == film.Id);

filmUDb.Naslov = film.Naslov;

filmUDb.DatumIzlaska = film.DatumIzlaska;

filmUDb.ZanrId = film.ZanrId;

filmUDb.Opis = film.Opis;

}

_context.SaveChanges();

return RedirectToAction("Index", "Filmovi");

}

public ViewResult Index()

{

var film = _context.Film.Include(m => m.Zanr).ToList();

return View(film);

}

public ViewResult Index2()

{

return View();

}

}

}

Listing br. 4 Kod za “FilmoviController"

Page 45: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

45

5.4.1.4. View

U View kreiramo klasu FilmForm. Ova klasa služi za dodavanje i ažuriranje filmova.

Koristi se standardna MVC forma.

@model MasterRad2018.ViewModel.FilmViewModel

@{

ViewBag.Title = "FilmForm";

Layout = "~/Views/Shared/_Layout.cshtml";

}

<h2>Novo</h2>

@using (Html.BeginForm("Snimi", "Filmovi"))

{

<div>

@Html.LabelFor(m => m.Film.Naslov)

@Html.TextBoxFor(m => m.Film.Naslov, new { @class = "form-control" })

</div> <div>

@Html.LabelFor(m => m.Film.Opis)

@Html.TextAreaFor(m => m.Film.Opis, new { @class = "form-control" })

</div> <div>

@Html.LabelFor(m => m.Film.DatumIzlaska)

@Html.TextBoxFor(m => m.Film.DatumIzlaska, "{0:d MMM yyyy}", new { @class = "form-control" })

</div> <div>

@Html.LabelFor(m => m.Film.ZanrId)

@Html.DropDownListFor(m => m.Film.ZanrId, new SelectList(Model.Zanrovi, "Id", "Ime"), "Izaberi", ne

w { @class = "form-control" })

</div> <div> </div>

@Html.HiddenFor(m => m.Film.Id)

<Button class="btn btn-primary" type="submit">Snimi</Button>

} Listing br. 5 Kod za prikaz "FilmForm"

5.4.2. RESTFul servis

5.4.2.1. Kreiranje RESTFul servisa

Kreiranje RestFul servisa izgleda tako da u folderu Controllers kreiramo jedan novi folder

koja se zove API. U ovom folderu kreiramo jednu Web API 2 Controller klasu. Nova klasa se

nasleđuje iz klase APIControler. Da bih naš program radio moramo da koristimo RESTful

konverziju. U konverziji su Get, Post, Put, Delete komande.

Zahtev Opis

GET/API/filmovi Uzmi sve filmove

GET/API/filmovi /1 Preuzmite film sa ID-om 1

Page 46: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

46

POST/API/filmovi Dodaj novi film

PUT/API/filmovi /1 Ažuriraj film sa ID-om 1

DELETE/API/filmovi /1 Izbrišite film sa ID-om 1

U Slučajima kada imamo povratak akcije kontrolera možemo da koristimo

IHttpActionResult. U ovim slučajevima imamo pomoćne metode:

• NotFound().

• Ok().

• Created().

• Unauthorized().

using MasterRad2018.Models;

using System;

using System.Collections.Generic;

using System.Data.Entity;

using System.Linq;

using System.Web.Http;

namespace MasterRad2018.Controllers.Api

{

public class FilmoviController : ApiController

{

private ApplicationDbContext _context;

public FilmoviController()

{

_context = new ApplicationDbContext();

}

public IEnumerable<Film> GetFilmovi()

{

return _context.Film

.Include(m => m.Zanr)

.ToList();

}

public IHttpActionResult GetFilm(int id)

{

var film = _context.Film.SingleOrDefault(c => c.Id == id);

if (film == null)

return NotFound();

return Ok(film);

}

[HttpPost]

public IHttpActionResult CreateFilm(Film film)

{

film.DatumDodavanja = DateTime.Today;

_context.Film.Add(film);

_context.SaveChanges();

Page 47: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

47

return Created(new Uri(Request.RequestUri + "/" + film.Id), film);

}

[HttpPut]

public IHttpActionResult UpdateFilm(int id, Film film)

{

var filmUDb = _context.Film.SingleOrDefault(c => c.Id == id);

if (filmUDb == null)

return NotFound();

filmUDb.Naslov = film.Naslov;

filmUDb.Opis = film.Opis;

filmUDb.ZanrId = film.ZanrId;

filmUDb.DatumIzlaska = film.DatumIzlaska;

_context.SaveChanges();

return Ok();

}

[HttpDelete]

public IHttpActionResult DeleteFilm(int id)

{

var FilmUDb = _context.Film.SingleOrDefault(c => c.Id == id);

if (FilmUDb == null)

return NotFound();

_context.Film.Remove(FilmUDb);

_context.SaveChanges();

return Ok();

}

}

}

Listing br. 6 Kod za kreiranje Film API-a

Page 48: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

48

5.4.2.2. Kontrolisanje RESTFul API-a

Nakon završetka programa moramo konstatovati da li je naš API radi kako treba. Za

kontrolisanje API-a koristićemo jedan besplatan alat Postman. Program nam omogućava da

šaljemo zahteve ka serveru.

Slika 17 Prikaz podataka pomoću API-a

Nakon slanja GET zahteva možemo videti da nam je program ispisao sve filmove koji se

nalaze u bazi. Sličnim zahtevom možemo dodati novi film.

Page 49: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

49

Slika 18 Unos podataka pomoću API-a

Možemo videti da posle slanja GET zahteva novi film će se prikazati u listu MVC view

formi.

Slika 19 Prikaz svih unetih podataka

Page 50: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

50

5.4.2.3. Kreiranje prikaza

Na stranici je prikazana implementacija servisa. Na stranici koristimo Ajax i JQuery

DataTables plug-in. AJAX omogućava asinhrono ažuriranje veb stranica razmenom podataka sa

veb serverom iza scene. To znači da je moguće ažurirati delove veb stranice bez ponovnog

punjenja cele stranice. JQuery DataTables plug-in se koristi za prikaz podataka.

Slika 20 Prikaz podatka pomoću API-a

@model IEnumerable<MasterRad2018.Models.Film>

@{

ViewBag.Title = "Film";

Layout = "~/Views/Shared/_Layout.cshtml";

}

<h2>Filmovi</h2>

<table id="filmovi" class="table table-bordered table-hover">

<thead>

<tr>

<th>Film</th>

<th>Žanr</th>

</tr>

</thead> <tbody> </tbody>

</table>

@section scripts

{ <script>

$(document).ready(function () {

var table = $("#filmovi").DataTable({

"language": {

"url": "//cdn.datatables.net/plug-ins/1.10.19/i18n/Serbian.json" },

ajax: {

url: "/api/filmovi",

Page 51: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

51

dataSrc: ""

},

columns: [

{

data: "naslov",

render: function (data, type, film) {

return "<a href='/Filmovi/Urediti/" + film.id + "'>" + film.naslov + "</a>";

} },

{

data: "zanr.ime"

} ] }); }); </script>} Listing br. 7 Kod za prikaz podataka pomoću API-a

5.4.3. Povezivanje PHP aplikacije sa veb serverom

Osnovna ideja je bila da nakon kreiranja javnog API-a da jedan nezavisan program to koristi. U

Ovom slučaju je to jedna PHP aplikacija. Aplikacija ima mogućnost da prikaže osnovne podatke

koji se nalaze u MVC projektu i da se prikaže detalje.

<?php

$get=file_get_contents("http://localhost:57546/Api/filmovi");

$json=json_decode($get);

$i=0;

echo "<table style=width:70%>";

echo" <tr>";

echo"<th> br.</th>";

echo"<th>Naslov</th>";

echo"<th>Žanr</th>" ;

echo"<th style=width:8%>Više</th>";

echo"</tr>";

foreach ($json as $json) {

$zanr=$json->zanr->ime;

$i++;

echo "<tr>";

echo "<td>$i</td>";

echo "<td>$json->naslov</td>";

echo "<td>$zanr </td>";

echo "<td><a class='button' href='vise.php?details=$json->id'>Više</a></td>";

echo "</tr>";

} echo "</table>";

?> Listing br. 8 Kod za prikaz podataka pomoću php-a

<?php

$id = $_GET['details'];

$location='http://localhost:57546/Api/filmovi/';

$location.=$id; $get=file_get_contents($location);

$json=json_decode($get);

echo "<table style=width:50%>"; echo" <tr>";

echo"<td class='cls'>Naslov:</td>";

echo "<td>$json->naslov</td>";

echo"</tr>"; echo" <tr>";

echo"<td class='cls'>Žanr:</td>";

Page 52: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

52

echo "<td>$json->zanrId</td>";

echo"</tr>"; echo" <tr>";

echo"<td class='cls'>Opis:</td>";

echo "<td>$json->opis</td>";

echo"</tr>"; echo" <tr>";

echo"<td class='cls'>Datum Izlaska:</td>";

echo "<td>$json->datumIzlaska</td>";

echo"</tr>"; echo "</table>"; ?> Listing br. 9 Prikaz pojedinih filmova

Slika 21 Prikaz podatke pomoću php veb aplikacije

Slika 22 Prikaz pojedini podatke pomoću php aplikacije

Page 53: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

53

6. Zaključak

Osnovna hipoteza je bila da najčešće korišćene savremene tehnologije razvoja softvera

omogućavaju implementaciju softvera kroz višeslojne arhitekture uz podršku distribuiranom

procesiranju i servisno-orijentisanom pristupu. Ova hipoteza je potvrđena stručnim istraživanjem

za Javu, PHP i .NET tehnologije kao i konkretnim implementiranim primerom.

U stručnom istraživanju možemo videti da su navedeni programski jezici podržavaju razvoj

softvera višeslojne arhitekture, u naučno-stručnom istraživanju je potvrđeno da su analizirani

programski jezici najpopularniji jezici na tržištu.

Osim rezultata koji se odnose na dokazivanje hipoteze i podhipoteza, realizovan je teorijski

prikaz osnovnih koncepata, a takođe su prikazani rezultati analize naučno-istraživačkih radova.

Implementiran je primer softverske aplikacije koja je bazirana na MVC arhitekturi, a takođe

podržano je i distribuirano procesiranje uz servisno - orijentisani pristup.

Daljim radom na realizovanom primeru, mogla bi se ilustrovati primena kreiranog API od

strane java aplikacije, a takođe bi mogao da se implementira SOAP (simple object access protocol)

web servis slične namene, radi komparacije. Naravno, postojeći prototip softvera u

zadovoljavajućoj meri prikazuje osnovne koncepte i pristupe u savremenom razvoju distribuiranih

aplikacija.

Page 54: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

54

7. Literatura

• Knjige:

[1] Tanenbaum A, Van Steen M: “Distributed systems, Principles and Paradigms“,

VrijeUniversiteit, Amsternam, Pearson Prentice Hall, 2007.

[2] Freeman Adam, Sanderson Steven: “Pro ASP.NET MVC 3 Framework“ Apress, 3rd

edition, 2011.

[3] Freeman Adam, Sanderson Steven: “Pro ASP.NET MVC 4“ Apress, 4th edition, 2012

[4] Freeman Adam: “Pro ASP.NET MVC 5“ Apress, 5th edition, 2013

[5] McGovern J, Tyagi S, “Java Web Services Architecture“ Elsevier, 2003

[6] A Majeed, I Raul, MVC Architecture: A Detailed Insight to the Modern Web Applications

Development, Korea Aerospace University, South Korea, 26. Sep,2018

[7] R Satpute, Prof. P.M. Chawan, Prof.I Jamadar, Prof.B Masram, A Comparative Study of

Architectural Patterns used for website or enterprise Applications, International Journal

of Innovative Research in Science, Engineering and Technology 12.Dec 2015

[8] M Akram, S Hayat - Qualitative & Quantitative analysis of tiered Architecture of Web-

Applications, Software Engineer at Europak Web, Stockholm Sweden

• Internet izvori:

[9] https://keetmalin.wixsite.com/keetmalin/single-

post/2017/09/27/Distributed-System-Architectures-and-Architectural-Styles

9.10.2018

[10] https://msdn.microsoft.com/en-us/library/dd381412(v=vs.108).aspx 9.10.2018

[11] https://www.link-elearning.com/site/kursevi/lekcija/4322 9.13.2018

[12] https://croz.net/usluge/razvoj-rjesenja/spring-framework/ 10.3.2018

[13] https://www.ibm.com/support/knowledgecenter/en/SS8S5A_7.0.0/com

.ibm.curam.content.doc/WebServices/c_WEBSERV_Glossary1Definitions1

.html

9.27.2018

[14] https://searchmicroservices.techtarget.com/tip/REST-vs-SOAP-Choosing-

the-best-web-service

10.5.2018

[15] https://www.sbs.rs/servisno-orijentisana-arhitektura-soa 10.7.2018

Page 55: Tehnički fakultet „Mihajlo Pupin“ rad Tamas Njari.pdf · • Arhitektura zasnovana na događajima (Event-based Architecture). 2.1.1. Slojevita arhitektura “Layered Architecture

55

[16] http://yuinfo.artkey.rs/zbornici/2010/html/pdf/120.pdf 9.30.2018

[17] https://stackify.com/popular-programming-languages-2018/ 11.1.2018

[18] https://www.infoq.com/news/2011/06/Is-REST-Successful 11.9.2018

[19] https://blog.restcase.com/the-rise-of-rest-api/ 11.9.2018

[20] https://docs.microsoft.com/en-us/dotnet/standard/choosing-core-framework-

server

11.9.2018

[21] https://docs.microsoft.com/en-us/dotnet/framework/get-started/overview 11.9.2018

[22] http://ecomputernotes.com/csharp/dotnet/dot-net-framework 11.9.2018

[23] https://medium.com/@alicealdaine/top-10-api-testing-tools-rest-soap-

services-5395cb03cfa9

11.9.2018

• Slike

[24] https://www.it-akademija.com/java-development-program-obrazovanja 3.10.2018

[25] https://stackify.com/wp-content/uploads/2017/05/N-Tier-Architecture-

min.png

9.11.2018

[26] https://i-msdn.sec.s-msft.com/dynimg/IC263184.png 9.11.2018

[27] https://computersciencesource.files.wordpress.com/2010/02/eventbased.jpg?

w=630

9.11.2018

[28] https://computersciencesource.files.wordpress.com/2010/02/sharedata.jpg?

w=630

9.11.2018

[29] http://cse.csusb.edu/tongyu/courses/cs660/images/2/layer.png 9.11.2018

[30] https://www.oreilly.com/library/view/learning-aspnet-

core/9781788476638/assets/b55ecb1a-436c-422e-8505-cd335be0d2b0.png

9.27.2018

[31] https://www.sitepoint.com/best-php-frameworks-2014/ 1.10.2018