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.
Ş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.
Ş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.