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.
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.
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
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
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
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
xii
Universitas Kristen Maranatha DAFTAR TABEL
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:
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
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
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
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
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
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:
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)
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