Aracılığıyla paylaş


Kurumsal Uygulama Geliştirmeye Giriş

Not

Bu e-Kitap 2017 baharında yayımlanmıştır ve o zamandan beri güncelleştirilmemiştir. Kitapta değerli kalan çok şey var, ancak bazı malzemeler güncelliğini yitirmiş.

Platformdan bağımsız olarak, kurumsal uygulama geliştiricileri çeşitli zorluklarla karşı karşıya kalır:

  • Zaman içinde değişebilen uygulama gereksinimleri.
  • Yeni iş fırsatları ve zorluklar.
  • Geliştirme sırasında uygulamanın kapsamını ve gereksinimlerini önemli ölçüde etkileyebilecek sürekli geri bildirim.

Bunları göz önünde bulundurarak, zaman içinde kolayca değiştirilebilen veya genişletilebilen uygulamalar oluşturmak önemlidir. Uygulamanın tek tek bölümlerinin, uygulamanın geri kalanını etkilemeden bağımsız olarak geliştirilip yalıtılmış olarak test edilmesini sağlayan bir mimari gerektirdiğinden, bu tür bir uyarlanabilirliği tasarlamak zor olabilir.

Birçok kurumsal uygulama, birden fazla geliştirici gerektirecek kadar karmaşıktır. Birden çok geliştiricinin uygulamanın farklı parçaları üzerinde bağımsız olarak etkili bir şekilde çalışabilmesi için bir uygulama tasarlamaya karar vermek ve parçaların uygulamayla tümleştirildiğinde sorunsuz bir şekilde bir araya gelmesini sağlamak önemli bir zorluk olabilir.

Uygulama tasarlama ve derlemeye yönelik geleneksel yaklaşım, bileşenlerin aralarında net bir ayrım olmadan sıkı bir şekilde birleştirildiği monolitik bir uygulama olarak adlandırılan yöntemle sonuçlanır. Genellikle, bu monolitik yaklaşım, uygulamadaki diğer bileşenleri bozmadan hataları çözmek zor olabileceğinden ve yeni özellikler eklemek veya mevcut özellikleri değiştirmek zor olabileceğinden bakımı zor ve verimsiz uygulamalara yol açar.

Bu güçlükler için etkili bir çözüm, bir uygulamayı bir uygulamaya kolayca tümleştirilebilen ayrık, gevşek bir şekilde bağlanmış bileşenlere bölmektir. Böyle bir yaklaşım çeşitli avantajlar sunar:

  • Tek tek işlevlerin farklı kişiler veya ekipler tarafından geliştirilmesine, test edilmesine, genişletilmesine ve korunmasına olanak tanır.
  • Uygulamanın kimlik doğrulaması ve veri erişimi gibi yatay özellikleriyle uygulamaya özgü iş işlevleri gibi dikey özellikler arasındaki endişelerin yeniden kullanılmasını ve net bir şekilde ayrılmasını teşvik eder. Bu, uygulama bileşenleri arasındaki bağımlılıkların ve etkileşimlerin daha kolay yönetilmesini sağlar.
  • Farklı kişilerin veya ekiplerin uzmanlıklarına göre belirli bir göreve veya işlev parçasına odaklanmasına izin vererek rol ayrımının korunmasına yardımcı olur. Özellikle, kullanıcı arabirimi ile uygulamanın iş mantığı arasında daha temiz bir ayrım sağlar.

