“İş mantığı”, “üçüncü parti olmayanların tümü” değilse, ne anlama geliyor?


25

İnsanların iş mantığı hakkında işyerinde ve çevrimiçi konuştuğunu duydum ve bu sitede bazı sorular okudum, ancak bu terim hala bana pek bir şey ifade etmiyor. Örneğin, burada sık sık gördüğüm bazı (parola cümleleri) ifadeler:

  • "İş mantığı, programınızın gerçek iş kurallarını kodlayan bir parçasıdır." Okuduğum tanımların çoğu, bunun gibi dairesel olanlardır.

  • "İş mantığı, kendi uygulamanıza özgü her şeydir." Bunun, mevcut 3. parti yazılımını kullanabileceğimiz bir takım tekerleği yanlışlıkla yeniden icat etmediğimiz sürece, "sizin özel uygulamanızın iş mantığından başka bir şey" den ne kadar farklı olduğunu anlamıyorum. Dolayısıyla soru başlığı.

  • "Veri Erişim Katmanınızın üstünde ve GUI Katmanınızın altında bir Business Logic Layer olmalı." Yazdığım kodda, veritabanı erişimcilerinin hangi verilere erişmeleri gerektiğini bilmeleri ve UI kodunun doğru görüntülemek için neyin gösterdiği hakkında çok şey bilmesi gerekiyor ve bunların arasında gerçekten yapılacak hiçbir şey yok. müşteri ve sunucu arasında veri blobları geçmekten başka iki yer Peki aslında İş Mantığı Katmanına girmesi gereken nedir?

  • "İş mantığı sunum mantığından ayrı olmalıdır." Aldığımız özellik isteklerinin çoğu, ticari nedenlerden dolayı sunum mantığını değiştirmektir. İş kurallarından biri, ABD devlet tahvili fiyatlarının varsayılan olarak 32nds notasyonda gösterilmesi ise (kullanıcının bunu yapılandırması için bir kullanıcı arayüzü sağlarken), sunum mantığının, en azından tam olarak uygulanmadığı takdirde, bu kuralın mevcut olduğunu bilmesi gerekir. Ayrıca, UX tasarımının büyük bir kısmı, kullanıcının yazılımımızın uygulamaya çalıştığı iş kurallarını anlamalarına yardımcı oluyor gibi görünüyor.

Aslında sadece iş mantığını yapan ve tüm iş dışı mantığını başka takımlar tarafından gerçekleştiren bir takımda bulunmam mümkün mü? Yoksa “iş mantığı” kavramı ayrı bir varlık olarak sadece belirli uygulamalar veya mimariler için uygulanabilir mi?

Cevapları somutlaştırmaya yardımcı olmak için: Domino's Pizza uygulamasını yeniden uygulamanız gerekmiş gibi yapın. İş mantığı nedir ve bu uygulamanın iş dışı mantığı nedir? Ve pizza siparişi iş mantığını, veri erişimine ve sunum katmanlarına sızan pizza bilgilerinin birçoğu olmadan kendi “kod katmanına” koymak nasıl mümkün olabilirdi?

