• Tidak ada hasil yang ditemukan

Perluasan Konsep Dependency Injection untuk Mendukung Pemodelan Data dengan Teknik Repository Pattern pada ASP.Net MVC Framework.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perluasan Konsep Dependency Injection untuk Mendukung Pemodelan Data dengan Teknik Repository Pattern pada ASP.Net MVC Framework."

Copied!
16
0
0

Teks penuh

(1)

vi

Universitas Kristen Maranatha

ABSTRAK

Perkembangan teknologi pada pengembangan aplikasi berbasis web saat ini berkembang pesat dengan adanya arsitektur Model-View-Controller(MVC). Microsoft mengembangkan sebuah framework yang mengadaptasi arsitektur MVC. Framework ini dapat digunakan untuk mengembangkan sebuah aplikasi web yang bersifat modular. Pada framework tersebut terdapat kekurangan yang dapat mengakibatkan kurang optimalnya sebuah aplikasi web pada saat pengembangan seperti adanya fat controller dan tidak ada dependency injection container bawaan. Oleh karena itu diperlukan solusi untuk mengatasi kekurangan-kekurangan tersebut dan akan memudahkan pengembangan ke tingkat lebih lanjut dari sebuah aplikasi web apabila terjadi perubahan-perubahan proses bisnis atau perubahan pada logika pengolahan data. Solusi yang akan dikemukakan pada penelitian ini adalah penggunaan repository pattern dan penambahan dependency injection container dalam proses pengembangan aplikasi web yang berbasis ASP.NET MVC Framework. Hasil akhir dari penelitian ini adalah pembuktian optimalisasi yang dilakukan dengan cara penggunaan repository pattern dan penambahan dependency injection container dalam proses pengembangan sebuah aplikasi web berbasi ASP.NET MVC Framework.

(2)

vii

Universitas Kristen Maranatha

ABSTRACT

Technological developments in web-based application development is currently booming with the Model-View-Controller (MVC). Microsoft developed a framework that adapts the MVC architecture. This framework can be used to develop a web application that is modular. On the framework contained deficiencies that can result in less optimal a web application at the time of development such as the fat controller and no dependency injection container default. Therefore we need a solution to overcome these shortcomings and will facilitate further development to the level of a web application in case of changes in business processes or changes to the data processing logic. The solution will be presented in this study is the use of the repository pattern and adding dependency injection container in the process of web application development based ASP.NET MVC Framework. The end result of this research is proving the optimization is done by the use of the repository pattern and adding dependency injection container in the process of developing a web application based on ASP.NET MVC Framework.

(3)

viii

Universitas Kristen Maranatha DAFTAR ISI

Lembar Pengesahan ... i

Pernyataan Orisinalitas Laporan Penelitian ... ii

Pernyataan Publikasi Laporan Penelitian ... iii

Prakata ... iv

ABSTRAK ... v

ABSTRACT ... vi

DAFTAR ISI ... vii

DAFTAR GAMBAR ... x

DAFTAR TABEL ... xi

BAB I PENDAHULUAN... 1

1.1. Latar Belakang ... 1

1.2. Rumusan Masalah ... 3

1.3. Tujuan Pembahasan ... 3

1.4. Ruang Lingkup Kajian ... 3

1.5. Sistematika Penyajian ... 4

BAB II TEORI ... 6

2.1. Permasalahan-permasalahan Pada ASP.NET MVC Framework ... 6

2.2. Contoh Framework yang memiliki native IoC Container ... 8

2.2.1. Spring Framework ... 8

2.2.2. Symfony2 PHP Framework ... 9

2.2.3. Use Case Diagram...18

2.2.4. Class Diagram ...19

2.2.5. Activity Diagram ...21

2.3. Dependency Injection ...11

2.3.1. Constructor Injection ...11

2.3.2. Property Injection ...11

2.3.3. Method Injection ...11

2.3.5. Dependency Injection Pada ASP.NET MVC Menurut Buku “ASP.NET MVC 4 in Action” ...14

2.4. Repository Pattern ...16

2.5. Unifed Modelling Language (UML) ...17

2.6. Entity Relationship Diagram ...22

2.7. Microsoft Visual C# ...22

2.8. Microsoft SQL Server (Transact SQL) ...24

2.9. Pengertian ASP.NET ...24

(4)

ix

Universitas Kristen Maranatha

2.11. ASP.NET Model-View-Controller 5 Framework ...25

2.12. Entity Framework ...26

2.13. Object Oriented Application Framework ...26

2.14. StructureMap ...26

2.15. AutoMapper ...27

2.16. JSON.NET ...27