Ancak, bir uygulamayı ayrık, gevşek bir şekilde bağlanmış bileşenlere bölerken çözülmesi gereken birçok sorun vardır. Bu modüller şunlardır:

  • Kullanıcı arabirimi denetimleri ile bunların mantığı arasındaki endişelerin net bir şekilde nasıl ayrılacaklarına karar verme. Kurumsal uygulama oluştururken Xamarin.Forms alınan en önemli kararlardan biri, iş mantığını arka planda kod dosyalarına yerleştirmek veya uygulamayı daha sürdürülebilir ve test edilebilir hale getirmek için kullanıcı arabirimi denetimleriyle bunların mantığı arasında endişelerin temiz bir şekilde ayrılmasının gerekip gerekmediğidir. Daha fazla bilgi için bkz . Model-Görünüm-GörünümModeli.
  • Bağımlılık ekleme kapsayıcısı kullanılıp kullanılmayacağını belirleme. Bağımlılık ekleme kapsayıcıları, bağımlılıkları eklenmiş sınıfların örneklerini oluşturmak ve kapsayıcı yapılandırmasına göre yaşamlarını yönetmek için bir tesis sağlayarak nesneler arasındaki bağımlılık bağlamasını azaltır. Daha fazla bilgi için bkz . Bağımlılık Ekleme.
  • Platform arasında seçim yapmak, nesneye ve tür başvurularına göre bağlanması zor olan bileşenler arasında olay oluşturma ve gevşek bir şekilde bağlanmış ileti tabanlı iletişim. Daha fazla bilgi için bkz. Gevşek Bağlanmış Bileşenler Arasında İletişime Giriş.
  • Gezintinin nasıl çağrılacağı ve gezinti mantığının nerede bulunacağı dahil olmak üzere sayfalar arasında nasıl gezinileceğine karar verme. Daha fazla bilgi için bkz. Gezinti.
  • Doğruluğa yönelik kullanıcı girişini doğrulamayı belirleme. Karar, kullanıcı girişini doğrulamayı ve doğrulama hatalarını kullanıcıya bildirmeyi içermelidir. Daha fazla bilgi için bkz . Doğrulama.
  • Kimlik doğrulaması gerçekleştirme ve yetkilendirme ile kaynakların nasıl korunacaklarına karar verme. Daha fazla bilgi için bkz . Kimlik Doğrulaması ve Yetkilendirme.
  • Verileri güvenilir bir şekilde alma ve verileri önbelleğe alma dahil olmak üzere web hizmetlerinden uzak verilere erişmeyi belirleme. Daha fazla bilgi için bkz . Uzak Verilere Erişme.
  • Uygulamanın nasıl testine karar verme. Daha fazla bilgi için bkz . Birim Testi.

Bu kılavuz, bu sorunlarla ilgili rehberlik sağlar ve kullanarak Xamarin.Formsplatformlar arası kurumsal uygulama oluşturmaya yönelik temel desenlere ve mimariye odaklanır. Kılavuz, ortak Xamarin.Forms kurumsal uygulama geliştirme senaryolarını ele alarak ve Model-View-ViewModel (MVVM) deseni desteği aracılığıyla sunu, sunu mantığı ve varlıklarla ilgili endişeleri ayırarak uyarlanabilir, sürdürülebilir ve test edilebilir kod üretmeye yardımcı olmayı amaçlar.

Örnek Uygulama

Bu kılavuz, aşağıdaki işlevleri içeren çevrimiçi bir mağaza olan eShopOnContainers adlı örnek bir uygulamayı içerir:

  • Arka uç hizmetinde kimlik doğrulaması ve yetkilendirme.
  • Gömlekler, kahve bardakları ve diğer pazarlama ürünlerinden oluşan bir kataloğa göz atma.
  • Kataloğu filtreleme.
  • Katalogdaki öğeleri sıralama.
  • Kullanıcının sipariş geçmişini görüntüleme.
  • Ayarların yapılandırması.

Örnek Uygulama Mimarisi

Şekil 1-1 örnek uygulamanın mimarisine üst düzey bir genel bakış sağlar.

eShopOnContainers high-level architecture

Şekil 1-1: eShopOnContainers üst düzey mimarisi

Örnek uygulama üç istemci uygulamasıyla birlikte verilir:

  • ASP.NET Core ile geliştirilen bir MVC uygulaması.
  • Angular 2 ve Typescript ile geliştirilen Tek Sayfalı Uygulama (SPA). Web uygulamaları için bu yaklaşım, her işlemle sunucuya gidiş dönüş gerçekleştirmekten kaçınıyor.
  • ile Xamarin.Formsgeliştirilen ve iOS, Android ve Evrensel Windows Platformu (UWP) destekleyen bir mobil uygulama.

