Makale Özeti

Bu makalede ASP.NET AJAX uygulamalarıyla ilgili olarak; klasik bir uygulamanın AJAX uygulamasına nasıl çevrileceği, AJAX Extension kurulu olmayan bir sunucuda AJAX sayfalarının nasıl çalıştırılacağı gibi sıklıkla karşılaşılan bazı sorunları ele alıp, bu sorunları nasıl çözebileceğimize değineceğiz.

Makale

AJAX uygulama modeli, her geçen gün uygulamalarda daha da sık kullanılır hale geliyor. ASP.NET uygulama geliştiricileri olarak bizler de Microsoft’un ücretsiz sunmuş olduğu AJAX kütüphanesi olan ASP.NET AJAX’ı projelerimizde kullanarak, daha persormanslı ve zengin uygulamalar geliştirebiliyoruz. ASP.NET AJAX uygulamaları geliştirirken elbetteki bazı durumlarda sıkıntılar, sorunlar yaşanabilecektir. Bu yazıda bu nitelikteki bazı sorunları ve hataları ele alarak bu durumlarda ne gibi çıkış yollarına başvurabileceğimize değineceğiz.

ASP.NET AJAX uygulamalarının sunucuya taşınmasında, klasik uygulamaların ASP.NET AJAX uygulaması haline getirilmesinde ve bazı ASP.NET kontrollerinin UpdatePanel içerisinde kullanılmasında çıkabilecek sorunlar ve bu sorunlar halinde ne gibi işlemler yapmamız gerekeceğini aşağıda detaylı şekilde ele alacağız.


ASP.NET AJAX desteği olmayan (AJAX Extension kurulu olmayan) bir sunucuda ASP.NET AJAX’ı nasıl çalıştırabilirim?

ASP.NET AJAX ile ilgili belki de en sık karşılaşılan sorulardan biri de şu: “Kendi bilgisayarımda ASP.NET AJAX projemi geliştirdim. Herşey gayet güzel çalışıyordu. Fakat sitemin bulunduğu sunucuya dosyaları yüklediğimde ‘Configuration Error’ vb. bazı hatalar alıyorum ve sayfalarımı çalıştıramıyorum”. Bu hatanın temel sebebi, sunucuda ASP.NET AJAX Extension v1.0’ın kurulu olmamasıdır.

ASP.NET AJAX’ın ATLAS sürümlerinde yapılan bir projenin kullanacağı assembly dosyaları projenin Bin dizinine atılıyor ve assembly dosyaları ile birlikte taşınan proje, bulunduğu tüm bilgisayarda sorunsuz bir şekilde çalışabiliyordu. ASP.NET AJAX v1.0 ile artık bir AJAX projesinin kullanacağı assembly dosyaları GAC(Global Assembly Cache) içerisine atıldığı için, projeye referans dosyası olarak eklemeler yapılmıyor ve projeniz GAC’daki dosyaları kullanıyor. Bu nedenle hazırlamış olduğunuz bir ASP.NET AJAX projesinin sunucuda veya başka bir bilgisayarda çalışabilmesi için, o bilgisayara ASP.NET AJAX Extension 1.0’ın kurulu olması gerekecektir. Sunucuda AJAX projelerini çalıştıramama gibi bir durumda yapılması gereken işlemler, projenize gerekli dll dosyalarını eklemek ve web.config dosyasında bazı değişiklikleri yapmak olacaktır.

- Öncelikli olarak projenize gerekli dll dosyalarını eklemeniz gerekecektir. ASP.NET AJAX dosyalarının kullandığı assembly dosyaları System.Web.Extension ve System.Web.Extension.Design dll dosyalarıdır. Bu dosyaları AJAX Extension kurulu bilgisayarınızdaki C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025 dizininde bulabilirsiniz. Projenize Bin isimli bir dizin oluşturmanız ve dll dosyalarını bu dizine eklemeniz gerekecektir.

- Daha sonra uygulamanızdaki web.config dosyasında bazı değişiklikler yapmanız gerekecek. web.config içerisindeki tanımlamaları dikkatli şekilde inceleyecek olursanız, tanımlamaların type özelliği içerisinde ...System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 şeklinde ifadeler bulunur. Bu ifadeler yapılacak olan işlemlerde kullanılacak assembly dosyasının GAC içerisinden okunacağını belirten ifadelerdir. web.config’deki bu ifadelerde yer alan Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 kısımlarını çıkarmanız gerekecektir. Aşağıdaki şekilde değişiklik yapılacak alanlar gri zemin üzerinde gösterilmiştir. Web.config içerisindeki bu alanlar ve aynı tanımlamaların geçtiği diğer alanlarda değişiklik yapmak gerekecektir.


web.config dosyasında gerekli değişikliklerin yapılması

