Monthly Archives: March 2011

Web uygulamalarında Mobile Cihaz Kontrolü

Geçtiğimiz günlerde jQuery ve Mobil Web Uygulamaları internet seminerinde, mobile web uygulamalarını nasıl geliştirebileceğimizi incelemeye çalışmıştık. Yapılan bu çalışmadan sonrasında Yazgelistir forumunda  Mobil telefon tespit ve yönlendirmebaşlığı altında, konu ile ilgili bir soru sorulmuştu. Bu yazımda söz konusu problemi nasıl çözebileceğimiz inceleyeceğiz.

Problem çözüm için yeni bir solution oluşturalım. Oluşturmuş olduğumuz solution ‘na ASP.Net WebForm(uygulamanın kolay anlaşılması açısından ASP.Net WebForm kullanacağız.) ve Class Library projeleri oluşturalım. Class Library projesi içerisine IsMobileWeb isimli bir sınıf ekleyelim. Eklemiş olduğumuz sınıfı, Web uygulamasından istem yapan cihazın Mobile olup/olmadığını kontrol edecektir.

 namespace IsMobileDevices.MobileWebLib
{
using System.Web;
    public class IsMobileWeb
{
public static bool IsMobileBrowser()
{
///Geçerli HttpContext nesnesini aldık.
HttpContext context = HttpContext.Current;///HttpContext nesnesi üzerinde bulunan fonksiyon kullanımı
///Bazen çalışmıyor.
if (context.Request.Browser.IsMobileDevice)
{
return true;
}

///Uygulamadan isteme yapaman cihazın HTTP_X_WAP_PROFILE
///Header bilgisini kontrolü yapılıyor.
if (context.Request.ServerVariables[“HTTP_X_WAP_PROFILE”] != null)
{
return true;
}

///Web isteminde HTTP_ACCEPT header var olup/olmadığı
///kontrol ediliyor.
///Eğer söz konusu header var ise wap olup/olmadığını
///kontrol ediyor.
if (context.Request.ServerVariables[“HTTP_ACCEPT”] != null &&
context.Request.ServerVariables[“HTTP_ACCEPT”]
.ToLower().Contains(“wap”))
{
return true;
}

///Son olarak HTTP_USER_AGENT header bilgisi kontrol ediliyor.
if (context.Request.ServerVariables[“HTTP_USER_AGENT”] != null)
{
///Piyasada bulunan bilinen ve kullanıcıların tükettiği
///tüm mobile cihazlar, dizi oluşturuyoruz.
string[] mobiles = new[]
{
“midp”, “j2me”, “avant”, “docomo”,
“novarra”, “palmos”, “palmsource”,
“240×320”, “opwv”, “chtml”,
“pda”, “windows ce”, “mmp/”,
“blackberry”, “mib/”, “symbian”,
“wireless”, “nokia”, “hand”, “mobi”,
“phone”, “cdm”, “up.b”, “audio”,
“SIE-“, “SEC-“, “samsung”, “HTC”,
“mot-“, “mitsu”, “sagem”, “sony”
, “alcatel”, “lg”, “eric”, “vx”,
“NEC”, “philips”, “mmm”, “xx”,
“panasonic”, “sharp”, “wap”, “sch”,
“rover”, “pocket”, “benq”, “java”,
“pt”, “pg”, “vox”, “amoi”,
“bird”, “compal”, “kg”, “voda”,
“sany”, “kdd”, “dbt”, “sendo”,
“sgh”, “gradi”, “jb”, “dddi”,
“moto”, “iphone”
};

foreach (string s in mobiles)
{
///Hazırladığımız dizi kullanarak HTTP_USER_AGENT
///header içerisinde bizim olabileceğini
///düşündüümüz mobile cihazları
///kontrol ediliyor.
if (context.Request.ServerVariables[“HTTP_USER_AGENT”]
.ToLower().Contains(s.ToLower()))
{
return true;
}
}
}

///Eğer bu noktaya kadar true dönemdi ise, Web istemi
///Mobile cihaz dışında istem yapılmıştır.
return false;
}
}
}

Web uygulamamıza mobile istemleri denetleyecek olan sınıfı oluşturduk. Hazırlamış olduğumuzu sınıfı, uygulama içerisine dahil ederek uygulamamız denetleyelim. Söz konusu denetim işlemini Web uygulamamızın “Session_Start”  olayında gerçekleştireceğiz.

global-mobile-web

