Şu anda ağırlıklı olarak bir Angular SPA ve bir arka uç katmanına erişimi olan bir OData WebAPI içeren büyük bir web uygulaması geliştirmenin başlangıcındayım.
Erken bir aşamadayız ve tüm katmanların erişebilmesi için ortak bir ad alanında bulunan Model.dll
dahil olmak üzere ilk sınıfları uygulamaya başladık.
Şimdi modeldeki bu DTO'lar hakkında görüşüyoruz. Bazıları arayüzleri kullanmanın kesinlikle gerekli olduğunu söylüyor, bu yüzden kod şöyle olurdu:DTO'lar için Arayüzler
namespace MySolution.Common.Model
{
public interface IPerson
{
int Id { get; set; }
string Name { get; set; }
...
}
}
namespace MySolution.Common.Model
{
public class PersonDTO : IPerson
{
public int Id { get; set; }
public string Name { get; set; }
...
}
}
İşte bu kadar. Artık zekaya sahip olmayan sadece basit DTO'lar.
Şimdi bu gerçekten iyi bir yaklaşım olup olmadığını kendime soruyorum, çünkü burada arayüzü kullanmanın gerekliliğini görmüyorum.
Bunun avantajları nelerdir? Test edilebilirlik söz konusuydu, ancak DTos'u test etmek bile gerekli mi? Bağımlılık Enjeksiyon da nokta olmamalıdır.
Herhangi bir aydınlanma çok yardımcı olabilir. Sonunda yeni şeyler öğrenmek ve yaklaşımlar her zaman iyidir ...
İhtiyacınız yoksa bir arayüz kullanmanın bir nedeni yok. Bu basit bir nesne olması gereken şeyleri fazlasıyla karıştırıyor. –
* DTO * basit bir özellik listesi ise, bunu anlamsız görüyorum. Bir çeşit deponuz varsa, örneğin, sahte bir temsil için bir DB bağlantısını değiştirmek için bunu yaparsınız. Eğer kişi GetPerson() 'a sahip olsaydınız, DB versiyonuna ve Sahte versiyona sahip olabilirsiniz. – christiandev
Tip kısıtlamaları ve eşleştirmeler için bir DTO ('FooDto: IAmADto') üzerinde bir işaretçi arabirimi açabilirsiniz, ancak aksi halde, hangi amaçla sunuluyor? IPersona bağlı olarak burada hiçbir soyutlama yoktur, 'Kişiye' bağlı olarak aynı düzeyde bir kuplaj sağlar. –