Share via


ClickOnce uygulamalarında yerel ve uzak veri erişimi

Çoğu uygulama veri tüketir veya üretir. ClickOnce, verileri hem yerel hem de uzaktan okumak ve yazmak için çeşitli seçenekler sunar.

Yerel Veriler

ClickOnce ile aşağıdaki yöntemlerden herhangi birini kullanarak verileri yerel olarak yükleyebilir ve depolayabilirsiniz:

  • ClickOnce Veri Dizini

  • Yalıtılmış Depolama

  • Diğer Yerel Dosyalar

ClickOnce veri dizini

Yerel bilgisayara yüklenen her ClickOnce uygulamasının, kullanıcının Belgeler ve Ayarlar klasöründe depolanan bir veri dizini vardır. ClickOnce uygulamasında bulunan ve "veri" dosyası olarak işaretlenmiş tüm dosyalar, bir uygulama yüklendiğinde bu dizine kopyalanır. Veri dosyaları, metin, XML ve Microsoft Access .mdb dosyaları gibi veritabanı dosyaları olarak en sık kullanılan herhangi bir dosya türünde olabilir.

Veri dizini, uygulamanın açıkça depoladığı ve koruduğu veriler olan uygulama tarafından yönetilen verilere yöneliktir. Uygulama bildiriminde "veri" olarak işaretlenmemiş tüm statik, bağımlılıksız dosyalar bunun yerine Uygulama Dizininde bulunur. Bu dizin, uygulamanın yürütülebilir (.exe) dosyalarının ve derlemelerinin bulunduğu dizindir.

Not

ClickOnce uygulaması kaldırıldığında, Veri Dizini de kaldırılır. Belgeler gibi son kullanıcı tarafından yönetilen verileri depolamak için Asla Veri Dizini'ni kullanmayın.

ClickOnce dağıtımında veri dosyalarını işaretleme

Var olan bir dosyayı Veri Dizini'ne yerleştirmek için, var olan dosyayı ClickOnce uygulamanızın uygulama bildirim dosyasında veri dosyası olarak işaretlemeniz gerekir. Daha fazla bilgi için bkz . Nasıl yapılır: ClickOnce uygulamasına veri dosyası ekleme.

Veri dizininden okuma ve veri dizinine yazma

Veri Dizininden okuma, ClickOnce uygulamanızın Okuma izni istemesini gerektirir; benzer şekilde, dizine yazmak için Yazma izni gerekir. Tam Güven ile çalışacak şekilde yapılandırılmışsa uygulamanız otomatik olarak bu izne sahip olur. İzin Yükseltme veya Güvenilen Uygulama Dağıtımı kullanarak uygulamanızın izinlerini yükseltme hakkında daha fazla bilgi için bkz . Güvenli ClickOnce uygulamaları.

Not

Kuruluşunuz Güvenilen Uygulama Dağıtımı kullanmıyorsa ve İzin Yükseltmeyi kapattıysa, izin onaylama başarısız olur.

Uygulamanız bu izinlere sahip olduktan sonra içindeki sınıflarda yöntem çağrılarını kullanarak Veri Dizinine System.IOerişebilir. Bir Windows Forms ClickOnce uygulaması içindeki Veri Dizini'nin yolunu, özelliğinde CurrentDeploymentApplicationDeploymenttanımlanan özelliğini kullanarak DataDirectory elde edebilirsiniz. Bu, verilerinize erişmenin en kullanışlı ve önerilen yoludur. Aşağıdaki kod örneği, dağıtımınıza veri dosyası olarak eklediğiniz CSV.txt adlı bir metin dosyası için bunun nasıl yapılacağını gösterir.

Not

ApplicationDeployment Ad alanı içindeki System.Deployment.Application sınıf ve API'ler .NET Core ve .NET 5 ve sonraki sürümlerde desteklenmez. .NET 7'de, uygulama dağıtım özelliklerine erişmek için yeni bir yöntem desteklenir. Daha fazla bilgi için bkz . .NET'te ClickOnce dağıtım özelliklerine erişme. .NET 7, ApplicationDeployment yöntemlerinin eşdeğerini desteklemez.

