it-swarm-tr.com

Alan adı nedir?

Bu terimi yazılım mimarisi bağlamında çok fazla görüyorum ("domain-model", "domain-driven-design" vb.). Google'ı aradım, ancak tonlarca farklı tanım elde ediyorum. Öyleyse gerçekten nedir?

107
Sipo

Eric Evans'ın Domain Driven Design kitabındaki “domain” kelimesinin özel bir anlamı var. Yazılımın konusu budur.

Evans daha da ileri gidiyor. Onun görüşüne göre, aynı yazılımla bile alt alanlar var. Bu da kitabın “Stratejik Tasarım” ile ilgili kısmı.

Üç "alan" vardır: çekirdek alan, destekleyici alan ve genel alan. Bazen bunlara alt alan adı denir.

Evans ayrıca yazılımın arkasındaki gerçek işi de önemsiyor ve kitap sadece geliştiricileri değil, aynı zamanda yazılım ve işletmenin birlikte nasıl çalışabileceğini görmesi gereken mimarlar ve yöneticileri de hedefliyor ve stratejik tasarımı tartışırken endişe duyduğu şey bu ve bu alt alanlar.

Dolayısıyla, temel etki alanı, yazılımın hem rekabet avantajını hem de yazılımın "varlık" değerini temsil eden parçasıdır. Yazılımın bir parçası olmasının nedeni, bir müşterinin yazılımı başka bir yazılıma göre satın almasıdır. Genellikle Evans bunu en küçük kod yüzdesini içeren alan adı olarak görür. Bunu en önemli% 20 olarak düşünebilirsiniz. Raftan gerçekten satın alamayacağınız kısımdır ve genel yazılımın sadece tek bir modülü veya bileşeni olabilir.

Destekleyen alan adı hala önemlidir ve kuruluşa özgü olabilir ancak ana alan adı kadar önemli değildir. Bu olmadan, yazılım o kadar değerli olmaz ve çekirdek buna güvenir. Yazılımda, kendi yazdığınız ve çekirdeğe önemli fakat destekleyici işlevler gerçekleştiren birden çok modül olabilir.

Genel etki alanı, yazılımın en az özel ve bir anlamda en az önemli parçasıdır. Evde yazmış olabilirsiniz, ancak sadece raftan satın almak veya iyi bilinen açık kaynaklı yazılım kullanmak daha verimli olabilir. Sistemin bu kısmı muhtemelen genel alan adınıza özgü değildir, bu nedenle, örneğin parselleri yönlendiren bir nakliye sisteminiz veya hastaları yöneten bir sağlık kayıtları sisteminiz olsun, genel alan bu sistemlerin ortak ve adil olan kısmıdır. sadece işlevini yerine getirmek için orada olmak gerekir. Bu büyük olasılıkla sistemin büyük bir kısmını oluşturur, ancak mutlaka böyle değildir.

İşletme açısından bakıldığında, temel alan adınızın ne olduğuna karar vermek ve geliştirme kaynaklarınızı oraya odaklamak önemlidir. Evans, özellikle bu kavramları daha ayrıntılı olarak açıkladığı InfoQ sitesinde birçok videoya sahiptir.

Dolayısıyla, yazılımdaki “etki alanı” hakkında sık sık konuşurken, DDD söz konusu olduğunda göründüğü kadar basit değil.

DDD kavramlarının daha geniş yazılım topluluğunda bulunmadığına dikkat etmeliyim. Diğer geliştiriciler, yazarlar ve ürün çalışanları, bazıları daha ince ve bazıları daha az olan farklı fikir ve tanımlara sahip olabilir. DDD hakkında yazmış olan diğer yazarlar bile Evans'ın kitabındaki bu kavramları aydınlatabilir, ancak bir yazılım projesi yazarken ve planlarken kavramların hala yararlı olduğunu hissediyorum.

10
RibaldEddie

domain, yazılımı kullanarak bir sorunu çözmeye çalıştığınız gerçek dünya bağlamıdır. Her alan adı, o alanın parçası olan uzmanlık, kelime bilgisi ve araçlarla birlikte gelir.

Bir alanın spesifik bir örneği, "yüksek hızlı dönen bir kesici kullanılarak karmaşık parçaların otomatik olarak işlenmesi" gibi bir şey olabilir. Bunu başaran yazılım ve donanım sistemine CNC değirmen denir.

Etki alanının başka bir örneği, bir şirketteki muhasebe departmanıdır.

Daha Fazla Okuma
Martin Fowler'ın Sınırlı Bağlamı

110
Robert Harvey

Basitçe içinde çalıştığınız sorun alanı anlamına gelir. Örneğin, bir e-ticaret web sitesi oluşturuyorsanız alan adınız "e-ticaret" olurdu ve müşterinizin/şirketinizin satış uygulamalarıyla ilişkili süreçleri içerecektir. Dolayısıyla bir alan adı modeli, bir ürünü, faturayı veya gönderim kaydını temsil edecek bir şeydir.

40
Becuzz

A Domain is an area of knowledge. It can be though about as an activity in which problems solved by your software exist. ( Wiki , DDD Community )

