Dalam proyek multi-tier, di mana antarmuka harus didefinisikan?

9

Saya memiliki proyek bertingkat yang terdiri dari tiga sub proyek, yaitu proyek akses data, proyek Logika Bisnis dan proyek Presentasi, di mana antarmuka harus didefinisikan? Saya menduga bahwa harus ada antarmuka yang didefinisikan dalam DAL dan BLL .. Dalam konteks pengujian Business Logic Layer dengan menggunakan data "test" berdasarkan antarmuka, tampaknya mungkin harus ada proyek terpisah hanya dengan antarmuka?

Adakah praktik atau gagasan terbaik tentang bagaimana hal ini harus diatur?

John S
sumber

Jawaban:

9

Salah satu pendekatan yang baik untuk ini adalah dengan menggunakan pola tangga:

masukkan deskripsi gambar di sini

Jadi DAL tinggal di satu proyek, antarmuka di proyek lain, BLL di ketiga, antarmuka di keempat dan seterusnya.

Idenya adalah bahwa ketika menguji misalnya lapisan bisnis, Anda kemudian hanya referensi proyek antarmuka DAL, daripada menyeret semua DAL nyata dan misalnya NHibernate ke dalam ruang lingkup hanya untuk mendapatkan antarmuka tersebut.

Sejauh yang saya tahu, pola ini adalah ciptaan Gary McLean Hall dalam bukunya, " Kode Adaptif via C #: Agile coding dengan pola desain dan prinsip SOLID "

David Arno
sumber