Not: Söz konusu durumda ASP.Net MVC uygulamasında da kullanabilmektedir. Web uygulamaların “Session_Start”  olayı uygulamaya yapılan istemin başlangıcında kullanıcının uygulama oturum nesnesini oluşması aşamasıdır. Aynı şekilde ASP.Net MVC üzerinde de kullanıldığında routing değişiminde istediğiniz Web alanına yönlendirebilirsiniz.

Hazırlamış olduğumuzu uygulama örneği ve bundan sonra yayınlayacağım yazılarımda kullanacağım örnek uygulamaları sizlerin daha kolay ulaşmanız adına bitbucket üzerinde bir repository oluşturdum.

Bu yazımda ASP.Net ile geliştirdiğimiz uygulamalarda yapılan mobile istemleri nasıl anlayabileceğimiz incelemeye çalıştık. Konu ile ilgili sorularınızı info@ibrahimatay.org eposta adresine gönderebilirsiniz.

IBRAHIM ATAY

Teşekkürler

Kaynak

http://www.codeproject.com

ASP.NET MVC Öğreniyorum – 17 (MVCContrib)

ASP.Net MVC uygulamalarımızda, ASP.Net WebForm da farklı olarak değişik gerekesimler bulunmaktadır. Serimizin bu görselinde ASP.Net MVC uygulamalarımızda işimizi kolaylaştıracak araçlarında biri olan MVCContrib inceleyeceğiz.

MVCContrib, ASP.Net MVC uygulamalarımızda birçok aşamada kolaylıklar sağlayacaktır. Özellikle extension,IoC gibi araçları işimizi çok kolaylaştıracaktır.

Alternatif Video Adresi:

https://vimeo.com/60922665

Görsel serimizin başlangıcında bulunduğumuz noktaya kadar çeşitli araçlar inceledik. Serimizin daha somut ilerlemesi adına BookStore(ASP.Net MVC Öğreniyorum Proje Uygulaması) uygulamasına başladık. Yayında bulunan görselimizden sonra BookStore uygulamamızın,Önemli kısmı olan Web ve Core katmanı üzerinde çalışacağız.

 

ASP.NET MVC Öğreniyorum – 16 (JQuery)

ASP.Net MVC ile Web Uygulamaları serisinin onaltıncı bölümü yayınlanmış bulunmaktadır.  Bu bölümde JavaScript ve JQuery hakkında bilgiler verilmiştir.

Çalışma sürecinde JQuery(1.5) kullanılmıştır.  Anlatımlarda kullanılmış olan, JQuery ve sürüm yenilikleri ile ilgili olarak bağlantıdaki adresi incelemenizi tavsiye ederim.

Alternatif Video Adresi:

https://vimeo.com/60922666

Konu ile ilgili sorularınızı info@ibrahimatay.org eposta adresine yöneltebilirsiniz.

ASP.Net MVC ve Dynamic Data Kardeşliği

İş uygulamaları, kullanıcı isteklerine bağlı olarak sürekli değişim göstermektedir. Yapılan değişiler çoğunlukla veritabanında bulunan tablolarla ilişkili olarak, yeni alan eklenmesi ya da çıkarılması şeklinde olmaktaydı. .Net Framework 3.5 Service Pack 1 ile konu ile ilgili bir dizi yenilik gelmişti. Bu yeniliklerin başında ASP.NET Dynamic Data bulunmaktaydı.

ASP.Net Dynamic Data ile LinqToSQL ya da Entity Framework araçların herhangi birini yardımı ile veritabanı yapısını, uygulama tarafında oluşturmamız ve Dynamic Data tanıtmamız gerekiyordu. Yapılan bu işlem sonucunda veritabanında var olan tablo yapısına karşılık, dinamik olarak kayıt ekleme,sileme ve güncelleme alanları oluşturulmaktaydı.Bu yazımda ise,Dynamic Data özelliklerin ASP.Net MVC ile nasıl kullanabileceğimizi inceleyeceğiz.

Not: ASP.Net Dynamic Data konusu ile ilgili ayrıntılı bilgi için bağlantıyı inceleyebilirsiniz.

Örnek uygulamamıza başlamadan önce, uygulamamızda kullanacağımız nitelik bildirimlerinde bahsedelim. Dynamic Data özelliklerini ASP.Net MVC de kullanmak için UIHint ve Display niteliğini kullanmaktayız. UIHint nesnesi hazırladığımız kontrolleri, çalışmakta olduğumuz View içerisine çağırmamızı sağlamaktadır. Display niteliği ise, görünüm ile ilgili özellikleri düzenlememiz sağlamaktadır. Örnek vermek gerekir ise, Name parametresi ile html formu içerisinde, görünecek olan alan adı olarak görünmektedir.