2.17. Microsoft Unity ...27

BAB III ANALISIS DAN RANCANGAN SISTEM ...29

Application Framework ...29

3.1. 3.1.1. Penggunaan IoC Container ...29

3.1.2. Penggunaan Automatic Mapping ...30

3.1.3. Menghapus Penggunaan String sebagai Parameter Pada Method RedirectToAction ...31

3.1.4. Penggunaan Repository Pattern ...31

Tools Yang Digunakan Pada Application Framework ...32

3.2. Entity Relationship Diagram ...34

3.3. BAB IV PENGEMBANGAN PERANGKAT LUNAK ...38

4.1. Solusi Menurut Hanselman ...38

4.1.1. Penggunaan Repository Pattern ...38

4.1.2. Penggunaan Dependency Injection ...39

4.2. Solusi Menurut Adam Freeman dan Steven Sanderson ...41

4.3. Aplikasi Unit Of Work ...42

4.4. Implementasi Infrastructure ...44

4.4.1. FreakCommerceDependencyResolver ...44

4.4.2. FreakCommerceServiceLocator...44

4.4.3. CommonRegistration ...45

4.4.4. ControllerConvention ...45

4.4.5. ControllerRegistration ...46

4.4.6. WebRegistration ...46

4.4.7. ActionFilterRegistration ...47

4.4.8. IRunAfterRequest ...47

4.4.9. IRunAtInit ...47

4.4.10. IRunAtStartup ...48

(5)

x

Universitas Kristen Maranatha

4.4.12. IRunOnRequest ...48

4.4.13. JobRegistration ...48

4.4.14. Contoh Penggunaan Unit of Work ...49

4.5. DbInfrastructure ...49

4.5.1. IFreakCommerceContext ...49

4.5.2. FreakCommerceContext ...50

4.5.3. Bank ...51

4.5.4. Banner ...51

4.5.5. Category ...52

4.5.6. City ...52

4.5.7. Confirmation ...52

4.5.8. Invoice ...53

4.5.9. InvoiceDetail ...54

4.5.10. Menu ...55

4.5.11. MenuRole ...55

4.5.12. Message ...56

BAB V TESTING DAN EVALUASI SISTEM ...57

5.1. Perbandingan Antara Solusi Yang Ada ...57

5.2. Perbandingan Dengan Menggunakan Dependency Injection ...58

5.3. Penggunaan Unity Container ...62

BAB VI KESIMPULAN DAN SARAN...65

6.1. Kesimpulan ...65

(6)

xi

Universitas Kristen Maranatha DAFTAR GAMBAR

Gambar 1. Error pada proses dependency injection pada ASP.NET MVC Framework ... 7

Gambar 2. The dependencies for a Dependency Injector (Fowler, Inversion of Control Containers and the Dependency Injection pattern, 2004) ... 12

Gambar 3. Class Dependency and Model Complexity ... 13

Gambar 4. Dependency Injection – Golf Analogy ... 14

Gambar 5. Contoh Class Diagram ... 20

Gambar 6. Contoh Activity Diagram ... 21

Gambar 7. Rancangan Penggunaan IoC Container ... 29

Gambar 8. Rancangan Penggunaan Automatic Mapping ... 30

Gambar 9. Rancangan Repository Pattern ... 31

Gambar 10. Tools yang akan digunakan pada application framework ... 32

(7)

xii

Universitas Kristen Maranatha DAFTAR TABEL

(8)

1

Universitas Kristen Maranatha

BAB I PENDAHULUAN

Pada BAB I dibahas mengenai latar belakang dipilihnya topik ini,

rumusan masalah, tujuan pembahasan, ruang lingkup kajian dan sistematika

penyajian.

1.1.

Latar Belakang

Saat ini perkembangan aplikasi

e-commerce

dengan

scope B2C

(Business to Consumer)

berbasis web sangatlah pesat. Dengan banyaknya

pilihan bahasa pemrograman saat ini pengembang dimudahkan untuk

menentukan dengan apa suatu aplikasi web

e-commerce

akan

dikembangkan

dan

dengan

arsitektur

apakah

aplikasi

tersebut

dikembangkan.

Pada saat ini pengembang banyak diperkenalkan kepada arsitektur

MVC (Model-View-Controller).

Arsitektur

MVC

merupakan sebuah solusi

agar pengembang dapat membuat sebuah aplikasi yang ramah dengan kerja

tim, perubahan cara kerja aplikasi pada saat proses pengembangan

(agile)

dan efisiensi waktu pemgembangan.

Karena arsitektur

MVC

yang sudah sangat dikenal baik oleh para

pengembang maka