type kısımlarında yapacağınız bu değişikliklerden sonra artık projeniz Bin dizinindeki dll dosyalarını kullanacaktır. Projenizle birlikte bu dll dosyalarını da sunucuya atacak olursanız projeniz sorunsuz bir şekilde çalışacaktır.


Daha önceden geliştirilmiş ASP.NET 2.0 uygulamasında nasıl ASP.NET AJAX kullanabilirim?

Daha önceden geliştirilmiş bir ASP.NET 2.0 projesini AJAX’a geçirmek karşımıza çıkabilecek ihtiyaçlardan biridir. Böyle bir durumda yapılması gereken iki işlem var. Birincisi web.config dosyası içerisindeki gerekli değişiklikleri yapmak, ikincisi ise uygulama içerisinde AJAX kullanılacak sayfalara ScriptManager ve UpdatePanel gibi AJAX kontrollerin eklenmesi olacaktır.

- web.config dosyasında değişiklik yapabilmek için öncelikle bir ASP.NET AJAX uygulamasındaki web.config dosyasına ihtiyacımız olacaktır. Eğer klasik uygulamanızdaki web.config dosyası içerisinde hiç değişiklik yapmadıysanız (yani uygulama ilk açıldıktan sonra web.config dosyasına herhangi bir ekleme-çıkarma veya değişiklik yapmadıysanız), yapılacak işlem oldukça basit olacaktır: ASP.NET AJAX uygulamanızdan aldığınız web.config dosyasını aynen klasik uygulamanıza eklemek. Eğer klasik uygulamnızdaki web.config dosyasında değişiklikler yaptıysanız, ASP.NET AJAX projesindeki web.config’den

   - <configSections></configSections>
   - <pages></pages> kısmı içerisindeki <controls></controls>
   - <compilation></compilation> kısmı içerisindeki <assemblies></assemblies>
   - <httpHandlers></httpHandlers>
   - <httpModules></httpModules>
   - <system.web.extensions></system.web.extensions>
   - <system.webServer></system.webServer>

kısımlarını uygulamanızın web.config dosyası içerisindeki uygun alanlara eklemeniz gerekecektir. Buradaki kısımların hiyerarşik olarak belirli bir düzene sahip olması gerekeceği için bazı düzenlemeler yapmak gerekebilir. Örneğin <configSections> düğümünün, <configuration> kısmındaki ilk düğüm olması zorunlu olacaktır. Bu tip hataları derleme zamanında veya ilk çalıştırma anında alacağımız için kolayca düzeltebiliriz. Böylece uygulamanızda ASP.NET AJAX ile ilgili ayarlamaları gerçekleştirmiş olacaksınız.

- ASP.NET AJAX Extension’larını kullanmak istediğiniz sayfalara ScriptManager, UpdatePanel, UpdateProgress gibi kontrolleri ekleyerek sayfalarınızda artık AJAX’ı sorunsuz bir şekilde kullanabilirsiniz.


Daha önceden geliştirdiğim bir ASP.NET 1.0 veya 1.1 uygulamasında ASP.NET AJAX’ı kullanabilir miyim?

ASP.NET AJAX Extension, ASP.NET’in sadece 2.0 versiyonu ile kullanılabilir bir yapı olduğu için, önceki ASP.NET sürümlerinde ASP.NET AJAX’ın kullanılması mümkün değildir. 1.0 ve 1.1 sürümleri ile geliştirilmiş projelerde .NET Framework için hazırlanmış olan AJAX.NET isimli ücretsiz AJAX kütüphanesini kullanabilirsiniz. (AJAX.NET için http://ajax.schwarz-interactive.de adresinden bilgi alabilirsiniz)


ASP.NET AJAX uygulamalarında FileUpload, Login ve WebParts kontrolleri gibi kontrolleri çalıştıramadım? Sorun neden kaynaklanıyor?

ASP.NET AJAX, ASP.NET kontrolleri ile uyumlu bir şekilde çalışsa da desteklemediği bazı kontroller de vardır. Bu kontroller asenkron mimari ile uyumlu çalışamayacağı için, bir UpdatePanel içerisinde de düzgün şekilde kullanılamayacaktır. FileUpload, TreeView, Menu kontrolleri, Login kontrolleri ve Web Part kontrolleri AJAX uygulamalarında düzgün bir şekilde kullanılamamaktadır. Yine GridView ve DetailsView kontrolleri de bazı durumlarda UpdatePanel içerisinde düzgün şekilde kullanılamayacaktır. GridView kontrolünün EnableSortingAndPagingCallbacks değerini True ve DetailsView kontrolünün EnablePagingCallbacks değerini True olarak değiştirmeniz durumunda bu kontroller kendi Callback özelliklerini kullanarak güncellenecek ve UpdatePanel içerisinde kısmi güncelleme gerçekleşmeyecektir. Bu değerleri değiştirmezseniz, yani varsayılan değerleri olan False değerlerini taşırlarsa UpdatePanel’iniz düzgün bir şekilde çalışacaktır.