Eric Evans kitabında, DDD'nin ne olduğunu açıklamak için kargo taşımacılığını kullanıyor. Örneğinde, alan adı nakliye ile ilgili her şeydir. Kargonun nasıl taşındığı, yönetildiği, sevk edildiği ve takip edildiği vb. Kendi özel kuralları, dili ve süreçleri ile birlikte gelir. Bunlar etki alanı modelleri, nesneler, hizmetler vb. Yaratacaktır.

Bir uygulama oluşturduğunuzda, tıpkı gerçek nakliye dünyasında olduğu gibi, herkes depolara erişemeyen bir çeşit yetkiniz olacaktır. Kullanıcıların nasıl yetkilendirildiği ve izinlerin nasıl verildiği alan adının dışında olabilir, çünkü bu bilgiler yükün nakliyesi ile ilgili olmayabilir.

Basitçe söylemek gerekirse: etki alanı işinizi yaptığınız yerdir . İşletmeniz kargo gönderiyorsa - kargo kargo alan adınız olacaktır. İşletmeniz personelin kimliğini doğrulamak ve yetkilendirmek istiyorsa, bu sizin alanınız olacaktır.

20
potfur

Etki Alanına Dayalı Tasarım: Yazılımın Kalbinde Karmaşıklıkla Mücadele , Eric Evans:

Her yazılım programı, kullanıcısının bir faaliyeti veya ilgisi ile ilgilidir. Kullanıcının programı uyguladığı konu alanı, yazılımın etki alanıdır .

Bir havayolu rezervasyon programının alanı gerçek kişilerin gerçek uçaklara binmesini içerir.

Bir muhasebe programının alanı para ve finanstır.

Bir kaynak kodu kontrol sisteminin alanı yazılım geliştirmenin kendisidir.

Alan modeli, bir alan uzmanının kafasındaki bilginin "titizlikle organize edilmiş ve seçici bir soyutlamasıdır".

Palermo, soğan mimarisini tarif ederken bu özeti sundu

Tam merkezde, kuruluş için gerçeği modelleyen durum ve davranış kombinasyonunu temsil eden Etki Alanı Modeli'ni görüyoruz.

Fowler buna karşılık,

Etki alanının hem davranışı hem de verileri içeren nesne modeli.

Daha yeni tanımlara bakıyorsanız, etki alanı modeli ve veri modeli farklıdır referansları ile karşılaşmanız daha olasıdır. Anlam değişikliğinin bir vurgu değişikliği kadar çok fazla olduğunu düşünmüyorum - davranışları modellemek (verilerin modelin dışından gelen bilgilere yanıt olarak verilerin değişme şekli), işleri yazmanın farklı yollarından daha zengin karmaşıklığa ve çeşitliliğe sahip .

7
VoiceOfUnreason

Muhtemelen alan adı hakkında bir fikriniz olduğundan, atacağınız bir sonraki adım alt alan adını, alan modelini ve daha da önemlisi sınırlı bağlamı tanımlamaktır.

Yine de etki alanı perspektifimi koymakla başlıyorum.

Alan adı

Alan, içinde yaşadığımız gerçekliktir: varlıkları, davranışları, uydukları yasalar. Bizden önce vardı ve bizden sonra, şu ya da bu şekilde var olacak. Onun varlığı farkındalığımıza bağlı değildir. Pazarlamacılar yeni özellikler buluyor ve pazar analizi yapıyor, Kilit hesap yöneticileri müşterilerle iletişim kuruyor, yazılım geliştiricileri iş süreçlerini otomatikleştiriyor. Bu nedenle etki alanına Sorun alanı denir.

Alt etki alanları

DDD, modellemelerini ve kavramalarını kolaylaştırmak için alan adlarının alt alanlara ayrıştırılmasını gerektirir. Bir işletmeyi yürütmeniz, en az bir baskın işletme-değerinin bulunduğunu gösterir. Birlikte para kazandýđýn. İşimize başladığımız kişi. Yani “Çekirdek alan adı” gibi bir Kelime bilmeseniz bile, hala mevcut. Aynı şey alt alanlar için de geçerlidir: muhtemelen bir defter tutmaya, insan kaynaklarına, teknik desteğe ihtiyacınız olacak - ancak ikincil.

Alan adı modeli

Çıkarılan alt alan adlarının bütününün modellenmesine gerek yoktur. Her alt etki alanında ilgilendiğimiz belirli bir dizi kural vardır. Bazı alt etki alanında belirli bir iş sonucunu elde etmek için gereken bir kurala model adı verilir.

Sınırlı bağlamlar

En önemli şey sınırlı bağlamın mantıksal bir sınır olmasıdır.

Hem alt alan adları hem de temel alan tanımlandığında, kodu uygulama zamanı gelmiştir. Sınırlı bağlam, bazı alt alanların uygulanabilirlik için somut sınırlarını tanımlar. Bu, belirli bir alt alan adının anlamlı olduğu, diğerlerinin anlamadığı bir alandır. Bir konuşma, bir sunum, eser tarafından tanımlanan fiziksel sınırları olan bir kod projesi olabilir.

Sıradaki ne?

Sınırlı bağlam kavramının alt alan adı kavramıyla nasıl ilişkili olduğu, alt alanların ve sınırlı bağlamların nasıl tanımlanacağı, birbirleriyle iletişiminin nasıl temsil edileceği ve bu kavramları dikkate alarak ekiplerin nasıl düzenleneceği ile ilgileniyorsanız, muhtemelen bununla ilgilenirsiniz. daha fazla okuma .

2
user286277