Microsoft

mengembangkan sebuah

framework

dengan

arsitektur

MVC

untuk ASP.NET.

Oleh karena teknologi pendukung untuk mengembangkan sebuah

aplikasi

e-commerce

berbasis web sudah sangat baik maka pengembang

dapat mengembangkan aplikasi lebih baik. Akan tetapi aplikasi web

e-commerce B2C

banyak memiliki kesamaan cara berpikir antara satu dengan

yang lainnya. Maka diperlukan sebuah

framework

untuk mengakomodir

kesamaan-kesamaan yang ada pada sebuah aplikasi web

e-commerce B2C.

Pada

Microsoft ASP.NET MVC Framework

juga terdapat beberapa

kekurangan yang dianggap oleh developer sangat menggangu yaitu adalah:

(9)

2

Universitas Kristen Maranatha

2. Kurangnya solusi untuk mengatasi hal-hal yang bersifat umum

seperti

casting

data dari entitas bisnis ke

view-model.

3. Pada fungsi

redirect to action

ASP.NET MVC Framework

menggunakan

string

sebagai parameter yang mengakibatkan

seringnya

terjadi

kesalahan

penulisan

parameter

oleh

pengembang dan tidak terdeteksi oleh

visual studio

bahwa

pengembang merujuk ke nama

controller

atau nama

view

yang

salah

4.

Developer

sering membuat

controller

yang “berat”

(fat controller)

karena banyak contoh yang dibuat oleh Microsoft dituangkan

pada

controller.

(Honeycutt, 2014)

Permasalahan yang sangat penting pada

native

ASP.NET MVC

Framework adalah tidak adanya

native IoC(Inversion of Control)

yang

mengakibatkan pengembang sulit untuk

decoupling

antar kelas dan sangat

sulit untuk dilakukan

testing

pada

unit test

karena semua kelas yang

dependent merupakan

concrete class

dan tidak dapat dibuat

fake

untuk

dilakukan

unit test.

Karena adanya permasalahan-permasalahan di atas maka

diperlukan sebuah

application framework application framework

yang dapat

menangani

e-commerce b2c

dengan lebih

developer oriented

yang dapat

mengarahkan pengembang untuk mengembangkan aplikasi yang lebih

moduler dan sangat ramah dengan perkembangan kebutuhan.

Application

framework

harus mencakup beberapa hal yaitu :

1. Memiliki

Inversion of Control (IoC)

yang dapat menangani

dependency

untuk setiap kelas.

2. Memiliki alat untuk melakukan

mapping

data

otomatis dari model

ke

view-model.

3. Memiliki cara yang lebih baik untuk melakukan

redirect to action

(10)

3

Universitas Kristen Maranatha

4. Memiliki

konsep

repository

pada

model

yang

dapat

mengakomodir proses data dimana proses tersebut tidak berada

pada

controller.

1.2.

Rumusan Masalah

Berikut ini adalah rumusan masalah dalam tugas akhir ini

berdasarkan dari latar belakang pada sub bab 1.1 :

1. Bagaimana membangun sebuah

application framework

untuk

aplikasi web

e-commerce B2C?

2. Bagaimana membangun sebuah

application framework

yang

moduler?

3. Bagaimana meminimalkan penggunaan

string

pada proses

pengembangan?

1.3.

Tujuan Pembahasan

Berikut ini adalah tujuan pembahasan dalam tugas akhir ini

berdasarkan dari rumusan masalah pada sub bab 1.2:

1. Membuat

sebuah

application

framework

yang

dapat

mengakomodir hal-hal yang

general

pada sebuah aplikasi web

e-commerce B2C

2. Menambahkan

IoC Container

pada

application framework

agar

dapat mengembangkan sebuah aplikasi yang moduler lebih

mudah

3. Membuat kelas yang mengakomodir penggunaan

string-based

tools

menjadi

strongly typed base

.

1.4.

Ruang Lingkup Kajian

Berikut ini adalah ruang lingkup kajian dari pembahasan yang dibuat

pada

application framework

ini:

1. Batasan Perangkat Keras

(11)

4

Universitas Kristen Maranatha

c.

Hard drive

20 GB

2. Batasan Perangkat Lunak

a. Sistem operasi Microsoft Windows XP Professional Service

Pack 3

b. Sistem basis data Microsoft SQL Server

c. Bahasa pemrograman Microsoft Visual C#

d.

Editor

Microsoft Visual Studio

3. Batasan Aplikasi

Berikut adalah ruang lingkup kajian pada aplikasi.

a. Membuat

sebuah

framework

bukan

sebuah

content

management system.

b.