Web uygulamaları hakkında bilgi için bkz . ASP.NET Core ve Microsoft Azure ile Modern Web Uygulamaları Tasarlama ve Geliştirme.

Örnek uygulama aşağıdaki arka uç hizmetlerini içerir:

  • ASP.NET Core Identity ve IdentityServer kullanan bir kimlik mikro hizmeti.
  • EntityFramework Core kullanarak sql Server veritabanını kullanan veri odaklı oluşturma, okuma, güncelleştirme, silme (CRUD) hizmeti olan katalog mikro hizmeti.
  • Etki alanı odaklı tasarım desenleri kullanan etki alanı temelli bir hizmet olan bir sipariş mikro hizmeti.
  • Redis Cache kullanan veri temelli bir CRUD hizmeti olan sepet mikro hizmeti.

Bu arka uç hizmetleri, ASP.NET Core MVC kullanılarak mikro hizmetler olarak uygulanır ve tek bir Docker konağı içinde benzersiz kapsayıcılar olarak dağıtılır. Bu arka uç hizmetleri toplu olarak eShopOnContainers başvuru uygulaması olarak adlandırılır. İstemci uygulamaları, Temsili Durum Aktarımı (REST) web arabirimi aracılığıyla arka uç hizmetleriyle iletişim kurar. Mikro hizmetler ve Docker hakkında daha fazla bilgi için bkz . Kapsayıcılı Mikro Hizmetler.

Arka uç hizmetlerinin uygulanması hakkında bilgi için bkz . .NET Mikro Hizmetleri: Kapsayıcılı .NET Uygulamaları için Mimari.

Mobil Uygulama

Bu kılavuz, kullanarak Xamarin.Formsplatformlar arası kurumsal uygulamalar oluşturmaya odaklanır ve örnek olarak eShopOnContainers mobil uygulamasını kullanır. Şekil 1-2'de, daha önce açıklanan işlevselliği sağlayan eShopOnContainers mobil uygulamasındaki sayfalar gösterilmektedir.

The eShopOnContainers mobile app

Şekil 1-2: eShopOnContainers mobil uygulaması

Mobil uygulama, eShopOnContainers başvuru uygulaması tarafından sağlanan arka uç hizmetlerini kullanır. Ancak, arka uç hizmetlerini dağıtmaktan kaçınmak isteyenler için sahte hizmetlerden gelen verileri kullanacak şekilde yapılandırılabilir.

eShopOnContainers mobil uygulaması aşağıdaki Xamarin.Forms işlevleri kullanıyor:

  • XAML
  • Denetimler
  • Bağlamalar
  • Dönüştürücü
  • Stiller
  • Animasyonlar
  • Komutlar
  • Davranışlar
  • Tetikleyiciler
  • Etkiler
  • Özel Oluşturucular
  • MessagingCenter
  • Özel Denetimler

Bu işlevsellik hakkında daha fazla bilgi için belgelere Xamarin.Formsve ile Xamarin.FormsMobil Uygulama Oluşturma bölümüne bakın.

Ayrıca, eShopOnContainers mobil uygulamasındaki bazı sınıflar için birim testleri sağlanır.

Mobil Uygulama Çözümü

eShopOnContainers mobil uygulama çözümü, kaynak kodu ve diğer kaynakları projeler halinde düzenler. Tüm projeler, kaynak kodu ve diğer kaynakları kategoriler halinde düzenlemek için klasörleri kullanır. Aşağıdaki tabloda eShopOnContainers mobil uygulamasını oluşturan projeler özetlenmiştir:

