cub-e.net

just coding...

Early ve Late Binding Arasındaki Farklar

Dynamics CRM 2011 içerisinde programcılar kendilerine birden fazla programlama biçimi seçebilirler. Dynamics CRM 4.0’da  WSDL kullanarak early-bound tipleri ve Dynamics Entity sınıflarını kullanarak da late-bound programlama yapabilirler.Plug-in ve Workflow yazabilmek için late-bound tipleri kullanmamız gerekmektedir. Bunlar yeni programlama modelleri ile değiştiler.

Dynamics CRM 4.0’da entity sınıflarının duruşu aşağıdaki şekildeki gibiydi;

Şimdi ise Dynamics CRM 2011’de bu yapı şu şekilde değişti;

DynamicEntity sınıfı artık Entity sınıfı isimli bir sınıfla yer değiştirdi. Bunun anlamı ise build time yani early bound tiplerle, runtime yani late bound tiplerin artık tek sınıftan türemesinin gerçekleşmiş olduğudur.

Dynamics CRM 2011’de artık WSDL’e direkt ulaşamıyoruz. Daha önceki makalemde de anlattığım gibi 2 tane dll’i referans olarak eklemek ve servise bağlantı kurmak gerekmektedir.

Late-Bound olarak isimlendiren mimaride siz Entity sınıfından bir nesne türetmeli ve bu nesnenin attribute collection’da da değerlere yer vermelisiniz. Tabii burada değer alanlarının crm içerisindeki logical name’lerini kesinlikle bilmeniz gerekmektedir.

Aşağıdaki örnek bize late-bindig yapısının nasıl işlediğini gösterecektir;


Entity
accountEntity = new Entity("account");

accountEntity["name"] = "Deneme Firmasi";

accountEntity["emailaddress1"] = "info@deneme.com";
Guid accountID = ioService.Create(accountEntity);


Entity sınıfını kullanmaya başladığımız zaman late-binding’e giriş yapmış oluyoruz. Entity türünden oluşturduğumuz nesneye biz Account türünden bilgileri içine dolduracağız diyoruz. Contact, Opportunity gibi CRM içerisindeki bütün nesneleri bu şekilde oluşturabiliriz.

Daha sonra ise alanların logical name’lerini vererek bunların değerleri veriyoruz. Burada .net tabanlı türleri kullanabilmekteyiz. CRM 4.0’da CrmBoolean, CrmNumber gibi türlere çeviriler yaparak nesnelerin içini doldururken artık buna ihtiyacımız bulunmamaktadır.

ioService isimli WCF tabanlı servisimizden türemiş nesnenin Create Metodunu kullanarak nesnemizi CRM içerisinde bir kayıt olarak oluşturuyoruz.




Early-Bound olarak isimlendirilen mimaride de ise CrmSvcUtil.exe aracını kullanarak bir OrganizationServiceContext türetmelisiniz. Daha sonra ise bu aracın türettiği nesneleri kullanabilir hale gelebilirsiniz. Tabii burada her bir nesnenin şema isimleriyle hareket ettiğimiz unutulmamalıdır.

Aşağıdaki örnek bize early-binding yapısının nasıl işlediğini gösterecektir;

CrmDataContext orgContext = new CrmDataContext(ServiseBaglan());

var contact = new Contact()

{

    FirstName = "Alan",

    LastName = "Smith"

};

orgContext.AddObject(contact);

orgContext.SaveChanges();


Burada ServiseBaglan() daha önceki makelemde belirttiğim gibi IorganizationService Interface’inden türemiş bir sınıfı teşkil  etmektedir. Yani CRM’in WCF servisine hazır ve açık bir bağlantıdır.

Contact ise CRM içerisinde kişiler entity’sidir, Account,Lead,Invoice,Quote gibi daha bir çok entity bulunmaktadır.

Firstname ve Lastname ise kişinin adı ve soyadı için değerleri temsil etmektedir  ve bu bilgi OrganizationContext’ten gelmektedir. Bir sonraki yazında CrmDataContext isimli bu OrganizationContext’in CrmSvcUtil.exe aracılığıyla nasıl oluşturulduğu göstereceğim.

Daha sonra ise bu doldurduğumuz contact nesnesini OrganizationContext’e teslim ediyoruz ve işlem yapılması için SaveChanges() metodumuzu çağırıyoruz.

Farklılıkları ise şu şekilde sıralayabiliriz;