Template default

hanya sebuah studi kasus.

c. Membuat sebuah

application framework

untuk aplikasi web.

d. Membuat

application framework

yang medukung

modularity

.

1.5.

Sistematika Penyajian

Berikut

ini

adalah

sistematika

penyajian

dari

laporan

Pengembangan application framework untuk aplikasi web

e-commerce

B2C

dengan menggunakan

ASP.NET MVC Framework

sebagai

framework

dasar

”.

BAB I Pendahuluan

(12)

5

Universitas Kristen Maranatha

BAB II Kajian Teori

Pada BAB II kajian teori membahas tentang landasan

landasan

teori yang digunakan untuk pembuatan aplikasi ini.

BAB III Analisis dan Rancangan Sistem

Pada BAB III analisis dan rancangan sistem membahas mengenai

perancangan dan analisis yang digunakan dalam pembuatan

aplikasi.

BAB IV Hasil Penelitian

Pada BAB IV hasil penelitian membahas mengenai hasil yang

tercapai dalam pembuatan aplikasi.

BAB V Pembahasan dan Uji Coba Hasil Penelitian

Pada BAB V pembahasan dan uji coba hasil penelitian membahas

mengenai hasil testing dan evaluasi dalam pembuatan aplikasi.

BAB VI Simpulan dan Saran

(13)

65

Universitas Kristen Maranatha

BAB VI KESIMPULAN DAN SARAN

6.1. Kesimpulan

Dari hasil pembahasan yang telah disampaikan maka dapat ditarik

kesimpulan sebagai berikut:

1.

Application framework

ini memiliki

IoC Container yang dapat

memudahkan pengembangan aplikasi

e-commerce

B2C

yang

loosly-coupled.

2.

Application framework

ini memiliki alat untuk melakukan pemetaan

otomatis untuk data dari

domain model

ke

view-model. Dengan ini

maka pekerjaan

casting data dari

domain model

ke

view-model

menjadi lebih ringkas.

3.

Application framework

ini telah mengubah cara untuk melakukan

method redirect-to-action pada

controller menjadi lebih

strongly-typed. Dengan ini maka kesalahan pengetikan pada saat proses

pengembangan berkurang.

4.

Application framework

ini menggunakan

repository pattern

dalam

implementasinya. Dengan

pattern

ini maka

controller

akan lebih

ringkas dan seluruh pengerjaan yang berhubungan dengan basis

data atau data lainnya dilakukan pada repository.

5. Dengan menggunakan

repository pattern

maka optimalisasi

penggunaan kode (code reusable) menjadi dapat dimungkinkan

tanpa mengubah konsep controller pada aplikasi.

6.2. Saran

Adapun saran yang dapat diberikan pada aplikasi ini adalah:

1. Dapat digunakan untuk pengembangan aplikasi yang lebih

general

agar tidak hanya untuk aplikasi e-commerce b2c saja.

2. Adanya bantuan untuk

client-side

coding yang selama ini juga

(14)

66

Universitas Kristen Maranatha

DAFTAR PUSTAKA

Bogard, J. (n.d.).

AutoMapper

. Retrieved 06 11, 2015, from

http://automapper.org/

Fayad, M., & Schmidt, D. C. (2006, September 28).

Object-Oriented

Application Frameworks

. Retrieved May 05, 2015, from Washington

University in St.Louis:

http://www.cs.wustl.edu/~schmidt/CACM-frameworks.html

Fowler, M. (2003).

Patterns of Enterprise Application Architecture.

Boston:

Pearson Education, Inc.

Fowler, M. (2004, January 23).

Inversion of Control Containers and the

Dependency Injection pattern

. Retrieved March 25, 2015, from

http://martinfowler.com/: http://martinfowler.com/articles/injection.html

(2011). In A. Freeman, & S. Sanderson,

Pro ASP.NET MVC 3 Framework

(p.

73). New York: Apress.

Hanselman, S. (2010, November). ASP.NET + Packaging + Open Source =

Crazy Delicious. Redmond, Washington, United States.

Honeycutt, M. (Director). (2014).

Build Your Own Application Framework with

ASP.NET MVC 5

[Motion Picture].

Johnson, R., & Foote, B. (1988). Designing Reusable Classes.

Journal of

Object-Oriented Programming

, 22-35.

joomla. (n.d.).

what is joomla

. Retrieved from

http://www.joomla.org/about-joomla.html

Lerman, J., & Miller, R. (2012). Programming Entity Framework: Code First.

California: O’Reilly Media, Inc.,.

Lerman, J., & Miller, R. (2012). Programming Entity Framework: DbContext.