usingSystem;

usingSystem.ComponentModel.DataAnnotations;

 

public class Person

{

    public intID { get; set; }

 

    [Display(Name = “Ad & Soyad”), Required]

    public stringName { get; set; }

 

    [Display(Name = “Yaş”), Required]

    [UIHint(“DatePicker”)]

    public DateTimeAge { get; set; }

 

    [Display(Name = “Biyografi”)]

    [UIHint(“HtmlEditor”), Required]

    public stringBio { get; set; }

}

Söz konusu Dynamic Data özelliği kullanmak için kullanacağımız kontrolleri oluşturmamız gerekmektedir. Oluşturacağımız kontrollerin Shared klasörü altına EditorTemplate isimli oluşturacağımı klasör içerinde barındıracağız. EditorTemplate isimli klasör içerisine DatePicker ve HtmlEditor isimli iki Web kontrol ekleyelim.

image

Sınıf içerisinde tanımlamış olduğumuz property‘i  hazırladığımız kontroller ile nitelendirmek için UIHint  attribute kullanır. kullanmış olduğumuz UIHint attribute kullanımı ile ilgili örnek vermek gerekir ise,  UIHint(“kontrol ismi”)  şeklinde kullanılmaktadır.

Örnek uygulamamızda kullanmış olduğumuz DatePicker kontrollünü inceleyecek olursak; kontrol içerisinde TextBox nesnesi tanımlıdır. Tanımlı olan TextBox nesnesi, Model nesnesi ile UIHint nitelendirmesi yapılan property eşlenmesini sağlamaktadır.

<%@ Control Language=”C#” Inherits=”System.Web.Mvc.ViewUserControl” %>

<link href=”../../../Scripts/datepicker/jquery-ui-1.8.10.custom.css” rel=”stylesheet” type=”text/css” />

<link href=”../../../Scripts/datepicker/jquery.ui.datepicker.css” 

                         rel=”stylesheet” type=”text/css” />

<link href=”../../../Scripts/datepicker/jquery.ui.theme.css” 

                       rel=”stylesheet” type=”text/css” />

<script src=”../../../Scripts/datepicker/jquery-ui-1.8.10.custom.min.js” type=”text/javascript”></script>

 

<script type=”text/javascript”>

      $(function() {

          $(“.datePicker”).datepicker();

      });

</script>

 

<%=Html.TextBox(“”, Model, new{ @class = “datePicker”}) %>

 

Bu noktaya kadar, sınıf içerisinde bildirimlerimizi gerçekleştirdik ve Web kontrollümüzü tasarladık. Yaptığımız işlemler sonucunda sınıfın oluşum(Create) ile ilgili View istendiğinde Yaş alnında işimizi kolaylaştıracak bir DatePicker aracı bizi karşılayacaktır. Şimdi uygulamamızı test edelim.

applicationtest

Bu yazımda .Net Framework 3.5 Service Pack 1 ile kullanıcılara sunulan Dynamic Data yapısını ASP.Net MVC tabanında nasıl kullanabileceğimizi inceledik. Konu ile ilgili örnekleri aşağıdaki bağlantıdan edinebilirsiniz.(Örnekler Razor ve WebForm View Engine kullanılarak hazırlanmıştır.)Konu ile ilgili sorularınızı info@ibrahimatay.org eposta adresine sorabilirsiniz.

IBRAHIM ATAY

Teşekkürler

jQuery ile ASP.NET Uygulamaları Geliştirme Internet Semineri Notları

Geçtiğimiz günlerde gerçekleştirmiş olduğum jQuery ile ASP.NET Uygulamaları Geliştirme internet seminerinde ASP.Net uygulamalarında JQuery kullanımı ve kolaylıklarından bahsetmeye çalışmıştım. Bu yazımla internet seminerinde kullananmış olduğum sunumu sizler ile paylaşmaktayım.

JQuery, Web tabanlı uygulamamalarında JavaScript kod yazımını en makul hale getiren bir araçtır. Eğer Web uygulaması geliştiriyor ya da bu konuda kendinizi geliştirmek istiyorsanız, eğitim listenize JQuery de koymayı unutmayın.

IBRAHIM ATAY

Teşekkürler