·         Early-Bound Entity Sınıflarının en büyük avantajı compile time da bize bütün hataları göstermesidir. Yani uygulamamızı yazarken ya da derlerken türler arası uyumsuzluk ya da yanlış değer atama gibi bütün yanlışlıklarımızı gözler önüne sermektedir. 

·         CrmSvcUtil bize tüm CRM mimarisini örneklerken bütün nesneleri ve onun ilişkilerini de getirmektedir. Böylece nesne dönüşümleri ve tür güvenliği de sağlanmış olmaktadır.

·         Visual Studio içerisinde inteli sense özelliğini kullanmamızı sağlar.

·         Dynamics CRM 4.0’da WSDL ile çalışan kişiler bu yeni yapıda hiçbir farklılık hissetmeyeceklerdir.


Bir sonraki makalede görüşmek dileğiyle :)

 

Dynamics CRM 2011 Servis Mimarisi

 

Dynamics CRM üzerinde uygulama geliştirebileceğiniz çok güçlü bir mimari ile gelmektedir. Bu mimarinin temel yapı taşı ise WCF servisleridir. Bu yazımda sizlere CRM'in temel web servisleri olan Discovery ve Organization Servislerinin yapısını ve ne işe yaradıklarını anlatacağım.

CRM için kod geliştirirken her ne kadar sdk'nın içinden çıkan dll'leri kullansak da bu dll'ler vasıtasıyla ilk önce servis bağlantısı oluşturmamız gerekmektedir.  Yani verilere ulaşmak ve veri yazmak için WCF servislerini kullanmak zorundayız. Bu servislerle daha hızlı ve güvenli bir şekilde CRM platformuna entegre olmamızı sağlamaktadır.

WCF standartlaşmış bir teknoloji olduğu için biz yazılım geliştiricilere yeni özellikler sunmakta ve sürekli kendi içerisinde gelişmektedir. Dynamics CRM yapısında entity ve attribute katmanlı bir mimari bulunmaktadır. Yani biz CRM'in Business Logic katmanına müdahele edip yazılımlarımızı onunla entegre hale getirmekteyiz. Temel olarak nesne katmanı Entity isimli nesneden türemiştir. late-bound türlerde bu nesneyi sıklıkla kullanmaktayız. Early-bound olarak program geliştirme metodolojisini tercih edersek Entity class'ı ile işimiz olmamaktadır ama arka planda bütün nesnelerin bu class'dan türediği unutulmamalıdır. Bu konuya aşağıda bir örnekle tekrar değineceğim. CRM servislerine OrganizationServiceProxy ve DiscoveryServiceProxy sınıflarıyla bağlanmaktayız. Aşağıdaki kod bize bunu göstermektedir;

using (OrganizationServiceProxy _serviceProxy =
    new OrganizationServiceProxy(organizationUri, homeRealmUri, userCredentials, deviceCredentials)) ;

Discovery Servis

Dynamics Dynamics CRM 2011 multi-tenant bir mimaridedir. Yani tek bir uygulama birden fazla organizasyonu içerisinde barındırmaktadır. Yazılımcı olarak birden fazla organizasyon arasında geçiş yapmamız gerekiyorsa sistemde hangi organizyonlar olduğunu sorgulama işini Discovery servis ile yapmamız gerekmektedir. Bu servis yazma okuma işlemlerinin yapılacağı ana servise bağlanmamıza yardımcı olacak ve organizasyonların bilgisini bize döndürecektir. Aşağıdaki kod bize bu servise nasıl bağlanacağımızı ve organizasyonların bilgisine nasıl ulaşacağımızı göstermektedir.

Uri dInfo = new Uri("http://192.168.5.102/XRMServices/2011/Discovery.svc");
ClientCredentials clientcred = new ClientCredentials();
DiscoveryServiceProxy dsp = new DiscoveryServiceProxy(dInfo, null, clientcred, null);
dsp.Authenticate();
RetrieveOrganizationsRequest
rosreq = new RetrieveOrganizationsRequest();
RetrieveOrganizationsResponse
r = (RetrieveOrganizationsResponse)dsp.Execute(rosreq);
foreach
(OrganizationDetail o in r.Details)
{
      Console.WriteLine("Organizasyon Adı : " + o.FriendlyName);
}
Console
.ReadLine();