Proje Açıklama
eShopOnContainers.Core Bu proje, paylaşılan kodu ve paylaşılan kullanıcı arabirimini içeren taşınabilir sınıf kitaplığı (PCL) projesidir.
eShopOnContainers.Droid Bu proje, Android'e özgü kodu barındırıyor ve Android uygulamasının giriş noktasıdır.
eShopOnContainers.iOS Bu proje iOS'a özgü kodu barındırıyor ve iOS uygulamasının giriş noktasıdır.
eShopOnContainers.UWP Bu proje Evrensel Windows Platformu (UWP) özel kodu barındırıyor ve Windows uygulamasının giriş noktasıdır.
eShopOnContainers.TestRunner.Droid Bu proje, eShopOnContainers.UnitTests projesi için Android test çalıştırıcısıdır.
eShopOnContainers.TestRunner.iOS Bu proje, eShopOnContainers.UnitTests projesi için iOS test çalıştırıcısıdır.
eShopOnContainers.TestRunner.Windows Bu proje, eShopOnContainers.UnitTests projesi için Evrensel Windows Platformu test çalıştırıcısıdır.
eShopOnContainers.UnitTests Bu proje, eShopOnContainers.Core projesi için birim testleri içerir.

eShopOnContainers mobil uygulamasındaki sınıflar, herhangi bir Xamarin.Forms uygulamada çok az değişiklikle veya hiç değişiklik yapmadan yeniden kullanılabilir.

eShopOnContainers.Core Projesi

eShopOnContainers.Core PCL projesi aşağıdaki klasörleri içerir:

Klasör Açıklama
Animasyonlar XAML'de animasyonların tüketilmesine olanak tanıyan sınıflar içerir.
Davranışlar Görünüm sınıflarına sunulan davranışları içerir.
Denetimler Uygulama tarafından kullanılan özel denetimleri içerir.
Dönüştürücü Bağlamaya özel mantık uygulayan değer dönüştürücüleri içerir.
Etkiler Belirli Entry denetimlerin EntryLineColorEffect kenarlık rengini değiştirmek için kullanılan sınıfını içerir.
Özel durumlar Özel ServiceAuthenticationExceptionöğesini içerir.
Uzantıları ve IEnumerable sınıfları için VisualElement uzantı yöntemlerini içerir.
Yardımcıları Uygulamanın yardımcı sınıflarını içerir.
Modeller Uygulamanın model sınıflarını içerir.
Properties bir .NET derleme meta veri dosyası içerir AssemblyInfo.cs.
Hizmetler Uygulamaya sağlanan hizmetleri uygulayan arabirimleri ve sınıfları içerir.
Tetikleyiciler XAML'de BeginAnimation animasyon çağırmak için kullanılan tetikleyiciyi içerir.
Doğrulamalar Veri girişini doğrulamaya dahil olan sınıfları içerir.
Görünüm Modelleri Sayfalara sunulan uygulama mantığını içerir.
Görünümler Uygulamanın sayfalarını içerir.
Platform Projeleri

Platform projeleri efekt uygulamaları, özel işleyici uygulamaları ve platforma özgü diğer kaynakları içerir.

Özet

Xamarin'in platformlar arası mobil uygulama geliştirme araçları ve platformları B2E, B2B ve B2C mobil istemci uygulamaları için kapsamlı bir çözüm sunarak tüm hedef platformlarda (iOS, Android ve Windows) kod paylaşma olanağı sağlar ve toplam sahip olma maliyetini düşürmeye yardımcı olur. Uygulamalar kendi kullanıcı arabirimini ve uygulama mantıksal kodunu paylaşırken yerel platform görünümünü ve hissini koruyabilir.

Kurumsal uygulama geliştiricileri, geliştirme sırasında uygulamanın mimarisini değiştirebilecek çeşitli zorluklarla karşı karşıya kalır. Bu nedenle, zaman içinde değiştirilebilmeleri veya genişletilebilmeleri için bir uygulama oluşturmak önemlidir. Bu tür bir uyarlanabilirlik için tasarım zor olabilir, ancak genellikle bir uygulamayı bir uygulamaya kolayca tümleştirilebilen ayrık, gevşek bir şekilde bağlanmış bileşenlere bölmeyi içerir.