California: O’Reilly Media, Inc.

Microsoft. (2013, February 18).

ASP.NET MVC 4 Dependency Injection

.

Retrieved July 10, 2015, from Microsoft ASP.NET:

(15)

67

Universitas Kristen Maranatha

Microsoft Corporation. (2015).

What Is Unity?

Retrieved July 29, 2015, from

MSDN:

https://msdn.microsoft.com/en-us/library/dn507457(v=pandp.30).aspx

Newtonking, J. (n.d.).

JSON.NET

. Retrieved 06 11, 2015, from Newtonsoft:

http://www.newtonsoft.com/json

(2012). In J. Palermo, J. Bogard, E. Hexter, M. Hinze, & J. Skinner,

ASP.NET

MVC 4 In Action

(p. 301). New York: Manning Publications Co.

Schwarz, N., Lungu, M., & Nierstrasz, O. (2011). Journal of Object

Technology.

Seuss: Decoupling responsibilities from static methods

for fine

-

grained configurability

, 2.

Seeman, M. (2012). In M. Seeman,

Dependency Injection in .NET

(p. 4).

New York: Manning Publications Co.

SensioLabsNetwork. (n.d.).

what is symfony

. Retrieved 06 11, 2015, from

Symfony: http://symfony.com/what-is-symfony

Software, P. (n.d.).

spring

. Retrieved 06 11, 2015, from Project Spring:

http://projects.spring.io/spring-framework/

StructureMap. (n.d.).

StructureMap Home Page

. Retrieved 06 11, 2015, from

StructureMap Home Page: http://docs.structuremap.net/

Ugurlu, T., Zeitler, A., & Kheyrollahi, A. (2013). Pro ASP.NET Web API.

California: Apress Media, LLC.

webhostingspree. (n.d.).

Magento hosting

. Retrieved may 24, 2015, from

webhostingspree:

http://www.webhostingspree.com/magento/resources/what-is-magento/

wordpress. (n.d.).

wordpress.org indonesia

. Retrieved 06 02, 2015, from

https://id.wordpress.org/

MacDonald, Matthew., Freeman, Adam., & Szpuszta, Mario. (2010) Pro

ASP.NET 4 in C# 2010. New York: Apress

Griffiths, Adam. (2010) CodeIgniter 1.7 Professional Development .

Birmingham: Packt Publishing

Galloway, Jon., Haack, Phil., Wilson, Brad., Allen, K.Scott., (2011)

(16)

68

Universitas Kristen Maranatha

Watson, Karli., Nagel, Christian., Pederson, Jacob Hammer., Reid, Jon.D.,

(2008) Beginning Microsoft® Visual C# 2008. Indianapolis: Wiley

Publishing

Schlidt, Herbert. (2006) C# 2.0: The Complete Reference. California: The

McGraw-Hill Companies

Rittgen, Peter., (2007) Enterprise Modeling and Computing with UML.

Hershey

Fowler, Martin. (2004) UML Distilled. Addison-Wesley

Gambar

Gambar 1. Error pada proses dependency injection pada ASP.NET MVC Framework ...... 7

Referensi

Dokumen terkait

Berdasarkan fenomena di atas, peneliti tertarik untuk melakukan sintesis senyawa N-((2-hidroksinaftalen-1-il)2-hidroksibenzil)etanamida yang merupakan salah satu turunan

Penggunaan kemasan organik yang terbuat dari kombinasi serat eceng gondok dan pelepah pisang sebagai pengemas buah apel dapat menjaga nilai susut bobot buah apel 0,8%

Tujuan dari penyusunan laporan akhir ini adalah untuk membuat suatu Aplikasi Pengukuran kinerja Kayawan Pada LPP TVRI Sumatera Selatan dengan menggunakan bahasa pemrograman

Pada aplikasi ini Bagian Kepegawaian yang bertugas sebagai admin melakukan proses pengolahan data unit kerja, data pegawai, data SKP dan usulan kenaikan pangkat..

Hasil dari pengujian hipotesis ke tiga yang telah dilakukan menunjukkan bahwa secara parsial harga pokok pesanan perusahaan tidak berpengaruh signifikan terhadap

Puji syukur penulis panjatkan kehadirat Allah SWT yang telah melimpahkan rahmat, hidayah serta karunia-Nya kepada penulis, sehingga penulis dapat

Statement II is incorrect because for the same coupon rate, a longer term bond has a greater percentage price change than a shorter term bond if the market discount

Hasil regresi sesuai dengan hipotesis penelitian awal yang menduga terdapat pengaruh positif antara aglomerasi sektor industri terhadap ketimpangan