Bu kodla discovery servise bağlandıktan sonra ClientCredentials'ı kullanarak hali hazırda oturum açmış kullancının bilgisini sisteme göndermekteyiz. Ama her zaman bunu kullanmak istemeyebiliriz yani başka bir kullanıcı adı ve şifre ile sisteme girmek istediğimizde ClientCredentials'a kullanıcı adı, şifre bilgilerini verebiliriz.

clientcred.Windows.ClientCredential = new System.Net.NetworkCredential("kullanici adi", "sifre", "domain");

Yukarıdaki kodun çalışabilmesi için System.ServiceModel.Description,System.Runtime.Seriliazation, Microsoft.Xrm.Sdk.Client ve Microsoft.Xrm.Sdk dll'lerinin referanslara eklenmiş olduğundan emin olun. Ayrıca uygulamayı .Net Framework 4.0'da derlemek gerekiyor.

Organization Servis

Dynamics CRM 2011'in ana web servisi Organization Servis'tir. Bu servis içerisinde entity instance'ları üzerinde işlem yapabileceğimiz 6 metod ve execute metodu bulunmaktadır. CRM Servis sınıfını oluşturabilmek için Organization Service Proxy'nin bir instance'ını oluşturmamız gerekmekte. Daha sonrasında ise Organization Servis sınıfını bunu göre ayarlayacağız.