if (ApplicationDeployment.IsNetworkDeployed)
{
    try
    {
        using (StreamReader sr = new StreamReader(ApplicationDeployment.CurrentDeployment.DataDirectory + @"\CSV.txt"))
        {
            MessageBox.Show(sr.ReadToEnd());
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Could not read file. Error message: " + ex.Message);
    }
}

Dağıtımınızdaki dosyaları veri dosyaları olarak işaretleme hakkında daha fazla bilgi için bkz . Nasıl yapılır: ClickOnce Uygulamasına Veri Dosyası Ekleme.

Ayrıca, sınıfındaki LocalUserAppDataPathgibi ilgili değişkenleri Application kullanarak veri dizini yolunu da elde edebilirsiniz.

Diğer dosya türlerini düzenlemek için ek izinler gerekebilir. Örneğin, access veritabanı (.mdb) dosyası kullanmak istiyorsanız, uygulamanızın ilgili <xref:System.Data> sınıflarını kullanabilmesi için tam güven onaylaması gerekir.

Veri dizini ve uygulama sürümleri

Bir uygulamanın her sürümü, diğer sürümlerden yalıtılmış kendi Data Directory'sine sahiptir. ClickOnce, uygulamanın çalışma zamanında yeni veri dosyaları oluşturmak için bir konuma sahip olması için dağıtıma herhangi bir veri dosyası eklenip eklenmediğine bakılmaksızın bu dizini oluşturur. Bir uygulamanın yeni bir sürümü yüklendiğinde ClickOnce, önceki sürümün Veri Dizinindeki tüm mevcut veri dosyalarını, özgün dağıtıma dahil edilmiş veya uygulama tarafından oluşturulmuş olsunlar, yeni sürümün Veri Dizinine kopyalar.

ClickOnce, bir veri dosyasının uygulamanın eski sürümündeki karma değeri yeni sürümde olduğu gibi farklıysa, dosyanın eski sürümünü sunucunun daha yeni sürümüyle değiştirir. Ayrıca, uygulamanın önceki sürümü yeni sürümün dağıtımında yer alan bir dosyayla aynı ada sahip yeni bir dosya oluşturduysa, ClickOnce yeni dosyayla eski sürümün dosyasının üzerine yazar. Her iki durumda da, uygulamanın eski verilere geçiş amacıyla erişmeye devam edebilmesi için eski dosyalar adlı .preveri dizininin içindeki bir alt dizine eklenir.

Verilerin daha ayrıntılı geçişine ihtiyacınız varsa, eski Veri Dizininden yeni Veri Dizinine özel geçiş yapmak için ClickOnce Dağıtım API'sini kullanabilirsiniz. kullanarak IsFirstRunkullanılabilir bir indirmeyi test etmek için veya UpdateAsynckullanarak Update güncelleştirmeyi indirmeniz ve güncelleştirme tamamlandıktan sonra kendi özel veri geçiş çalışmalarınızı yapmanız gerekir.

Yalıtılmış depolama

Yalıtılmış Depolama, basit bir API kullanarak dosya oluşturmaya ve dosyalara erişmeye yönelik bir API sağlar. Depolanan dosyaların gerçek konumu hem geliştiriciden hem de kullanıcıdan gizlenir.

Yalıtılmış Depolama.NET Framework'ün tüm sürümlerinde çalışır. Yalıtılmış Depolama, ek izin vermelerine gerek kalmadan kısmen güvenilen uygulamalarda da çalışır. Uygulamanızın kısmi güven içinde çalışması, ancak uygulamaya özgü verileri koruması gerekiyorsa Yalıtılmış Depolama kullanmanız gerekir.

Daha fazla bilgi için bkz. Yalıtılmış Depolama.

Diğer yerel dosyalar

Uygulamanızın raporlar, görüntüler, müzik gibi son kullanıcı verileriyle çalışması veya bu verileri kaydetmesi gerekiyorsa, uygulamanızın yerel dosya sistemine veri okuması ve yazması gerekir FileIOPermission .

Uzak veriler

Bir noktada uygulamanızın büyük olasılıkla uzak bir Web sitesinden müşteri verileri veya pazar bilgileri gibi bilgileri alması gerekecektir. Bu bölümde, uzak verileri almak için en yaygın teknikler ele alınmaktadır.

HTTP ile dosyalara erişme

Ad alanında veya sınıfını WebClient kullanarak bir Web sunucusundan HttpWebRequestSystem.Net verilere erişebilirsiniz. Veriler statik dosyalar veya ham metin veya XML verileri döndüren ASP.NET uygulamalar olabilir. Verileriniz XML biçimindeyse, verileri almanın en hızlı yolu, Load yöntemi bir URL'yi bağımsız değişken olarak alan sınıfını kullanmaktırXmlDocument. Örnek için bkz . DOM'da XML belgesi okuma.

Uygulamanız HTTP üzerinden uzak verilere eriştiğinde güvenliği göz önünde bulundurmanız gerekir. Varsayılan olarak, ClickOnce uygulamanızın ağ kaynaklarına erişimi, uygulamanızın nasıl dağıtıldığına bağlı olarak kısıtlanabilir. Bu kısıtlamalar, kötü amaçlı programların ayrıcalıklı uzak verilere erişmesini veya ağdaki diğer bilgisayarlara saldırmak için kullanıcının bilgisayarını kullanmasını önlemek için uygulanır.

Aşağıdaki tablo, kullanabileceğiniz dağıtım stratejilerini ve bunların varsayılan Web izinlerini listeler.

Dağıtım türü Varsayılan ağ izinleri
Web Yüklemesi Yalnızca uygulamanın yüklendiği Web sunucusuna erişebilir
Dosya Paylaşımı Yükleme Hiçbir Web sunucusuna erişilemiyor
CD-ROM Yükleme Herhangi bir Web sunucusuna erişebilir

ClickOnce uygulamanız güvenlik kısıtlamaları nedeniyle bir Web sunucusuna erişemiyorsa, uygulamanın bu Web sitesi için onay vermesi WebPermission gerekir. ClickOnce uygulamasının güvenlik izinlerini artırma hakkında daha fazla bilgi için bkz . Güvenli ClickOnce uygulamaları.

XML Web hizmeti aracılığıyla verilere erişme

Verilerinizi XML Web hizmeti olarak kullanıma sunarsanız, bir XML Web hizmeti ara sunucusu kullanarak verilere erişebilirsiniz. Proxy, Visual Studio kullanarak oluşturduğunuz bir .NET Framework sınıfıdır. XML Web hizmetinin müşterileri alma, sipariş alma vb. işlemleri, ara sunucuda yöntemler olarak kullanıma sunulur. Bu, Web hizmetlerinin kullanımını ham metin veya XML dosyalarına göre çok daha kolay hale getirir.

XML Web hizmetiniz HTTP üzerinden çalışırsa, hizmet ve HttpWebRequest sınıflarıyla aynı güvenlik kısıtlamalarına WebClient tabi olur.

Veritabanına doğrudan erişme

Ağınızdaki SQL Server gibi bir veritabanı sunucusuyla doğrudan bağlantılar kurmak için ad alanı içindeki System.Data sınıfları kullanabilirsiniz, ancak güvenlik sorunlarını hesaba katmalısınız. HTTP isteklerinin aksine, veritabanı bağlantı istekleri varsayılan olarak kısmi güven altında her zaman yasaktır; Bu tür izinlere yalnızca ClickOnce uygulamanızı CD-ROM'dan yüklerseniz varsayılan olarak sahip olursunuz. Bu, uygulamanıza tam güven verir. Belirli bir SQL Server veritabanına erişimi etkinleştirmek için uygulamanızın bunu istemesi SqlClientPermission gerekir; SQL Server dışındaki bir veritabanına erişimi etkinleştirmek için isteğinde OleDbPermissionbulunmalıdır.

Çoğu zaman veritabanına doğrudan erişmeniz gerekmez, ancak bunun yerine ASP.NET veya XML Web hizmetinde yazılmış bir Web sunucusu uygulaması aracılığıyla erişeceksiniz. ClickOnce uygulamanız bir Web sunucusundan dağıtılıyorsa veritabanına bu şekilde erişmek genellikle en iyi yöntemdir. Uygulamanızın izinlerini yükseltmeden kısmi güven içinde sunucuya erişebilirsiniz.