Güncelleme: Ekibimin muhtemelen% 90 UI kodu yaptığını ve iş mantığı dediğiniz şeylerin çoğunun diğer ekiplerden veya şirketlerden geldiği sonucuna vardım. Temel olarak, uygulamamız izleme içinfinansal veriler ve neredeyse tüm özellikler, kullanıcının hangi verileri gördüklerini ve nasıl gördüklerini özelleştirmelerinin yollarıdır. Satın alma veya satma söz konusu değildir (bunu yapan firmamızın diğer uygulamalarına biraz entegre etsek de) ve gerçek veriler bir çok dış kaynak tarafından sağlanır. Ancak, kullanıcıların “monitörlerinin” kopyalarını diğer kullanıcılara gönderme gibi şeyleri yapmalarına izin veriyoruz, bu yüzden nasıl işlediğimizin ayrıntıları muhtemelen iş mantığı olarak nitelendiriliyor. Aslında şu anda bazı arka uç kodumuzla konuşan bir mobil uygulama var ve ön uç kodumuzun hangi bölümünü, ideal bir dünyadaki kullanıcı arayüzümüzle paylaşmak istediğimi biliyorum (temel olarak Quasi-MVC'deki M). Sanırım bu bizim için bir BLL.

Kullanıcının61852'nin cevabını kabul ediyorum, çünkü bana "işletme mantığının" ne anlama geldiği ve neye göndermediği hakkında daha somut bir anlayış kazandırdı.


1
Tüm iskeleyi, altyapıyı, kazan plakasını, kütüphane kodunu "tekerleğin yeniden inşası" kilidinin altına sokuyorsunuz, ama bu aslında iyi bir kod parçası ve hepsi makul bir şekilde üçüncü taraf kodu olamaz. Belki ürününüze özgü değil, ürününüze ve rakip üç ürüne özgüdür. Belki mevcut çözümleri ekarte eden garip gereksinimleriniz vardır. Belki mevcut çözümler teknik nedenlerden dolayı sizin için kesin değildir (örneğin performans hedeflerini karşılamayın - bu, oyun gelişiminde yapılandırılmış temel verileri yeniden oluşturmak için yaygın bir nedendir).

Bizim için altyapı, kütüphane kodu ve iskele çoğunlukla diğer takımlar veya 3. şahıslar tarafından korunuyor (kazan plakası her yere eşit şekilde dağılmış olsa da), bu yüzden belki de UI / işletme mantığını yapan takımda olduğum kadar basit.
Ixrec

8
50 dolardan fazla sipariş verirseniz, ücretsiz peynir kaplı ekmek çubukları alırsınız.
kdgregory,

1
@ raptortech97 "50 dolardan fazla sipariş verirseniz, ücretsiz peynir kaplı ekmek çubukları alırsınız" iş mantığıdır.
kullanıcı253751

"Eğer iş kurallarından biri, ABD devlet tahvili fiyatlarını varsayılan olarak 32nci notasyonda gösterecekse (aynı zamanda, kullanıcının bunu yapılandırması için bir kullanıcı arayüzü sağlarken), sunum mantığının en azından bu kuralı var olduğunu bilmesi gerekir" hayır, hayır ve bazıları söylememeliydi diyecekti. Kullanıcı Arabirimi, iş mantığını (veya muhtemelen daha büyük olasılıkla modeli, ancak ...) hangi dizgiyi görüntülemek için görüntülemek için yalnızca bir etiket / metin kutusu / pencere bileşenine sahip olabilir.
Joshua Drake

Yanıtlar:


27

Oyunlarda veya grafiksel olarak yoğun uygulamalarda fazla deneyimim olmadığı için, size CRUD uygulamalarıyla ilgili bazı ipuçları vereceğim :

  • İşletme mantığı genellikle, işletme sahibinin yıllarca süren çalışma sırasında öğrendiği veya karar verdiği kuralları içerir ; örneğin: "sonuncusu henüz ödemeyi bitirmediyse yeni kredileri reddet" veya "kahvaltı satmıyoruz" son 11 , " veya " pazartesi ve salı günleri, müşteriler bir tane fiyatına iki pizza alabilir " .
  • Elbette sunum katmanı, indirimin kullanılabilirliğini veya reddedilen bir kredinin nedenini belirten bir mesaj göstermelidir, ancak bu katman bu şeylere karar vermez, yalnızca kullanıcıya başlık altında gerçekleşen bir şeyle iletişim kurar.
  • İş mantığı genellikle bir iş akışını içerir , örneğin: "bu öğe bir yönetici tarafından 3 iş günü içerisinde onaylanmalı veya müşteri gerekli belgeleri sunmazsa," bilgi isteme "aşamasına getirilmelidir", sonra madde reddedilir " .
  • Sunu katmanı genellikle bu tür iş akışlarıyla ilgilenmez, yalnızca iş akışının durumlarını yansıtır.
  • Ayrıca, veri erişim katmanı genellikle basittir çünkü kararlar zaten işletme mantığı tarafından alınmaktadır. Bu katman, verilerinizi MS SQL Server'dan Oracle'a aktarmaya karar verdiğinizde etkilenir.
  • Bazen GUI, sunucuya yapılan aramalardan kaçınmak için bazı onaylamalar yapar, ancak bu mantıklı bir şekilde yapılması gereken bir şeydir veya bu katman içinde çok fazla iş mantığı olabilir.
  • Kafanızdaki karışıklıkların çoğu, başvurunuzda endişelerin ayrılmaması ve etkili bir şekilde sunum katmanında çok fazla iş mantığına sahip olmanızdan kaynaklanmış olabilir. Uygulama katmanınızda ya da veri erişim katmanınızda (yanlış) iş mantığına sahip olmanız iş mantığını hiçbir şekilde değiştirmez.
  • Metrik sistemde mil / metre / feet yerine mesafeleri göstermek gibi şeyler sunum mantığı değildir, iş mantığıdır . İş katmanı verileri gerekli birimler halinde geri döndürmeli ve sunum katmanına uygun etiketleri göstermek için hangi birimleri kullandığını söylemelidir, ancak bu kesinlikle bir iş mantığı konusudur.
  • İş mantığı , Postgres yerine şimdi Oracle kullanıyor olmanızdan veya şirketin logosunu veya stil sayfasını değiştirmesinden etkilenmemelidir .
  • Bir uygulama yazarak otomatikleştirip yönetmemek iş kuralları vardır . Kalem ve kağıt gibi düşük teknolojili bir çözüm kullanıyor olsalar bile zorlanabilirler.
  • Masaüstü uygulamanızın mobil bir sürümüne veya bir web sürümüne sahipseniz, bu sürümlerin her birinin farklı bir sunum katmanı vardır (umarım) aynı iş katmanı.

5

İşinizin çoğu kullanıcı arayüzü katmanında olabilir. İşletme nedenlerinden dolayı ekran formatını değiştirmek, herhangi bir işletme mantığı anlamına gelmez. Değişiklik, görüntüleme mantığındaki bir değişikliktir.

Biçimi değiştirebilmek, muhtemelen tercihin sürekliliğini içeren bazı iş mantığı anlamına gelir.

Biçimlendirmeye bir çerezin devam etmesi, görünüm katmanında da uygulanabilir.

Ancak, bu bir MVC şeklinde uygulanabilir. (Bazı modeller görünümü tercihlerle başa çıkabilen kendi MVC'si olarak uygular.)

  • Kullanıcının tercihi model tarafından saklanabilir (veritabanı / çerez).
  • Denetleyici, kullanıcının modeldeki tercihini değiştirerek istekleri biçimlendirmeye tepki verirdi.
  • Görünüm, kullanıcının tercihine göre ayarlanacaktır. Tercih modelden talep edilebilir veya kontrol cihazı tarafından sağlanabilir.

Başvurunuz hakkında bilinçli bir tahmin yapmak.

  • Mevcut tahviller ve bunlar için fiyatlandırma verilerini içeren bir model var.
  • Kullanıcının yapabileceği çeşitli şeyleri görmesine izin veren bir görünüm vardır: tahviller aramak, fiyatları görüntülemek, verimleri karşılaştırmak, siparişleri almak ve talebe cevap olarak iş modelinin döndürdüğü sonuçları gösteren.
  • İş mantığı aşağıdakileri gerçekleştirir:

    • Bir arama yapmak ve görünümün görüntülenmesini sağlamak.
    • Tahvil için fiyat bulmak ve görüntülemek için görünüm sağlamak.
    • Verimleri karşılaştırmak ve görüntülemek için görünüm için veri sağlamak.
    • Siparişlerin işlenmesi ve modelde saklanması.

Bu doğru yapılırsa, model veya işletme mantığını değiştirmeden çoklu görünüm bileşenleri sağlamak mümkün olmalıdır. Örneğin, mevcut tasarım bir web sitesiyse, bir iPhone veya Android uygulaması için yeni bir görüntüleme sunucusu mevcut modeli ve işletme mantığını kullanır. Bunlar, bir sipariş gerçekleştiğinde anında bildirimler sağlamak için birden fazla katmanda değişiklik gerektirebilecek yeni iş işlevselliği sağlayabilir.

Bu arıza endişelerin ayrılmasını sağlar.

  • Model tarafından temsil edilen veri katmanı nispeten kararlı olma eğilimindedir.
  • İş katmanı, iş kararlarının uygulandığı yerdir: Talep yerine getirilebilir mi? Gerekli tüm veriler elde edildi mi? Kullanıcı yetkili mi? İşlemde kırmızı bayrak var mı?
  • Görünüm katmanı daha az kararlı olma eğilimindedir ve birden fazla olabilir. Uygulamanın görünüşü ve dokunuşunun bulunduğu yer burasıdır. Diğer katmanlar değiştirilmeden bir uygulamanın tamamen tekrar kaplanması mümkündür.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.