Pazar, Aralık 19, 2010

SharePoint 2010 Nasıl Yapılır? - SharePoint Designer ile External Content Type Oluşturmak

Daha önceki bir kaç postumda SharePoint 2010 ile hayatımıza giren External Content Type, External List ve Business Data Connectivity Services hakkında bilgiler vermeye çalışmıştım. Daha önceki postlara aşağıdaki linklerden erişebilirsiniz.
Bu yazımızda SharePoint'e SharePoint Designer aracılığı ile yeni bir External Content Type'ı nasıl eklediğimizi tartışacağız. Daha önceki yazılardan hatırlanacağı üzere External List'ler; verilerin direkt istenilen veri tabanından okunup yine aynı veritabanına yazılmasına olanak tanıyordu. İşlemleri biraz daha hızlandırmak adına bu işlem SharePoint Designer aracılığı ile kod yazmadan hızlıca gerçekleştirilebilmektedir. İşe ilk olarak veritabanımızı hazırlayarak başlayalım; aşağıdaki kodlardaki sorgu çalıştırıldığında istenilen tablo oluşturulacaktır.

CREATE TABLE [dbo].[Personel]([KisiID] [int] IDENTITY(1,1) NOT NULL,[Ad] [nvarchar](50) NOT NULL,[Soyad] [nvarchar](50) NOT NULL,[SicilNo] [char](10) NOT NULL,CONSTRAINT [PK_Personel] PRIMARY KEY CLUSTERED ([KisiID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]
Veritabanı hzırlandıktan sonra SharePoint Designer'ı açıp External List oluşturmak istenilen siteye bağlanalım. SharePoint Designer üzerinde site objelerinin görüntülenmiş olduğu bölümde External Content Types dikkatinizi çekecektir. Bu bölümden var olan External Content Type'ları düzenleyebilir ya da yenisini ekleyebilirsiniz.



External Content Types bölümüne tıkladıktan sonra daha önce oluşturulmuş olan tipler burada listelenmektedir. Yenisini eklemek için Ribbon'da yer alan (En üstte en solda) Create External Content Type düğmesi ile yeni bir tip eklemenin ilk adımını gerçekleştirebiliriz. İlgili tuşa tıkladıktan sonra aşağıdaki ekran karşınıza gelecektir. Bu ekrandan oluşturulacak olan External Content Type'ın adı, açıklaması gibi bilgileri girdikten sonra veri detayları için Click here to discover external data sources and define opearitions linkine tıklayıp ilgili ekrana geçiyoruz.



External Content Type'ın içeriğini belirlemek için linke tıkladıktan sonra ilk olarak bağlantı seçilmesi gerekmektedir. Burada daha önce kodlarını paylaştığımız tabloyu oluşturduğumuz veritabanını seçiyor olalım. Veritabanı seçildikten sonra düğümler genişletilerek ilgili tablonun üzerinde operasyonlar tanımlanmalıdır. Bunlar sizin de tahmin edeceğiniz gibi, veri ekleme, silme, güncelleme ve görüntülemedir. Hepsini teker teker tanımlayabileceğiniz gibi tabloya aşağıdaki şekilde de görüldüğü üzere sağ tıklayıp hepsini tanımla denebilir.


Create All Operations seçildikten sonra açılan sihirbaz aracılığı ile tüm operasyonlar oluşturulabilir. Bu örnek için next , next ve finish işinizi görecektir çünkü her şeyi varsayılan ayarlarla tanımlamak istiyoruz. Finish'e tıkladıktan sonra sihirbaz kapanacak ve oluşturulan operasyonlar size görüntüleniyor olacaktır.

Herhangi bir problem yoksa oluşturmuş olduğumuz tipi kaydedip; External List oluşturup kullanmaya başlayabilirsiniz. Çok kolay değil mi? External List'i nasıl oluşturulacağın daha önceki postlarda anlatmaya çalışmıştım, yukarıdaki linklerden tıklayarak tekrar hatırlayabilirsiniz.

Not: SharePoint Designer üzerinden de External List ekleyebilirsiniz!

Pazartesi, Aralık 13, 2010

Microsoft ve TCM İşbirliğiyle Üniversiteler SharePoint ve Business Intelligence Öğreniyor!

Microsoft Akademik ile gerçekleştirmiş olduğumuz işbirliği çerçevesinde 11 üniversitede SharePoint ve Business Intelligence seminerleri gerçekleştiriyoruz.
Seminer katılımcıları arasından seçilecek 16 kişiye TCM tarafından SharePoint 2010 ve Business Intelligence eğitimi verilecektir. Microsoft tarafından sağlanacak sınav kuponları ile eğitim sonunda katılımcıların sertifika almalarına olanak tanınıp, eğitim katılımcıları iş ve staj yeri bulma konusunda desteklenecektir.
Siz de seminerlerde yerinizi almak için üniversiteniz MSP'lerinin duyurularını takip edin! 

Şu ana kadar seminer programı kesinleşmiş üniversiteler ve seminer saatleri şu şekilde:

Bahçeşehir Üniversitesi
Tarih: 14.12.2010
Saat:  18:30 - 20:30


Yeditepe Üniversitesi
Tarih: 15.12.2010
Saat:  17:00 - 19:00


Yıldız Teknik Üniversitesi
Tarih: 17.12.2010
Saat:  16:00 - 19:00


Sakarya Üniversitesi
Tarih: 23.12.2010
Saat:  14:00 - 17:00


Marmara Üniversitesi
Tarih: 27.12.2010
Saat:  14:00 - 17:00




Pazar, Aralık 12, 2010

SharePoint 2010'da Kişisel Site (My Site) Oluşturma Problemi

MySite'lar (Türkçe dil paketi kurulu olan SharePoint çözümlerinde Sitem olarak adlandırılır.) SharePoint'te kullanıcıların kendi kişisel sitelerini oluşturmalarına olanak tanıyan yapılardır. Problemsiz bir konfigürasyon gerçekleştirildikten sonra SharePoint 2010'a oturum açan kullanıcılar MySite tuşuna tıklayarak kendi sitesini oluşturabilir, kişisel dokümanlarını kendi alanında SharePoint üzerinde saklayabilir eğer isterse Blog yayını da yapabilir. 
Sistemde konfigürasyon problemi varsa kullanıcılar MySite tuşuna tıkladığında bir hata mesajı görüntülenir ve MySite oluşturulamaz, bunun çok farklı nedenleri olabilir ancak ilk olarak aşağıda açıklamaya çalıştığım maddeleri gözden geçirirseniz problem büyük ihtimalle çözülecektir;
  1. MySite'ları saklamak için yeni bir WebApplication oluşturun.
  2. İki tane yönetilebilir yol ekleyin. (Managed Path)
    -usersite (Explicit inclusion)
    -personel (Wildcard inclusion)
  3. /usersite yoluna yeni bir Site Collection oluşturun. Template olarak Enterprise bölümünde yer alan MySite Host'u seçin.
  4. Root'a (/) bir tane SiteCollection ekleyin. Zaten dolu ise bir şey eklemenize gerek yok ancak WebApplicatinon'ın Root'undan muhakkak bir Site Collection yer alıyor olmalıdır.
  5. Self Service Site Creation özelliğini aktive edin. Bu ayar Web Application düzeyinde bir ayardır ve Central Administration > Application Management > Manage Web Applications > Click on Web Application created above > Ribbon > Self-Service Site Creation > On > OK yolunu kullanarak aktif hale getirebilirsiniz.
  6. Central Administration > Application Management > Manage service applications > User Profile Service Application > Setup My Sites  yolunu kullanarak My Site Host alanını http://WebApplicationAdı/usersite şeklinde doldurun. Burada usersite bölümünü 2. adımda oluşturduğumuzu hatırlayalım.

Cumartesi, Aralık 11, 2010

nedirtv?com - Aralık Ayı Webinerleri

Nedir?Tv.com Aralık Ayı Webinerleri tüm hızıyla devam ediyor, 21 Aralık akşamı ben de Yazılımcılar için SharePoint 2010 yeniliklerini anlatıyor olacağım... Nedir?Tv.com Aralık Ayı Webinerleri'nin genel programı şu şekilde:



Konu: WCF Öğreniyorum-03:Bağlayıcılar(Bindings)
Tarih: 8 Aralık Çarşamba 21:00
Konuşmacı: Burak Selim Şenyurt
Link: http://nedirtv.com/webiner/20

Konu: Microsoft CRM 2011 - Programlama Yenilikleri
Tarih: 14 Aralık Salı 21:00
Konuşmacı: Barış Kanlıca
Link:
http://nedirtv.com/webiner/23

Konu: WCF Öğreniyorum-04:İstemci Tarafını Geliştirmek
Tarih: 15 Aralık Çarşamba 21:00
Konuşmacı: Burak Selim Şenyurt
Link:
http://nedirtv.com/webiner/24

Konu: ASP.NET MVC 3 RC Sürümüne Bakış
Tarih: 17 Aralık Cuma 21:00
Konuşmacı: İbrahim Atay
Link:
http://nedirtv.com/webiner/25

Konu: SharePoint 2010 - Yazılımcılar İçin Yenilikler
Tarih: 21 Aralık Salı 21:00
Konuşmacı: Burak Batur
Link:
http://nedirtv.com/webiner/26

Konu: WCF Öğreniyorum-05:Instance Management
Tarih: 22 Aralık Çarşamba 21:00
Konuşmacı: Burak Selim Şenyurt
Link:
http://nedirtv.com/webiner/28

Konu: Silverlight ve Web Dünyasına Getirdiği Yenilikler
Tarih: 24 Aralık Cuma 21:00
Konuşmacı: Görkem Sezgin
Link:
http://nedirtv.com/webiner/30

Pazartesi, Kasım 08, 2010

Nerede Kalmıştık! Nedir?Tv Kasım Ayı Webinerleri...

Uzunca bir aranın ardından Nedir?Tv Webinerlerine yeniden başlıyoruz!
Yaklaşık bir yıllık aradan sonra yine NedirTv ile sahalara dönüyorum. Daha önce MOSS ile ilgili bilgileri paylaşma fırsatı bulduğum NedirTv'de bu sefer de SharePoint 2010 ile ilgili yenilikler hakkında konuşuyor olacağız. Kasım ayının içerisinde bayram olmasına rağmen 6 farklı konuda sizlerle bir araya geliyoruz.
Webinerlere kayıt olup webiner detaylarına ulaşmak için http://www.facebook.com/home.php?#!/event.php?eid=167616929932997 linkine tıklayabilirsiniz.

Perşembe, Ekim 14, 2010

23 Ekim'de Yazgeliştir Gönüllüleri Toplantısında Görüşelim!

Türkiye’de yazılım geliştirme alanında çalışanların paylaşım noktası olan Yazgeliştir’i takip eden herkesi 23 Ekim Cumartesi günü düzenleyeceğimiz Yazgeliştir Gönüllüleri etkinliğine bekliyoruz. Bu etkinlikte Yazgeliştir editörleri ile tanışıp, Yazgeliştir ile ilgili son gelişmeler ve gelecek planlarından haberdar olacaksınız. Ayrıca Yazgeliştir ekibi olarak görüş ve önerilerinizi dinliyor olacağız.
Tüm bunların yanısıra etkinlikte yazılım geliştirme alanındaki son yenilikler içerikli bir sunum da olacak. Microsoft İstanbul ofisinde saat 13:00’te başlayacak etkinliğimizin program detaylarını aşağıda bulabilirsiniz:

Tarih:
23 Ekim 2010 Cumartesi, 13:00 – 17:00

Program:

  • 13:00 – 14:00 Yazgeliştir yönetimi ile tanışma

  • 14:00 – 15:00 Son gelişmeler ve 2011 planları

  • 15:00 – 15:45 Açık tartışma

  • 16:00 – 16:45 Yazılımcılar İçin Yenilikler – Tamer Öz

    Yer:
    Microsoft İstanbul Ofisi
    Bellevue Residence Levent Mahallesi
    Aydın Sokak. No:7
    Levent,
    34340 İstanbul/Türkiye

    Katılım için lütfen adınızı, soyadınızı yazgelistir@yazgelistir.com adresine mail atınız.
  • Cuma, Ekim 08, 2010

    Türk Telekom ve Microsoft'tan Dev İşbirliği

    Uzun zamandır TCM | Teknoloji Çözümleri Merkezi olarak bizim de yoğun çaba sarf ettiğimiz kampanya bu gün basına duyuruldu. Kampanya kapsamında Türk Telekom KOBİ ve esnaf müşterileri, Microsoft Office Ev ve İş 2010'u Türk Telekom faturalarında 36 ay için aylık 8,99 liraya ve 24 ay için aylık 12,49 liraya satın alabilecekler.

    Office 2010 satın alanlar paketlerin yanında hediye olarak verilen ek uygulamar CD'sine de ücretsiz sahip olabilecekler. CD'de Türk Telekom, Windows 7, Office 2010 ve TTNET İşyerim hakkındaki katalogların yanında Wirofon Outlook Eklentisi ve TCM tarafından geliştirilen Kobi-Soft Müşteri Takip Uygulaması da yer alıyor.

    Kampanyadan yararlanmak için Türk Telekom bayi ve ofislerine uğramanız veya KOBİ Satış Kanalı bayilerinin sizi ziyaret etmesi yeterli olacaktır.

    Kampanya hakkındaki detaylı bilgilere aşağıdaki linklerden erişebilirsiniz:

    Çarşamba, Eylül 29, 2010

    ASP.NET ve SharePoint'teki Güvenlik Açığı İçin Yama Yayınlandı (Microsoft Security Advisory (2416728))

    Daha önceki postlarımızda ASP.NET tarafında doğal olarak SharePoint'i de etkileyen 2416728 kodlu güvenlik açığından bahsedip geçici bir çözüm önerisinde bulunmuştuk. Microsoft bu açığı kapatmak için .NET Framewotk tarafında bir yama yayınladı güvenlik bültenini okumak ve yamayı indirmek için http://www.microsoft.com/technet/security/bulletin/ms10-070.mspx adresini ziyaret edebilirsiniz. 

    Salı, Eylül 21, 2010

    ASP.NET ve SharePoint'te Güvenlik Açığı (Microsoft Security Advisory (2416728))

    ASP.NET'te SharePoint'i de etkileyen bir güvenlik açığı duyuruldu. Bu güvenlik açığı ile ViewState verisi elde edilebiliyor ya da sitede bulunan web.config gibi dosyaların içeriği görüntülenebiliyor. Güvenlik açığının detay bilgilerine buraya tıklayarak erişebilirsiniz.


    Güvenlik açığından kurtulmak için; sitenin Custom Errors modunu "On" olarak ayarlayıp site içerisinde hata oluşması durumunda kullanıcıyı kendi tasarladığınız custom bir hata sayfasına yönlendirmeniz yeterli oluyor. SharePoint için yapılması gereken işlemleri maddeler halinde SharePoint'in resmi bloğunda olduğu şekilde açıklıyorum;


    1. SharePoint'i yüklemiş olduğunuz dizinde %CommonProgramFiles%\Microsoft Shared\Web Server Extensions\14\template\layouts klasörüne geçin.

    2. Klasörde error2.aspx adında bir dosya oluşturup içeriğini aşağıdaki hale getirin:


    3. %SystemDrive%\inetpub\wwwroot\wss\virtualdirectories dizinine geçin.


    4. Her alt klasör için aşağıdaki işlemleri tekrarlayın:


         1. web.config'i açın. 
         2. custom Errors düğümünü bulup aşağıdaki gibi düzenleyin;
              default Redirect="/_layouts/error2.aspx" />
         3. Değişiklikleri Kaydedin. 
         4. Run iisreset /noforce

    Daha fazla bilgi için:

    Microsoft Security Advisory (2416728) - Vulnerability in ASP.NET Could Allow Information Disclosure


    Security Advisory 2416728 Released – Microsoft Security Response Center Blog


    Understanding the ASP.NET Vulnerability – Microsoft Security Research & Defense Blog


    Important: ASP.NET Security Vulnerability – Scott Guthrie’s Blog


    Frequently Asked Questions about the ASP.NET Security Vulnerability – Scott Guthrie’s Blog

    Çarşamba, Eylül 15, 2010

    SharePoint 2010 Nasıl Yapılır? - External List'lere CRUD yeteneği kazandırmak!

    Daha önceki yazılarımızda SharePoint 2010 ile birlikte hayatımıza giren External List'in ne olduğu ve nasıl oluşturulabildiğini ele almıştık daha önceki posta erişmek için buraya tıklayabilirsiniz; Bu postta da External List'e yeni öğe eklemeyi ve var olanları düzenlemeyi ele alıyoruz.  External List'te CRUD yeteneği kazandırma konusunda Internet'te yapmış olduğum araştırmalarda konu ele alınırken veri ekleme, silme ve güncelleme işlemlerinin Linq to SQL Classes aracılığı ile gerçekleştirildiğini gördüm sizler de bu metodu tercih ederseniz SharePoint'in resmi bloğunu ziyaret edebilirsiniz. Biz burada biraz daha farklı bir yöntemle ilerliyor olacağız, veri tabanına erişmek için kullanacağımız kodları tamamen kendimiz geliştireceğiz.

    Yeni bir Business Data Connectivity Model oluşturarak işleme başlayalım. Yeni bir BDC Model oluşturmak için Visual Studio 2010'da New/project ekranından SharePoint bölümü aracılığı ile BDC Model projesini seçelim.

    Proje şablonunu seçip OK butonuna basıldıktan sonra geliştirmenin hangi site üzerinde gerçekleştirileceği Visual Studio'ya belirtilmelidir. Buraya oluşturulacak olan modelin deploy edilecek olduğu siteyi yazıp Finish butonu ile proje oluşturulur.


    Oluşturulan projeye BDC Model'de kullanılmak üzere bir tane class ekleyeceğiz. Ekleyecek olduğumuz Class hem tip olarak kullanılacak hem de CRUD olarak kısaltabileceğimiz Create, Retrieve, Update ve Delete metodlarını içerecek. Visual Studio'da Projeye sağ tuş ile tıklayıp New Item menüsünden Kisi adında bir tane Class ekleyelim. Oluşturulan Class aşağıdaki resimde yer alan Rehber isimli tabloya veri ekleyip silecektir. Resimden de anlaşılacağı üzere tablonun beş tane sütunu var bu sütunlardan KisiID olanı primary key ve aynı zamanda da identity özellikli Create ve Update işlemlerinde bu sütuna dikkat etmek gerekiyor.

    Oluşturulan Class'ın içeriğini gerekli işlemlerin yapılabilmesi adına aşağıdaki şekilde dolduruyoruz.

    Kisi.cs
    using System;
    using System.Collections.Generic;

    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;


    namespace BdcRehberMakale
    {
         public class Kisi
         {
              public int KisiID { get; set; }
              public string Ad { get; set; }
              public string Soyad { get; set; }
              public string Email { get; set; }
              public string Telefon { get; set; }
              public string ConnectionString
              {
                   get
                  {
                        return "Data Source=.; Initial Catalog=TCMLABTEST; Integrated Security=True";
                   }
              }


              public Kisi()
              {


              }


              public Kisi(int kisiID,string ad,string soyad, string email, string telefon)
              {
                        this.KisiID = kisiID;
                        this.Ad = ad;
                        this.Soyad = soyad;
                        this.Email = email;
                        this.Telefon = telefon;
              }


              public void Create()
              {
                   SqlConnection baglanti = new SqlConnection();
                   baglanti.ConnectionString = this.ConnectionString;


                   SqlCommand komut = new SqlCommand();
                   komut.Connection = baglanti;
                   komut.CommandText = "INSERT INTO Rehber (Ad,Soyad,Email,Telefon) VALUES (@Ad,@Soyad,@Email,@Telefon)";


                   komut.Parameters.AddWithValue("@Ad", this.Ad);
                   komut.Parameters.AddWithValue("@Soyad", this.Soyad);
                   komut.Parameters.AddWithValue("@Email", this.Email);
                   komut.Parameters.AddWithValue("@Telefon", this.Telefon);


                   baglanti.Open();
                   komut.ExecuteNonQuery();
                   baglanti.Close();
              }


              public List RetrieveAll()
              {
                   SqlConnection baglanti = new SqlConnection();
                   baglanti.ConnectionString = this.ConnectionString;


                   SqlCommand komut = new SqlCommand();
                   komut.Connection = baglanti;
                   komut.CommandText = "Select * FROM Rehber ORDER BY KisiID";


                   DataTable dt = new DataTable();
                   SqlDataAdapter adapter = new SqlDataAdapter(komut);
                   adapter.Fill(dt);


                   List kisiler = new List();
                   foreach (DataRow row in dt.Rows)
                   {
                   kisiler.Add(new Kisi(Convert.ToInt32(row["KisiID"]),"" + row["Ad"], "" + row["Soyad"], "" + row["Email"], "" + row["Telefon"]));
                   }


                   return kisiler;
              }


              public Kisi RetrieveByID(int kisiID)
              {
                   SqlConnection baglanti = new SqlConnection();
                   baglanti.ConnectionString = this.ConnectionString;

                   SqlCommand komut = new SqlCommand();
                   komut.Connection = baglanti;
                   komut.CommandText = "Select * FROM Rehber WHERE KisiID=@KisiID";
                   komut.Parameters.AddWithValue("@KisiID", kisiID);


                   DataTable dt = new DataTable();
                   SqlDataAdapter adapter = new SqlDataAdapter(komut);
                   adapter.Fill(dt);


                   Kisi k = new Kisi();
                   if (dt.Rows.Count == 1)
                   {
                        k.KisiID = kisiID;
                        k.Ad=""+dt.Rows[0]["Ad"];
                        k.Soyad = "" + dt.Rows[0]["Soyad"];
                        k.Email = "" + dt.Rows[0]["Email"];
                        k.Telefon = "" + dt.Rows[0]["Telefon"];
                   }
                   return k;
              }


              public void Update()
              {
                   SqlConnection baglanti = new SqlConnection();
                   baglanti.ConnectionString = this.ConnectionString;


                   SqlCommand komut = new SqlCommand();
                   komut.Connection = baglanti;
                   komut.CommandText = @"UPDATE Rehber SET
                                                                Ad=@Ad,
                                                                Soyad=@Soyad,
                                                                Email=@Email,
                                                                Telefon=@Telefon
                                                                WHERE   KisiID=@KisiID";
                   komut.Parameters.AddWithValue("@Ad", this.Ad);
                   komut.Parameters.AddWithValue("@Soyad", this.Soyad);
                   komut.Parameters.AddWithValue("@Email", this.Email);
                   komut.Parameters.AddWithValue("@Telefon", this.Telefon);
                   komut.Parameters.AddWithValue("@KisiID", this.KisiID);


                   baglanti.Open();
                   komut.ExecuteNonQuery();
                   baglanti.Close();
              }


              public void Delete()
             {
                   SqlConnection baglanti = new SqlConnection();
                   baglanti.ConnectionString = this.ConnectionString;


                   SqlCommand komut = new SqlCommand();
                   komut.Connection = baglanti;
                   komut.CommandText = @"DELETE FROM Rehber
                                                                WHERE KisiID=@KisiID";
                   komut.Parameters.AddWithValue("@KisiID", this.KisiID);


                   baglanti.Open();
                   komut.ExecuteNonQuery();
                   baglanti.Close();
              }
         }
    }

    Kisi class'ını dikkatle incelediğimizde yapılandırıcı metod dışında toplam beş tane metod olduğu gözlerden kaçmayacaktır. Bu metodlardan iki tanesi veri getirmek diğer üçü de veri yazmak için olan işlemlerdir. Veri getirmek için kullanılan metodların dönüş değerinin Kisi sınıfı ve Kisi koleksiyonu olduğuna dikkat ediniz. Veri sınıfımız başka bir deyişle Data Access Layer hazırlandı şimdi sıra geldi BDC Modeli'ni hazırlamaya. Visual Studio'da Solution Explorer'a göz atacak olursak orada BDCModel1 adında bir modelin yer aldığını görüyor olacağız. Her şeyi sıfırdan yapmak adına BDCModel1 isimli modeli projemizden silelim. Yeni bir model eklemek için projeye sağ tıklayalım ve New Item menüsünden SharePoint/2010 bölümünde yer alan Business Data Connectivity Model tipini seçelim. Model adı olarak BdcModelRehber belirleyelim. BDCModelRehber'e tıklayarak model'in içeriğine göz atabiliriz. Oluşturulan modelde Entity1 isimli bir entity hazır halde karşımıza gelecektir, bunu da silip yenisini ekleyeceğiz. Entity1'e tıkladıktan sonra delete tuşu ile gerekli aksiyonu alabiliriz. Yeni bir Entity eklemek için sol tarafta yer alan ToolBox'ı kullanabiliriz. ToolBox'tan bir tane Entity'i sürükleyip modelimizin üzerine bırakalım. Bu Entity'in adını da kendimize göre kişiselleştiriyor olmalıyız. Gerekli güncellemeleri yapmak için Entity'e sağ tıklayıp properties'i seçelim, özelliklerden Entity'nin adını EntityRehber olarak değiştirelim. Şimdilik EntityRehber adında boş bir Entity sistemde mevcut, bu entity'nin bir adet kimlik niteliğinde bir üyesi olmalı.

    Entity'ye yeni bir kimlik yani identifier eklemek için identifiers bölümüne sağ tıkladıktan sonra add new identifier tuşuna tıklayalım. Ardından oluşturulan identifier'ın özelliklerinden Name özelliğini KisiID ve tipini de System.Int32 olarak belirleyelim. 



    BDC Modelimizin kimlik niteliğindeki üyesini ekledikten sonra sıra geldi metodlarını oluşturmaya. Entity'nin methods bölümüne tıkladığımızda Visual Studio'da BDC Method Details penceresi görüntüleniyor olacaktır. Method Details penceresi aracılığı ile gerekli olan metodları ekleyebiliriz. Metod tipleri Visual Studio'da önceden tanımlanmıştır ve tek tıklama ile oluşturulabilir. Burada ilk olarak veri getirmek için gerekli olan ReadItem metodunu ekliyor olacağız. Method Details penceresinden Specific Finder Method'u seçerek gerekli methodu oluşturabiliriz.


    ReadItem metodu oluşturulduktan sonra sıra geldi geri döndürülecek olan tipi tanımlamaya. Geri döndürülecek olan tip Method Details penceresinde ReadItem'a tıklanıldığında return parametresinde görüntüleniyor olacaktır. Parametreye tıklayıp edit diyerek tipi özelleştirebiliriz.


    Edit'e tıkladıktan sonra BDC Explorer penceresi görüntüleniyor olacaktır. Bu pencereden @entityRehber parametresi genişletildikten sonra geri dönecek olan tipe erişilebilir. Bu tipin içinde yer alacak üyelerin tanımlamaları burada yapılmalıdır. EntityRehber'e sağ tıklanıp Add Type Descriptor'a tıklanarak gerekli üyeler eklenebilir. Sırası ile KisiID, Ad, Soyad, Email ve Telefon'u buraya ekliyor olacağız. Bu üyelerden KisiID'nin tipi Int32 diğerleri ise varsayılan yani string olacaktır. KisiID'nin Identifier Entity özelliği EntityRehber (BdcRehberMakale.BdcModelRehber.EntityRehber) ve Identifier özelliği de KisiID olarak atanmış olmalıdır. Bu atamaları yazmak yerine size sunulan seçimlerden seçmelisiniz.

    Üyelerin tanımlanmasının ardından EntityRehber'in özelliklerine geçip burada da bir ayarlama yapılması gerekiyor. EntityRehber'in TypeName özelliğini BdcRehberMakale.Kisi, BdcModelRehber olarak ayarlıyoruz. Bunu da yine listeden seçiyoruz.


    ReadItem metodu oluşturulduktan sonra sıra geldi diğer metodları oluşturmaya metod oluşturma işlemini yukarıda anlattığımız şekilde yaparak sırası ile Finder, Creator, Updater ve Deleter metodlarımızı oluşturalım. Burada dikkat edilmesi gereken bir şey vardır Visual Studio bir önceki adımda tanımlamış olduğumuz tipi tanıyacak ve bu metodlarda da otomatik olarak gerekli tanımlamalar yapılacaktır.

    Metodlar oluşturululmasının ardından sıra çalışacak olan kodları yazmakta... Şu anda arka planda metod tanımlamaları yapıldı ancak doğal olarak içlerine gerekli kodların da yazılması gerekmektedir. BDC Explorer'da EntityRehber'e sağ tıklanıp View Code denildikten sonra metodların tanımlamaları görüntüleniyor olacaktır. Bu tanımlamaları aşağıdaki gibi doldurarak gerekli geliştirmeyi tamamlayabiliriz.

    public static Kisi ReadItem(int kisiID)

    {
         Kisi k = new Kisi();
         return k.RetrieveByID(kisiID);
    }


    public static IEnumerable ReadList()
    {
         Kisi k = new Kisi();
         return k.RetrieveAll();
    }

    public static Kisi Create(Kisi newEntityRehber)
    {
         Kisi k = new Kisi();
         k.Ad = newEntityRehber.Ad;
         k.Soyad = newEntityRehber.Soyad;
         k.Email = newEntityRehber.Email;
         k.Telefon = newEntityRehber.Telefon;


         k.Create();
         return k;
    }


    public static void Update(Kisi entityRehber)
    {
         Kisi k = new Kisi();
         k.KisiID = entityRehber.KisiID;
         k.Ad = entityRehber.Ad;
         k.Soyad = entityRehber.Soyad;
         k.Email = entityRehber.Email;
         k.Telefon = entityRehber.Telefon;


         k.Update();
    }


    public static void Delete(int kisiID)
    {
         Kisi k = new Kisi();
         k.KisiID = kisiID;


         k.Delete();
    }

    Geliştirmiş olduğumuz modelin kullanılabilmesi için modelin SharePoint'e gönderilmesi gerekmektedir. Visual Studio 2008 tarafında problem yaşadığımız deployment senaryolarının tamamı Visual Studio 2010'da çözülmüş durumdadır ve projeye sağ tıklandıktan sonra Deploy'a tıklayarak modeli SharePoint'e gönderebiliriz. Deploy işleminin ardından daha önceki postta belirttiğimiz şekilde External List oluşturup kullanmaya başlayabilirsiniz. SharePoint 2007 tarafında oldukça ek geliştirme ile çözebildiğimiz bu durumun SharePoint 2010'da bu kadar kolay bir şekilde çözülüyor olması gerçekten harika...

    Pazartesi, Eylül 13, 2010

    Yeni İşyerim: TCM | Teknoloji Çözümleri Merkezi

    Kariyerimi TCM | Teknoloji Çözümleri Merkezi İş Çözümleri Departmanında sürdürüyorum. Daha önceki iş yerlerimde üstlenmiş olduğum görevlerle paralel olarak TCM'de de yoğun olarak SharePoint projelerini yürütüyor olacağım. SharePoint projelerinde; anahtar teslim proje, günlük danışmanlık, dış kaynak personel sağlama ve eğitim çözümleri ile yanınızdayız. TCM sadece SharePoint tarafında değil İş Zekası, Yazılım, Network ve Güvenlik çözümleri başlıklarında da tecrübeli ekibi ile sektöre hizmet vermektedir. İsterseniz TCM'yi biraz tanıyalım;

    TCM | Teknoloji Çözümleri Merkezi
    Teknoloji Çözümleri Merkezi (TCM);Türkiye'nin önde gelen bilişim şirketlerinde çeşitli pozisyonlarda uzun yıllar görev yapan bir çekirdek ekip tarafından kurulmuştur. Kuruluşu ile birlikte Türkiye'nin önde gelen şirketleri ile çalışmaya başlamış ve aldığı işler ile ekibini hızla büyütmüştür.



    Özellikle SharePoint, Kurumsal Zeka, Yazılım ve Network çözümleri üzerine anahtar teslim proje ve danışmalık hizmetleri vermektedir. Bununla birlikte uzun yıllar geliştirdiği farklı dış kaynak çözümleri ile müşterilerine birçok seçenek ile hizmet vermektektedir.
     
    TCM hakkında daha geniş bilgi sahibi olmak için http://www.tcm.com.tr/ adresini ziyaret edebilirsiniz.

    Salı, Ağustos 17, 2010

    SharePoint 2010 Overview - Asset Library

    SharePoint 2010 ile birlikte; video, resim ve müzik dosyalarınının bir kütüphane içerisinde toplanıp yönetilebilmesi oldukça kolaylaştırılmış, üstelik video ve müzik dosyalarının web arayüzünden çalıştırılması da ihmal edilmemiş. Daha önceki sürümlerde bir takım eklentiler ile gerçekleştirebildiğimiz bu işlemin ekstra bir çaba harcamadan kullanılabiliyor olması pek çok projenin hayata geçirilmesi sürecini oldukça hızlandıracak gibi görünüyor. E-learning uygulamalarının oldukça popüler olduğu günümüzde SharePoint alt yapısı üzerinden gerçekleştirilebilecek bir çözüm hem çok hızlı, hem çok güvenilir hem de diğer sistemler ile maksimum entegre bir çözüm olacaktır.

    Asset Library'i kullanmak için; sitemize Site Actions-->Create-->Asset Library yolunu izleyerek bir tane Asset Library tipinde kütüphane ekliyor olalım. Kütüphane eklendikten sonra yapılacak tek işlem videoları ya da diğer dosyaları oluşturmuş olduğumuz kütüphaneye yüklemek. Dosyalar kütüphaneye yüklendikten sonra özellikleri belirtilmelidir, burada belirtilmesi gereken en önemli özellik dosyanın tipi size image, audio ya da video şeklinde üç tane tip sunuluyor olacaktır dosyanızın tipini belirtip kaydettikten sonra online içerik görüntülenmesine olanak tanıyan sitelerdekine benzer bir görünüm aracalığı ile dosyalarınızı görüntüleyebilirsiniz.  


    Salı, Ağustos 10, 2010

    SharePoint 2010 External List Erişim Problemi: Access denied by Business Data Connectivity.

    Bir önceki postta External Content Type oluşturup bunu SharePoint 2010'a deploy etmeyi ve bu content type'ı kullanacak bir External List oluşturmayı ele almıştık. Almış olduğum bir mail üzerine bahsedilen işlemler gerçekleştirilirken karşılaşılabilecek bir problemden bahsetmeye karar verdim. BDC ile bir External Content Type oluşturup, oluşturmuş olduğunuz content type'ı SharePoint'e aktardıktan sonra içerik tipinin yetkilerini de ayarlamalısınız, yetkiler ayarlanmadığında postumuzun da başlığında yer alan "Access denied by Business Data Connectivity (Business Data Connectivity tarafından erişim engellendi.)" uyarısı ile karşılaşıyor olmak muhatemeldir.



    Kullanılacak olan External Content Type içerisinde yer alan Entity'nin yetkilendirme ayarlanı gerçeklemek için Central Administration Site'ı ziyaret etmek gerekmektedir. Central Administration Site üzerinde Manage service applications --> Business Data Connectivity Service yolu izlenerek tüm Entity'ler görüntülenebilir buradan da yetkilendirme ayarı gerçekleştirilmek istenen Entity seçildikten sonra Ribbon'da yer alan Set Object Permissions butonu ile ilgili Entity için yetkilendirme ekranı görüntülenir ve Entity'i görüntüleyip kullanabilecek olan kişi ya da gruplar seçilip gerekli yetkilendirme işlemi yapılabilir.



    Yetkilendirme ekranından aşağıdaki resimde de görüldüğü gibi gerekli yetkilendirme yapıldıktan sonra sorun ortadan kalkacaktır. Resim detaylı incelencek olursa sistemde bulunan herhangi bir kullanıcının ilgili Entity'i kullanması sağlanmış oldu, yetkilendirme ayarlarının gerçekleştirebilme yetkisi ise bir yöneticiye verilerek güvenlik sağlanmış oldu.



    Pazartesi, Ağustos 09, 2010

    SharePoint 2010 Nasıl Yapılır? - Visual Studio 2010 ile External List Oluşturmak

    SharePoint 2010 ile birlikte gelen yeniliklerden biri de BDC olarak kısaltabileceğimiz Business Data Connectivity Services'dir. Business Data Connectivity Services MOSS 2007 tarafındaki Business Data Catalog'un yeni versiyonu olarak düşünülebilir. Business Data Connectivity Services ile MOSS 2007'de eksikliği hissedilen bazı sorunlar çözülmüş durumda, External List bu çözümlerden bir tanesi ve hayatımızı ciddi oranda kolaylaştırıyor. Bu postta basit bir External Content Type'ın nasıl oluşturulabileceğini ve bu tipin SharePoint içerisinde nasıl kullanılabileceğinden bahsediyor olacağız.

    External List'ler adından da anlaşılacağı üzere SharePoint'in dışındaki bir veri kaynağında verilerini saklayabilen listelerdir. External List kullanılarak her şeyi SharePoint'in veritabanında depolamak yerine farklı bir yer tercih ederek SharePoint'in veritabanının gereksiz yere dolması engellenebilir. Ya da daha farklı bir pencereden duruma göz atacak olursak SharePoint ile farklı bir sistemin aynı veriyi kullanması söz konusu olduğunda verinin ortak bir veritabanında depolanıyor olması anlamlı bir çözümdür. SharePoint'in daha önceki sürümlerinde bu işlemi gerçekleştirmek için Business Data Catalog ile bir çözüme gidip dışarıdaki datayı tek yönlü olarak SharePoint'e aktarabiliyorduk ve yazmış olduğumuz bir web part ile de dışarıdaki veri kaynağına verileri aktarabiliyorduk. SharePoint 2010'da tek bir çözüm ile dışarıdaki veriler direkt SharePoint'in içinde kullanılıp, bu veriler üzerinde CRUD işlemleri yapılabilmektedir.

    SharePoint 2010'da External List oluşturmak için daha öncesinde bu listenin içinde kullanılacak olan tipi yani External Content Type'ı oluşturmuş olmak gerekiyor. External List oluşturulurken kullanılacak olan External Content Type seçilip listenin ekranlarının bu tipe göre oluşturulması sağlanıyor. External Content Type Visual Studio 2010'da açılan bir Business Data Connectivity Model projesi ile oluşturulup SharePoint 2010'a dağıtılabilir. Visual Studio 2010'da aşağıdaki resimde görüldüğü gibi proje oluşturulabilir. Bu ekrandan projenin detaylarını belirtip OK tuşuna bastıktan sonra projenin hangi site üzerinde çalışağı Visual Studio tarafından soruluyor olacaktır, bu ekrana da modelin deploy edilecek olduğu site'ın URL'i yazılıp devam edilebilir.


    Projeyi oluşturduktan sonra aşağıdaki ekran ile karşılaşılacaktır. Proje ile birlikte Entity1 adında bir tane Entity'nin oluşturulmuş olduğunu göreceksiniz, bu Entity herhangi bir yerden veri çekmeyen sadece id'si olan bir tiptir. Daha sonraki postlarımızda yeni bir Entity oluşturup CRUD işlemlerini nasıl yapacağımıza göz atacağız. Entity1 adındaki proje oluşturulduğuna karşımıza çıkan Entity'nin iki tane de metodu vardır bunlar; ReadList ve ReadItem metodlarıdır. Adlarından da anlaşılacağı üzere bu metodlar listenin tüm elemanlarını ve bir elemanın detayını listelemek amacı ile kullanılacak olan metodlardır. Bu postta Entity'nin detayları ile uğraşmayıp varolan hali ile SharePoint'e Deploy ediyoruz. Projeyi Deploy etmek için Solution Explorer'dan projeye sağ tıklayıp Deploy demek yeterlidir. Deploy tuşuna bastıktan sonra eğer Business Data Connectivity Service çalışıyor ise sorunsuz olarak External Content Type SharePoint'e gönderilecektir. Bu adımdan sonra SharePoint tarafında bir tane External List oluşturulup oluşturulan tip kullanılabilir.



    External List oluşturmak için; Create menüsünden Data bölümüne geçilip External List seçildikten sonra aşağıda görüntülenen bir sonraki ekranda kullanılacak olan tip seçilip External List kullanılmaya başlanır.



    External List oluşturulduktan sonra aşağıdaki görünüm ile karşılaşılıyor olacaktır, fark edileceği üzere bu liste readonly bir listedir çünkü tipimizde sadece ReadList ve ReadItem metodaları yer almaktadır. Tipe Create, Update ve Delete metodları da yazıldıktan sonra listeyi CustomList gibi kullanmak mümkün olacaktır. İlerleyen günlerde blogda bu konuyu da ele alıyor olacağız, herkese iyi çalışmalar.