Uri dInfo = new Uri("http://192.168.5.102/XRMServices/2011/Organization.svc");
ClientCredentials
clientcred = new ClientCredentials();
clientcred.Windows.ClientCredential = new System.Net.NetworkCredential("kullanici adi", "sifre", "domain";
OrganizationServiceProxy
orgService = new OrganizationServiceProxy(dInfo, null, clientcred, null);
orgService.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
IOrganizationService
ioService = (IOrganizationService)orgService;

Yukarıdaki kodun çalışabilmesi için System.ServiceModel.Description, Microsoft.Xrm.Sdk ve Microsoft.Xrm.Sdk.Proxy dll'lerinin referanslara eklenmiş olduğundan emin olun. Ayrıca uygulamayı .Net Framework 4.0'da derlemek gerekiyor. Oluşturduğumuz bu servisi daha sonra programımızın ilerleyen bölümlerinde çağırıp işlemler yapacağız.

Tabi burada belirtilmesi gereken bir konu da işlem yapmak istediğiniz nesnenin üzerinde yetkilerinizin olmasıdır. Bir kayıt oluşturabilmek için oluşturma yetkisine sahip olmanız gerekmektedir. Sadece okuma yetkisiyle bir kayıt oluşturamazsınız. Bir sonraki yazımda sizlere entity mimarisi ve yazma okuma işlemlerini anlatacağım.

 

 

 

Gaziantep Üniversitesi Gençsen Geleceksin 4.0 Etkinliği

11 Nisan 2011 Gaziantep Üniversitesi Gençsen Geleceksin etkinliğinde Microsoft'u temsilen konuşmacıyım.

Katılabilecek durumda olan herkesi beklerim.

Gençsen Geleceksin 4.0 ile Geleceğe Dönüş;

Son üç yıldır bir üniversite klasiği haline gelen kampüs turu Gençsen Geleceksin, bu yıl da Microsoft ve Turkcell ortaklığında "Gençsen Geleceksin4.0" adıyla yeniden başlıyor. Üniversite öğrencilerini ve teknoloji severleri geleceğin teknolojileri ile tanıştırmayı ve gençlere vizyon kazandırmayı amaçlayan “Gençsen Geleceksin 4.0” etkinliklerinde uzman konuşmacılar Mobil Teknolojilerde ve Yazılım Teknolojilerindeki yenilikler hakkında birinci ağızdan bilgi verirken, hepimizi bir gelecek yolculuğuna çıkaracaklar.

Sen de bu yolculukta şimdiden yerini al!

Bu yıl ~60 farklı kampüs içi ve online etkinlikle üniversite öğrencileri buluşacağımız Gençsen Geleceksin 4.0 da katılımcılar arasında yapılacak çekiliş ile süpriz hediyeler kazanan şanslı teknolojist sen olabilirsin...

Konular:

-Yeni nesil internet ve HTML 5
-Yenilikçi ürün servislerimiz
-Genç fikirlerden girişimcilere
-Yeni çalışma dünyası
-Imagine cup: Düşle gerçekleştir!
-Mobil teknolojiler ve dijitalleşme
-Etkileşimli dünya: Sosyal medya
-3G dünyasında neler oluyor?
-Oyun dünyası
-Mobil hayat

Katılım tamamen ücretsizdir ve katılanlara Microsoft onaylı katılım belgesi verilecektir.

Gelecekte görüşmek üzere!

Daha fazla bilgi için: www.gencsengeleceksin.com

 

MVP Summit 2011

20 Şubat- 3 Mart tarihleri arasında Amerika'daydım. Hem tatil hem iş için gitmiştim. Microsoft takipçileri bilirler her sene Şubat aynının sonunda Seattle'da MVP Summit yapılır. Dünya üzerindeki bütün MVP ve RD'ler bu etkinlikler ve eğitimler için Microsoft'a giderler. Ben de 2 yıldır bu etkinliklere katılıyorum. Bu sene biraz da gezebilmek amacıyla 1 hafta erken Amerika'ya gittim. 1 hafta boyunca New York'ta gezdim. New York çok çolgın bir şehir ve inanın bir Türk New York'ta çok rahat yaşayabilir. New York fotoğraflarına bu adresten ulaşabilirsiniz.

New York fotoğraflarına bu adresten ulaşabilirsiniz : http://www.facebook.com/album.php?id=626951879&aid=296766

New York'ta gezip görülebilecek yerleri ise şu şekilde sıralayabilirim;

 

  • Central Park
  • Time Square
  • Madame Tussauds Müzesi
  • China Town-Little Italy 
  • Metropolitan Museum of Art
  • Museum of Natural History (Doğa Tarih Müzesi)
  • Statue of Liberty (Özgürlük Anıtı)
  • Broadway
  • Wall Street
  • Empire State Building
  • The Flatiron Building

 

New York bu şekilde; Seattle ise geçen seneden bu yana hiç değişmemiş doğal olarak ama bu sene MVP Summit'te Steve Ballmer'ın konuşma yapması unutulmayacak bir olaydı Seattle fotoları ise bu adreste;

http://www.facebook.com/album.php?id=626951879&aid=305769

 

Personel İhtiyacı

Omerd Business Solutions kurulduğu günden bugüne Türkiye’nin öncü ve lider firmalarına yazılım ve sistem danışmanlığı yapan firmadır. Omerd Business Solutions; sahip olduğu uzman ekibi, gerçekleştirdiği yüksek ölçekli projeler ile sürekli gelişmekte olan bilişim teknolojilerinde Microsoft Dynamics CRM, Web Optimizasyonu, Bilgi Güvenliği, Sistem tasarımı, implementasyonu ve entegrasyonu konularında çözümler sağlamaktadır. Omerd Business Solutions; sahip olduğu vizyon, nitelik, deneyim ve değerlerle, Bilişim Teknolojilerinde yaşanan dinamik süreçleri, müşterilerinin gereksinimlerine entegre ederek, kuruma özel çözümler sunmaktadır.  

Firmamızın geliştirmekte olduğu projelere çabuk adapte olarak yazılım geliştirecek analitik düşünce yapısına sahip takım arkadaşı aramaktayız.

Aranan Nitelikler

  • Analitik algılama ve analiz yeteneklerine sahip
  • Çok katmanlı mimaride sistem geliştirme ve nesneye yönelik yazılım geliştirme konusunda deneyimli
  • C#,ASP.NET,XML Web Servisleri, SQL Server konularında deneyimli
  • Javascript, HTML, CSS gibi web tabanlı yazılım geliştirme teknolojilerinde deneyimli
  • Tercihen Windows Server Mimarisi (Active Directory, IIS, DNS...) konusunda bilgili
  • Erkek adaylar için askerliğini yapmış veya en az 2 yıl tecilli
  • Dökümantasyonları takip edebilecek kadar İngilizce bilgisine sahip.

 

 Not : Şirketimiz Söğütlüçeşme Metrobüs hattına çok yakındır.

Trakya Üniversitesi Gençsen Geleceksin Etkinliği

21 Mart 2011 Trakya Üniversitesi Gençsen Geleceksin etkinliğinde Microsoft'u temsilen konuşmacıyım.

Katılabilecek durumda olan herkesi beklerim.

Gençsen Geleceksin 4.0 ile Geleceğe Dönüş;

Son üç yıldır bir üniversite klasiği haline gelen kampüs turu Gençsen Geleceksin, bu yıl da Microsoft ve Turkcell ortaklığında "Gençsen Geleceksin4.0" adıyla yeniden başlıyor. Üniversite öğrencilerini ve teknoloji severleri geleceğin teknolojileri ile tanıştırmayı ve gençlere vizyon kazandırmayı amaçlayan “Gençsen Geleceksin 4.0” etkinliklerinde uzman konuşmacılar Mobil Teknolojilerde ve Yazılım Teknolojilerindeki yenilikler hakkında birinci ağızdan bilgi verirken, hepimizi bir gelecek yolculuğuna çıkaracaklar.

Sen de bu yolculukta şimdiden yerini al!

Bu yıl ~60 farklı kampüs içi ve online etkinlikle üniversite öğrencileri buluşacağımız Gençsen Geleceksin 4.0 da katılımcılar arasında yapılacak çekiliş ile süpriz hediyeler kazanan şanslı teknolojist sen olabilirsin...

Konular:

-Yeni nesil internet ve HTML 5
-Yenilikçi ürün servislerimiz
-Genç fikirlerden girişimcilere
-Yeni çalışma dünyası
-Imagine cup: Düşle gerçekleştir!
-Mobil teknolojiler ve dijitalleşme
-Etkileşimli dünya: Sosyal medya
-3G dünyasında neler oluyor?
-Oyun dünyası
-Mobil hayat

Katılım tamamen ücretsizdir ve katılanlara Microsoft onaylı katılım belgesi verilecektir.

Gelecekte görüşmek üzere!

Daha fazla bilgi için: www.gencsengeleceksin.com

Microsoft Bilişim Zirvesi 2011

11 Mart 2011 tarihinde İstanbul Kongre Merkezinde gerçekleşecek olan Microsoft Türkiye Bilişim Zirvesi ile tüm bilişimciler yeni bir deneyim ve paylaşım imkanı ile buluşturuluyor.

Microsoft iş ortaklarının deneyim ve başarı hikayelerinin de sunulacağı etkinlikte; Geleceğin Çalışma Dünyası, Web Platformu, Dinamik Veri Platformu, İş Kritik Uygulamaları, Uygulama Platformu ve Bulut Bilişim gibi konu başlıkları ile toplam 11 panel sunumu olacak.

Etkinliğe bu adresten kayıt olabilirsiniz : https://msevents.microsoft.com/cui/EventDetail.aspx?culture=tr-TR&EventID=1032474048&IO=l1KCS/dGn2P/FbGk97ziug%3d%3d

Microsoft Dynamics CRM 2011 Yeni Workflow ve Dialogs Mimarisi

Güncelleme : Bu akşam vereceğim webineri şehirdışında olmam nedeniyle ileri bir tarihe ertelemek zorunda kaldım. Yeni tarihi buradan paylaşıyor olurum.

Arkadaşlar bu ayki web seminerim CRM 2011 üzerinde yeni process mimarisi ile ilgili. Katılırsanız sevinirim. CRM 2011 RTM üzerinden anlatacağım.

Konu : Dynamics CRM 2011 – Yeni Workflow ve Dialogs Mimarisi
Konuşmacı : Barış KANLICA
Zaman : 22.03.2011 21:00
Link : http://nedirtv.com/webiner/40

Yazgeliştir forumları yenilendi!!

Benim de editör kadrosunda yer aldığım bilgi paylaştıkça artar felsefesiyle yola çıkan yazgelistir.com'un forumları yenilendi.

Yazgeliştir forumları yeni arayüzü, yeni özellikleri ve yeni moderatör kadrosu ile hizmetinizde. 

Forumlarımızda yaptığımız bu köklü değişikliğin temel faydaları,
  • Gönderilere code snippet ve resim ekleme özelliği ile daha fonksiyonel ve anlaşılır bir kullanıcı arayüzü.
  • Sorulara daha hızlı cevap verebilmek ve soruların takip edilebilmesi.
  • Rss ile takip imkanı.
  • Sosyal sitelerde paylaşım imkanı.
  • Daha önceden cevaplanan sorular arasında daha rahat arama yapılabilmesi.
  • Aktif forum kullanıcılarını daha iyi takip ederek editör adaylarını ön plana çıkartmak olacaktır. 

Forumlarımızı ziyaret etmek için http://forum.yazgelistir.com adresini ziyaret edebilir veya Yazgeliştir üzerinden forumlara giriş yapabilirsiniz.