• Sonuç bulunamadı

EGE ÜN VERS TES FEN B L MLER ENST TÜSÜ (YÜKSEK L SANS TEZ ) WEB PART VE AJAX TEKNOLOJ LER LE K SELLE T R LEB L R PORTAL UYGULAMASI

N/A
N/A
Protected

Academic year: 2022

Share "EGE ÜN VERS TES FEN B L MLER ENST TÜSÜ (YÜKSEK L SANS TEZ ) WEB PART VE AJAX TEKNOLOJ LER LE K SELLE T R LEB L R PORTAL UYGULAMASI"

Copied!
197
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

(YÜKSEK LSANS TEZ)

WEB PART VE AJAX TEKNOLOJLER LE KSELLETRLEBLR PORTAL UYGULAMASI

ehra EN

Bilgisayar Mühendisli÷i Anabilim DalÕ Bilim DalÕ Kodu : 619.01.00

Sunuú Tarihi : 10.09.2008 Tez DanÕmanÕ: Prof. Dr. Ata ÖNAL

Bornova-øZMøR

(2)
(3)

ehra EN tarafÕndan yüksek lisans tezi olarak sunulan “Web Part Ve AJAX Teknolojileri ile Kiiselletirilebilir Portal UygulamasÕ”

baúlÕklÕ bu çalÕúma E.Ü. Lisansüstü E÷itim ve Ö÷retim Yönetmeli÷i ile E.Ü. Fen Bilimleri Enstitüsü E÷itim ve Ö÷retim Yönergesi’nin ilgili hükümleri uyarÕnca tarafÕmÕzdan de÷erlendirilerek savunmaya de÷er bulunmuú ve 10.09.2008 tarihinde yapÕlan tez savunma sÕnavÕnda aday oybirli÷i/oyçoklu÷u ile baúarÕlÕ bulunmuútur.

Jüri Üyeleri: ømza

Jüri BaúkanÕ : Prof. Dr. Ata ÖNAL ...

Raportör Üye : Yrd. Doç. Dr. Murat Osman ÜNALIR ...

Üye : Yrd. Doç. Dr. Tu÷kan TUöLULAR ...

(4)
(5)

ÖZET

WEB PART VE AJAX TEKNOLOJLER LE KSELLETRLEBLR PORTAL UYGULAMASI

ùEN, ùehra

Yüksek Lisans Tezi, Bilgisayar Mühendisli÷i Bölümü Tez Yöneticisi: Prof. Dr. Ata ÖNAL

A÷ustos 2008, 171 sayfa

Gerçekleútirilmiú olan uygulama kapsamÕnda ASP .NET 2.0 ve AJAX (Asynchronous JavaScript and XML) teknolojileri kullanÕlarak verilerin kiúiselleútirmeye izin verecek ba÷ÕmsÕz birimler halinde sunuldu÷u bir portal tasarÕmÕnÕn ve gerçekleútirimi yapÕlmÕútÕr. AyrÕca Ege Üniversitesi web sitesi üzerinde yer alan “egetel”, “egeduyuru”

isimli hizmetleri ve benzeri hizmetler web servislerine dönüútürülerek portal üzerinde kiúiselleútirilebilir ba÷ÕmsÕz birimler olarak sunulmuútur.

Projenin gerçekleútirim aúamalarÕnda kullanÕlan teknolojilerin ve izlenen yöntemlerin anlatÕmlarÕnÕ içeren bir yol haritasÕ oluúturulmuútur.

Anahtar sözcükler: Portal, ASP .NET 2.0, AJAX, Web Servisi.

(6)
(7)

ABSTRACT

A PERSONALIZABLE PORTAL APPLICATION USING WEB PART AND AJAX TECHNOLOGIES

ùEN, ùehra

MSc. in Computer Engineering Supervisor: Prof. Dr. Ata ÖNAL

August 2008, 171 pages

The goal of the project developed is to design and implement a personalizable portal using ASP .NET 2.0 and AJAX (Asynchronous JavaScript and XML) technologies. In this context the services named

“egetel”, “egeduyuru” and similar services on the web site of Ege University were reimplemented as web services. These services are presented as personalizable, independant modules on the new portal.

Furthermore, a roadmap including the technologies used at implementation is formed.

Key words: Portal, ASP .NET 2.0, AJAX, Web Service.

(8)
(9)

TEEKKÜR

Bu çalÕúma süresince danÕúmanlÕ÷ÕmÕ yapan ve deste÷ini esirgemeyen sayÕn danÕúmanÕm Prof. Dr. Ata ÖNAL’a, bu çalÕúmanÕn oluúmasÕnda büyük katkÕ sa÷layan Yrd. Doç. Dr. M. Osman ÜNALIR’a, aileme, her zaman çalÕúmalarÕmÕ destekleyen sevgili arkadaúÕm Gürkan ÖZÇELøK’e ve TÜBøTAK’a teúekkürü bir borç bilirim.

(10)
(11)

ÇNDEKLER

ÖZET ... V ABSTRACT... VII

ÇNDEKLER ... XI

EKLLER DZN ... XV ÇZELGELER DZN ...XIX SMGELER VE KISALTMALAR DZN ... XXV

1. GR ... 1

2. WEB SERVSLER ... 4

2.1. Visual Studio.NET ile bir Web Servisi Oluúturmak ...6

2.2. Visual Studio .NET ile Uygulamaya bir Web Servisi Eklemek... 8

2.3. PHP ile bir Web Servisi Oluúturmak...9

2.3.1. PHP ile mySQL VeritabanÕ Sunucusuna Ba÷lanmak ...9

2.3.2. KullanÕlacak VeritabanÕnÕ Seçmek ...11

2.3.3. Sorgunun Gönderilmesi ve Sonucun AlÕnmasÕ...12

2.3.4. NuSOAP ve NuSOAP Kullanan Web Servisleri ... 15

3. WEB PART... 23

3.1. Web Part’larÕn YapÕ TaúlarÕ ...25

3.2. Web Part’larÕ Oluúturmak ...26

3.2.1. GenericWebPart Kontrolü ... 26

3.2.2. KalÕtÕmla Özel Bir Sunucu Kontrolü Oluúturmak ...27

3.2.3. KullanÕcÕ Kontrollerini Kullanarak Web Part Oluúturmak ...30

3.3. Web Part SÕnÕfÕnÕn YapÕsÕ ...31

(12)

3.3.1. IWebPart... 32

3.3.2. IWebActionable... 34

3.3.3. IWebEditable ... 39

3.4. Web Part Tipleri... 39

3.4.1. EditorZone... 39

3.4.2. CatalogZone ... 44

3.5. Web Part Manager ... 48

3.5.1. Web Part’larÕ øzlemek...49

3.5.2. Kiúiselleútirme Bilgisini Yönetmek...50

3.5.3. Yaúam Döngüsü OlaylarÕnÕ Kontrol Etmek...50

3.5.4. Sayfa Görünüm ModlarÕnÕ De÷iútirmek ...53

3.5.5. Web Part’larÕ øçe ve DÕúa Aktarmak...56

3.5.6. WebPartManager’Õ Master Page’ler ile Kullanmak...58

3.6. WebPartZone Kontrolü ... 61

3.6.1. Zone’larÕn SÕnÕflandÕrÕlmasÕ...62

3.6.2. WebZone ... 64

3.6.3. Zone Görünümü... 65

3.6.4. Zone’larÕn YapÕsÕ...68

3.6.5. Header, Body ve Footer’Õn Gösterimi...69

3.6.6. Galerileri bir DropDownList Kontrolü øçerisinde Göstermek....71

3.6.7. WebPartChrome’u Kullanmak ... 75

3.7. Web Part Do÷rulama...75

4. KSELLETRME... 80

4.1. Kiúiselleútirme için Saklanan Veriler...80

4.2. Kiúiselleútirme Durumu ...81

4.3. Kiúiselleútirme KapsamÕ...83

(13)

4.4. WebPartPersonalization SÕnÕfÕ ...84

4.5. Kiúiselleútirme Verilerinin Yaúam Döngüsü...88

4.6. Kiúiselleútirme Verilerinin SaklanmasÕ...89

4.7. PersonalizationProvider SÕnÕfÕ...90

4.8. PersonalizationProvider’Õn YapÕlandÕrÕlmasÕ ...91

4.8.1. SqlPersonalizationProvider... 92

4.8.2. VeritabanÕnÕn KurulmasÕ ...93

4.8.3. Personalization VeritabanÕ ùemasÕ ...97

4.9. Kiúiselleútirme Verileri ile ÇalÕúmak ...98

4.9.1. SetPersonalizationDirty ... 99

4.9.2. Kiúiselleútirme Arayüzleri ...103

5. ÜYELK VE ÜYE YÖNETM ... 111

5.1. Kimlik Do÷rulama ...111

5.1.1. Forms/Windows Kimlik Do÷rulamasÕ...111

5.1.2. KullanÕcÕlarÕ SÕnÕrlama ...112

5.1.3. KullanÕcÕ Özellikleri ...113

5.1.4. Kilitli KullanÕcÕ øsimlerini Açmak...113

5.1.5. KullanÕcÕ Silmek...114

5.1.6. ùifre De÷iútirmek...114

5.1.7. ùifre Kurtarmak ...114

5.1.8. Çevrimiçi KullanÕcÕ SayÕsÕ...115

5.2. Yetkilendirme... 115

5.2.1. Yetkilendirmeyi web.config DosyasÕnda TanÕmlamak...115

5.2.2. Rol KavramÕ ...116

5.2.3. SqlRoleProvider ... 116

5.2.4. Rol Eklemek ve KaldÕrmak ...117

(14)

5.2.5. KullanÕcÕlarÕ Rollere ve Rolleri KullanÕcÕlara Eklemek...117

6. AJAX ... 120

6.1. AJAX Nedir?... 120

6.2. AJAX ile Uygulama Oluúturmak ...122

7. UYGULAMANIN ANLATILMASI ... 128

7.1. EgeTel ve EgeDuyuru Web Servisleri ... 128

7.1.1. PHP ile EgeTel ve EgeDuyuru Web Servislerini Oluúturmak..128

7.1.2. Uygulama øçerisine Web Servislerini Eklemek...132

7.1.3. Web Servislerini Kullanan UygulamayÕ Oluúturmak ...132

7.1.4. EgeDuyuru UygulamasÕnÕn Kiúiselleútirmeye øzin Vermesi ....136

7.2. Uygulama øçerisindeki DosyalarÕn TanÕtÕlmasÕ...139

7.3. Kiúiselleútirilebilir Sayfa YapÕsÕ...144

7.3.1. Sayfa Üzerindeki Web Part’larÕn Yönetilmesi ...144

7.3.2. Sistem Yöneticisi SayfasÕ ...153

7.3.3. Sekmeli Görünüm YapÕsÕnÕ Oluúturmak...157

7.3.4. Uygulamaya Web Part’larÕn Eklenmesi ...159

8. SONUÇ... 165

KAYNAKLAR DZN ... 167

ÖZGEÇM ... 171

(15)

EKLLER DZN

ùekil 2.1 UDDI servisi istemciye web servisinin disco uzantÕlÕ dosyasÕnÕn adresini

döndürür... 5

ùekil 2.2 DISCO dosyasÕna yapÕlan istek ile web servisininin tanÕmlama dosyasÕna yönlenilir... 5

ùekil 2.3 WSDL dosyasÕna istek yapÕlarak servis biçimi ö÷renilir...5

ùekil 2.4 Proje çalÕútÕrÕldÕktan sonra web servisine iliúkin metotlarÕn gösterildi÷i ekran görüntüsü ... 8

ùekil 2.5 SOAP web servisinin NuSOAP aracÕlÕ÷Õ ile kullanÕlmasÕ (Ayala D. ve Ark., 2002) ... 17

ùekil 3.1 Web Part’larÕ kullanan bir aspx sayfasÕnÕn mimarisi ...24

ùekil 3.2 Visual Studio 2005’te Web Part’lar için oluúturulan kontroller...24

ùekil 3.3 Web Part kontrolünü oluúturan ö÷eler ...25

ùekil 3.4 AppearanceEditorPart...41

ùekil 3.5 BehaviorEditorPart ...42

ùekil 3.6 LayoutEditorPart...43

ùekil 3.7 PropertyGridEditorPart...44

ùekil 3.8 PageCatalogPart...45

ùekil 3.9 DeclarativeCatalogPart ...46

ùekil 3.10 ImportCatalogPart...47

ùekil 3.11 CatalogZone içerinde stiller tarafÕndan etkilenebilecek alanlar...67

ùekil 4.1 Kiúiselleútirme süreci...88

ùekil 4.2 Kiúiselleútirme verilerinin nasÕl saklandÕ÷Õ ve yüklendi÷i (Neimke, 2006) ..90

ùekil 4.3 “aspnet_regsql” aracÕ Windows GUI uygulamasÕ...95

ùekil 6.1 Klasik web uygulamasÕ ve AJAX uygulamasÕnÕn karúÕlaútÕrÕlmasÕ (Garrett, 2005) ... 121

ùekil 6.2 Bir AJAX uygulamasÕ oluúturmak...123

(16)

ùekil 6.3 AJAX Eklentileri ...123

ùekil 7.1 Egetel Web Servisinin tarayÕcÕda görünümü...130

ùekil 7.2 Egetel web servisinin GetName isimli metoduna iliúkin bilgilerin görünümü ... 130

ùekil 7.3 EgeDuyuru web servisinin tarayÕcÕda görünümü...131

ùekil 7.4 Egetel web servisinin GetAllAnnouncements isimli metoduna iliúkin bilgilerin görünümü ... 131

ùekil 7.5 EgeTel web servisini kullanan uygulama görünümü (metin kutusu kullanÕlarak anahtar kelime ile arama)...132

ùekil 7.6 EgeTel web servisini kullanan uygulama görünümü (bölüm sÕradüzeni içerisinde arama)... 133

ùekil 7.7 A÷aç yapÕsÕndan eriúilen bölüme iliúkin kayÕtlar...134

ùekil 7.8 EgeDuyuru web servisini kullanan uygulama görünümü ...135

ùekil 7.11 SignUp.aspx sayfasÕnÕn görünümü ...140

ùekil 7.12 LogIn.aspx sayfasÕnÕn görünümü...140

ùekil 7.13 PasswordChange.aspx sayfasÕnÕn görünümü ...141

ùekil 7.14 PasswordRecovery.aspx sayfasÕnÕn görünümü ...142

ùekil 7.15 ManageUsers.aspx ...143

ùekil 7.16 Admin rolündeki bir kullanÕcÕ için UsersPage.aspx sayfasÕnÕn görünümü144 ùekil 7.17 Kiúiselleútirilebilir kullanÕcÕ sayfasÕ yapÕsÕ ...145

ùekil 7.18 Yeni bir sekme eklenmesi AdÕm-1...145

ùekil 7.19 Yeni bir sekme eklenmesi AdÕm-2...146

ùekil 7.20 Yeni bir sekme eklenmesi AdÕm-3...147

ùekil 7.21 Seçili olan sekmenin isminin de÷iútirilmesi AdÕm-1 ...147

ùekil 7.22 Seçili olan sekmenin isminin de÷iútirilmesi AdÕm-2 ...148

ùekil 7.23 Seçili olan sekmenin isminin de÷iútirilmesi AdÕm-3 ...148

ùekil 7.24 Seçili olan sekmenin silinmesi AdÕm-1 ...149

(17)

ùekil 7.25 Seçili olan sekmenin silinmesi AdÕm-2 ...149

ùekil 7.26 Catalog görünüm moduna geçilmesi...150

ùekil 7.27 Catalog görünümü...150

ùekil 7.28 KullanÕcÕnÕn yaptÕ÷Õ tüm de÷iúikliklerin sistemden silinmesi ...151

ùekil 7.29 Yeni bir kullanÕcÕ hesabÕ yaratÕlmasÕ ...153

ùekil 7.30 Rol yönetimi bölümü ...154

ùekil 7.31 KullanÕcÕlara atanmÕú bir rol silinmeye çalÕúÕldÕ÷Õnda uyarÕ mesajÕ verilir. ... 154

ùekil 7.33 KullanÕcÕlara atanmÕú bir grup silinmeye çalÕúÕldÕ÷Õnda uyarÕ mesajÕ verilir. ... 155

ùekil 7.35 KullanÕlmayan kullanÕcÕ hesaplarÕnÕn silinmesi ...156

ùekil 7.36 KullanÕcÕ bilgileri yönetim ekranÕ...157

ùekil 7.37 Düzenlenebilir kullanÕcÕ bilgileri ...157

ùekil 7.38 Çevrimiçi kullanÕcÕ sayÕsÕ ...157

(18)
(19)

ÇZELGELER DZN

Çizelge 2.1 C# .NET ile örnek web servisi oluúturmak ...7

Çizelge 2.2 Uygulamaya eklenen web servisi metotlarÕnÕn kullanÕlmasÕ...9

Çizelge 2.3 VeritabanÕna ba÷lanmak ...11

Çizelge 2.4 VeritabanÕnÕ seçmek ...11

Çizelge 2.5 mysql_result fonksiyonunun kullanÕmÕ...13

Çizelge 2.6 mysql_fetch_array fonksiyonunun kullanÕmÕ ...14

Çizelge 2.7 NuSoap sÕnÕfÕnÕ oluúturulan script’e dahil etmek...19

Çizelge 2.8 String bir de÷iúken tanÕmlamak ...19

Çizelge 2.9 Parametreleri bir dizi olarak tanÕmlamak...19

Çizelge 2.10 soapclient nesnesinin ilklenmesi... 19

Çizelge 2.11 Call metodu kullanÕlarak soapclient nesnesine eriúmek...20

Çizelge 2.12 getError() metodu ile hatalarÕ belirlemek...20

Çizelge 2.13 NuSOAP sÕnÕflarÕnÕ uygulamaya dahil etmek...20

Çizelge 2.14 Sunucu nesnesini ilklemek... 21

Çizelge 2.15 Fonksiyonu sunucu nesnesine kayÕtlamak ...21

Çizelge 2.16 Servis olarak sunulan fonksiyon ... 22

Çizelge 2.17 Verilerin Soap sunucusunun servis metoduna aktarÕlmasÕ...22

Çizelge 3.1 GenericWebPart kontrolü için örnek kod ... 26

Çizelge 3.2 GenericWebPart’Õn ChildControl özelli÷ine eriúmek ...27

Çizelge 3.3 WebPart sÕnÕfÕndan kalÕtÕmla bir web part oluúturulmasÕ...28

Çizelge 3.4 Özel sunucu kontrolleri için örnek Render metodu ... 29

Çizelge 3.5 Sunucu kontrolünün sayfaya tanÕtÕlmasÕ ...29

Çizelge 3.6 Özel web part kontrolünün kullanÕlmasÕ...30

Çizelge 3.7 Günün tarihini gösteren kullanÕcÕ kontrolü ...30

Çizelge 3.8 Günün tarihini gösteren web part... 31

Çizelge 3.9 IWebPart arayüzü gerçekleútirimi...34

(20)

Çizelge 3.10 IWebActionable arayüzü gerçekleútirimi...35

Çizelge 3.11 Üzerine tÕklanÕnca günün tarih bilgisini gösteren verb gerçekleútirimi...36

Çizelge 3.12 WebPartEventHandler arayüzünü gerçekleútiren metot...37

Çizelge 3.13 Verb’ler için istemci tarafÕnda bir olay yakalayÕcÕ belirlemek...38

Çizelge 3.14 østemci tarafÕnda bir olay yakalayÕcÕ gerçekleútirimi ...38

Çizelge 3.15 EditorZone belirtimi ... 40

Çizelge 3.16 Özellikleri WebBrowsable öz niteli÷i ile iúaretlemek...44

Çizelge 3.17 WebPartManager belirtimi... 48

Çizelge 3.18 ÇalÕúma zamanÕnda bir web part’Õn sayfaya eklenmesi ...49

Çizelge 3.19 Bir kullanÕcÕ kontrolü web part’ÕnÕn sayfaya eklenmesi ...50

Çizelge 3.20 Zone’lar arasÕnda web part taúÕmayÕ sÕnÕrlandÕran olay ...51

Çizelge 3.21 Page sÕnÕfÕnda meydana gelen olaylar...52

Çizelge 3.22 Dinamik web zone eklemek... 53

Çizelge 3.23 DisplayMode özelli÷inin de÷iútirilmesi ...54

Çizelge 3.24 Sayfa görünüm modlarÕna iliúkin iúlemler ...55

Çizelge 3.25 web.config dosyasÕnÕn dÕúa aktarÕm için yapÕlandÕrÕlmasÕ ...57

Çizelge 3.26 WebPartExportMode de÷erleri ...58

Çizelge 3.27 Master page örne÷i...59

Çizelge 3.28 Master page’e atÕfta bulunan içerik sayfasÕ...60

Çizelge 3.29 StaticConnections elemanÕ kullanÕlarak static connection bildirimi ...60

Çizelge 3.30 ProxyWebPartManager... 61

Çizelge 3.31 WebPartZone belirtimi... 62

Çizelge 3.32 CatalogZone ve EditorZone oluúturmak için bildirimsel söz dizimi...64

Çizelge 3.34 CatalogZone’u oluúturmak için bildirimsel söz dizimi ...68

ùekil 3.12 CatalogZone kontrolü düzeni...69

Çizelge 3.35 RenderFooter metodunun ezilmesi ... 70

Çizelge 3.36 RenderCatalogPartLinks metodunu ezen kod ... 72

(21)

Çizelge 3.37 CatalogZone yardÕmcÕ metodunun kodu...74

Çizelge 3.38 Geri dönüú olayÕnÕ ele almak için gerekli olan kod...74

Çizelge 3.39 Web part do÷rulama özelli÷i...76

Çizelge 3.40 OnAuthorizeWebPart öz niteli÷inin kullanÕmÕ ...76

Çizelge 3.41 WebPartAuthorizationEventArgs sÕnÕfÕnÕn özellikleri...77

Çizelge 3.42 AuthorizationFilter’Õn kullanÕmÕ...78

Çizelge 3.43 OnAuthorizeWebPart metodunun ezilmesi... 79

Çizelge 4.1 WebPartPersonalization sÕnÕfÕnÕn önemli genel parçalarÕ ...85

Çizelge 4.2 WebPartPersonalization sÕnÕfÕnÕn CanEnterSharedScope özelli÷inin kullanÕlmasÕ...85

Çizelge 4.3 WebPartPersonalization sÕnÕfÕnÕn önemli korumalÕ (protected) parçalarÕ.87 Çizelge 4.4 OraclePersonalizationProvider isimli kiúiselleútirme sa÷layÕcÕsÕnÕ yapÕlandÕrmak ...92

Çizelge 4.5 UygulamanÕn SingleKeySqlPersonalizationProvider’Õ kullanmasÕ için gerekli olan yapÕlandÕrma giriúi ...93

Çizelge 4.6 Komut satÕrÕ de÷iúkenleri...96

Çizelge 4.7 Örnek SQL Server kurulum aracÕnÕ kullanan komutlar ...97

Çizelge 4.8 ÇalÕúan verilerini yönetmek için kullanÕlan web part...100

Çizelge 4.9 Verileri kiúiselleútirme aracÕlÕ÷Õyla saklamak için yapÕlacak de÷iúiklik .100 Çizelge 4.10 SetPersonalizationDirty metodunun atanmasÕ için ça÷rÕmlarÕn yapÕlmasÕna izin verecek metot...101

Çizelge 4.11 Web part’Õn üzerindeki SetDirty metodunu ça÷Õrmak ...101

Çizelge 4.12 PortalUser özelli÷inin içinden SetPersonalizationDirty metoduna ça÷rÕmda bulunmak...103

Çizelge 4.13 SetPersonalizationDirty metodunun kiúiselleútirme yükleme iúlemi dÕúÕndaki iúlemler için ça÷rÕlmasÕ ...103

Çizelge 4.14 Save ve Load metot tanÕmlarÕ ...105

(22)

Çizelge 4.15 Bir web part ba÷lantÕ listesi ...105 Çizelge 4.16 Serileútirilebilir (serializable) veri tiplerini saklamak...106 Çizelge 4.17 IVersioningPersonalizabel Load metoduna iliúkin imza...108 Çizelge 5.1 Sayfa yetkilendirme bildirimi ... 111 Çizelge 5.2 Form do÷rulama...112 Çizelge 5.3 KullanÕcÕlarÕ sÕnÕrlama ...113 Çizelge 5.4 SMTP e-posta ayarlarÕ ...114 Çizelge 5.5 Rollerin yetkilendirilmesi ... 115 Çizelge 5.6 Belirli bir klasörün altÕndaki dosyalar veya belirli bir dosya için

yetkilendirme ... 116 Çizelge 5.7 SqlRoleProvider tanÕmÕ...117 Çizelge 6.1 Yeni bir WebPartManager sÕnÕfÕ yaratmak ...125 Çizelge 6.2 østemci script’lerinin System.Web.UI.ScriptManager kullanarak

gösterilmesi ... 125 Çizelge 6.3 Yükleme sonrasÕndaki de÷iúikliklerin görüntülenmesi ...126 Çizelge 6.4 web.config dosyasÕna eklentiler...127 Çizelge 7.1 EgeTel web servisi ayarlarÕ...128 Çizelge 7.2 Web servisi metodunun sunucu nesnesine kayÕtlanmasÕ...128 Çizelge 7.3 Web servisi metodunun gövdesi ... 129 Çizelge 7.4 Son adÕmda gönderilen veriler SOAP sunucusunun service metoduna aktarÕlmasÕ...129 Çizelge 7.5 EgeDuyuru uygulamasÕ için Etkinlik, Birim, BaúlangÕç Tarihi ve Son Tarih seçimlerinin kiúiselleútirilmesi ...138 Çizelge 7.6 Verb menüsüne Settings baúlÕklÕ verb’in eklenmesi ...139 Çizelge 7.7 DeclarativeCatalogPart’a web part’larÕn eklenmesi...152 Çizelge 7.8 Repeater kontrolüne uygulanabilecek úablonlar ...158 Çizelge 7.9 GoogleMaps web part’ÕnÕn portala dahil edilmesi ...160

(23)

Çizelge 7.10 GoogleMaps anahtarÕnÕn script içerisinde kullanÕlmasÕ ...161 Çizelge 7.11 GoogleMaps uygulamasÕnÕn yeniden yüklenmesini sa÷lamak için eklenti

... 161 Çizelge 7.12 API’yi yükleyecek ve uygulamayÕ baúlatacak olan script...162 Çizelge 7.13 API üzerinden uygulamanÕn yüklenmesi ...163 Çizelge 7.14 Sayfa üzerinde isimlendirilmiú bir bölüme ilgili uygulama bileúenlerinin yüklenmesi ... 163

(24)
(25)

SMGELER VE KISALTMALAR DZN

KÕsaltmalar AçÕklamalar

AJAX Asynchronous JavaScript and XML XML Extended Markup Language

HTTP Hypertext Transfer Protocol SOAP Simple Object Access Protocol WSDL Web Service Description Language

DISCO Discovery Protocol

UDDI Universal Description, Discovery and Integration

API Application Programming Interface

(26)
(27)

1. GR

Günümüzde web siteleri büyük bilgi kaynaklarÕdÕr. Kötü tasarlanmÕú web siteleri kullanÕcÕlarÕnÕn bilgi gereksinimlerini yeterince karúÕlayamayabilmektedir. Bu nedenle günümüzde portallar, genellikle verileri belirli bir derecede kiúiselleútirmeyi sa÷layacak biçimde ba÷ÕmsÕz birimler olarak düzenlenmektedir. Portal kullanÕcÕlarÕna bu ba÷ÕmsÕz birimleri kendi bireysel çalÕúma biçemlerine uygun olarak düzenleyebilme olana÷Õ sunulmaktadÕr.

Web kiúiselleútirme bir web sitesinin sunumunun, web sitesi tarafÕndan sa÷lanan bilgi veya servislerin bir veya bir küme kullanÕcÕnÕn açÕk veya üstü kapalÕ tercihlerine uygun biçimde de÷iútirilebilmesidir (Thomson, 2005) (Eirinaki, 2006). Web kiúiselleútirme bir web kullanÕcÕsÕnÕn kendi portal web sayfasÕnÕn içeri÷ini ve görünümünü uyarlayabilme yetene÷idir.

Günümüzdeki web yapÕsÕ ile bilgiye eriúim kullanÕcÕlarÕn siteler üzerinde gezinmesini gerektirmektedir. Oysa kiúiselleútirilmiú bir sayfa bilgiyi kullanÕcÕlara getirmektedir. Böylece kullanÕcÕ istedi÷i bilgiye istedi÷i zamanda eriúebilmektedir. Kiúiselleútirilmiú bir sayfa ile web üzerinde da÷ÕlmÕú olan bilginin kullanÕlarak kullanÕcÕya özel bilgi alma kayna÷ÕnÕn oluúturabilmesi yetene÷i oldukça de÷erlidir (Kravatz, 2000).

Ege Üniversitesi web sitesinin mevcut yapÕsÕ kiúiselleútirmeye izin vermemektedir. Proje kapsamÕnda ASP .NET 2.0 teknolojileri kullanÕlarak Ege Üniversitesi web sitesi kullanÕcÕlarÕnÕn bilgi gereksinimlerini karúÕlayabilmeleri için belirli bir oranda kiúiselleútirmenin sa÷lanabildi÷i bir portalÕn tasarlanmasÕ ve oluúturulmasÕ hedeflenmiútir. ASP .NET 2.0’Õn sa÷lamÕú oldu÷u

(28)

yenilikler ile Google ig ve Live.com gibi sitelerin sa÷lamÕú oldu÷u geliúmiú özelliklere sahip bir portal geliútirilebilecektir.

AJAX teknolojisi kullanÕlarak oluúturulmuú baúlangÕç sayfalarÕ özelleútirilebilir, kolayca kullanÕlabilen ve genellikle tarayÕcÕnÕn baúlangÕç sayfasÕnda olmasÕ gereken sayfalardÕr. AJAX baúlangÕç sayfalarÕ tarayÕcÕ açÕldÕ÷Õnda kullanÕcÕnÕn tercihleri do÷rultusunda düzenlemiú oldu÷u úekilde göstermektedir. Günümüzde birçok baúlangÕç sayfasÕ vardÕr. Bu sayfalardan bilinen bazÕlarÕ ve sayfalarÕn özellikleri úöyledir:

- Netvibes: Netvibes alanÕndaki liderlerden biridir. Arayüzü açÕktÕr, sayfa tasarÕmÕnda sayfanÕn kullanÕlabilirli÷ine önem verilmiútir.

- Pageflakes: Pageflakes de lider baúlangÕç sayfalarÕndan bir tanesidir. Sayfa kullanÕcÕlarÕna üst düzeyde özelleútirme seçenekleri sunmaktadÕr.

- Live.com: Microsoft’un sunmuú oldu÷u, en popüler baúlangÕç sayfalarÕndan bir tanesidir. AçÕk ve sade bir görünüme sahiptir.

- iGoogle: iGoogle tüm seçenekler içerisindeki en basit baúlangÕç sayfasÕdÕr.

- My Yahoo: My Yahoo ortalama internet kullanÕcÕlarÕ için tasarlanmÕútÕr. Arayüzü ortalama bir görünüme sahiptir ve iúlevselli÷i sÕnÕrlandÕrÕlmÕútÕr. Ancak beta My Yahoo yeni ferah bir tasarÕma ve daha düzgün etkileúimli özelliklere (Ajax) sahiptir.

AJAX teknolojisi ile a÷ uygulamalarÕnÕn daha hÕzlÕ yanÕt vermesi sa÷lanabilecektir. AyrÕca Ege Üniversitesi web sitesi üzerinde yer alan

“egetel” isimli telefon rehberi, “egeduyuru” isimli duyuru hizmetleri

(29)

portal üzerinde kiúiselleútirilebilir ba÷ÕmsÕz birimler olarak sunulmak üzere web servislerine dönüútürülmüútür. Böylece veritabanÕ eriúiminde soyutlama sa÷lanarak bu hizmetlerin farklÕ uygulamalar tarafÕndan da kullanÕlabilmesi sa÷lanmÕútÕr.

(30)

2. WEB SERVSLER

Web servisleri platform ve programlama dilinden ba÷ÕmsÕz, açÕk ønternet standartlarÕna dayanan, veri ve nesne paylaúabilmesini sa÷layan birimlerdir. Web servisleri HTTP, XML, SOAP, WSDL, DISCO, UDDI gibi standartlar üzerinde çalÕúÕr.

Web servisleri http (Hypertext Transfer Protocol) protokolü üzerinden bilgi alÕúveriúi yapmaktadÕr. Bu nedenle ønternet üzerinden bir web servisine eriúilebilmektedir. XML (Extensible Markup Language), web servisleri ve servis istemcisi arasÕnda bilgi alÕúveriúinin sa÷lanmasÕnda kullanÕlan bir standarttÕr. SOAP (Simple Object Access Protocol) web servisine platformdan ba÷ÕmsÕz ça÷ÕrÕmlar yapÕlabilmesini sa÷lamaktadÕr. WSDL (Web Service Description Language), web servisinde bulunan fonksiyonlarÕn aldÕ÷Õ parametrelerin ve sonuç olarak döndürdü÷ü bilginin türünü tanÕmlamak için kullanÕlÕr.

DISCO (DÕscovery Protocol) bir sunucu üzerinde, UDDI (Universal Description, Discovery and Integration) ise ønternet üzerinde paylaúÕma açÕlmÕú bütün web servislerinin düzenlenmesinde kullanÕlÕr (Hung ve Ark.,2004).

Web servisleri da÷ÕtÕk yapÕdaki uygulamalarÕn bir parçasÕ olarak geliútirilir. Bir web servisine eriúmek ve servise iliúkin metotlarÕn çalÕútÕrÕlabilmesi için servis istemci rolündeki kullanÕcÕnÕn ilgili servisin sadece adresini bilmesi yeterlidir. KullanÕlacak web servisinin adresi bilinmiyorsa bir UDDI dizini yardÕmÕ ile bir web servisi bulunur. UDDI servisi istemciye web servisinin disco uzantÕlÕ dosyasÕnÕn adresini döndürür (Bkz. ùekil 2.1). DISCO dosyasÕ içerisinde web servisini tanÕmlayan kaynaklara ba÷lantÕ bulunmaktadÕr. DISCO dosyasÕna

(31)

yapÕlan istek ile web servisininin tanÕmlama dosyasÕna yönlenilir (Bkz.

ùekil 2.2). Web servisinin tanÕmlama dosyasÕ olan WSDL dosyasÕna istek yapÕlarak servis biçimi ö÷renilir (Bkz. ùekil 2.3). Sonuç olarak web servisinin metotlarÕ istemci tarafÕndan çalÕútÕrÕlmaya hazÕrdÕr (Habegger ve Quafafou, 2004) (Sarang ve Ark., 2002).

ùekil 2.1 UDDI servisi istemciye web servisinin disco uzantÕlÕ dosyasÕnÕn adresini döndürür.

ùekil 2.2 DISCO dosyasÕna yapÕlan istek ile web servisininin tanÕmlama dosyasÕna yönlenilir.

ùekil 2.3 WSDL dosyasÕna istek yapÕlarak servis biçimi ö÷renilir.

(32)

2.1. Visual Studio.NET ile bir Web Servisi Oluturmak

Visual Studio.NET ile yeni bir web servisi oluúturmak için izlenmesi gereken adÕmlar kÕsaca úöyledir:

- File menüsünde New Project seçene÷ine tÕklanÕr.

- AçÕlan pencerede uygulama dili seçildikten sonra ASP.NET Web Service seçene÷ine tÕklanÕr ve seçim onaylanÕr.

Visual Studio .NET yerel makinede web servisi için gerekli klasörleri otomatik olarak oluúturacaktÕr.

Bir web servis projesinde yer alan dosyalar ve sÕnÕflarÕn oluúturulma amacÕna göre úöyle özetlenebilir:

- Global.asax ve Global.asax.cs : Uygulama ve oturum bazÕnda olay yönetimi yapÕlabilmesini sa÷lar.

- Service.asmx ve Service.asmx.cs : .asmx uzantÕlÕ dosyalar web servisi uygulama dosyalarÕdÕr. Service.asmx’in görevi IIS tarafÕnda web servisinin bulunabilmesini sa÷lamak ve web servisi için giriú noktasÕ olmaktÕr. Service.asmx.cs dosyasÕ yazÕlan program kodlarÕnÕ içeren dosyadÕr.

Web servisindeki metotlarÕn web metodu olarak algÕlanmasÕ için fonksiyonlarÕn baúÕnda [WebMethod] ifadesi yer almalÕdÕr. Aksi halde web o arayüzünde bu metot bulunmayacaktÕr.

Çizelge 2.1’de örnek bir web servisi uygulamasÕ gösterilmektedir.

(33)

Çizelge 2.1 C# .NET ile örnek web servisi oluúturmak

using System;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

[WebService(Namespace = "http://localhost/", Description = "E.Ü.

Telefon rehberi ile ilgili metotlar içerir.", Name="egetelWS")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Service :

System.Web.Services.WebService {

[WebMethod(Description =

"KullanÕcÕya iliúkin telefon numarasÕnÕ döndürür.")]

public int GetPhoneNumber(string userName) {

int phoneNumber;

//ølgili iúlemler burada yapÕlÕr.

return phoneNumber;

}

}

Web servisi için gerekli dll dosyasÕ proje derlendi÷inde otomatik olarak bin klasörü içerisinde oluúturulmaktadÕr. Oluúturulan web servisini test etmek için projenin çalÕútÕrÕlmasÕ gerekmektedir. Proje çalÕútÕrÕldÕktan sonra web servisine iliúkin metotlarÕn gösterildi÷i bir pencere görüntülenir (Bkz. ùekil 2.4). Web servisinin ilgili metodu, ilgili ba÷lantÕ üzerine tÕklanarak çalÕútÕrÕlabilir.

(34)

ùekil 2.4 Proje çalÕútÕrÕldÕktan sonra web servisine iliúkin metotlarÕn gösterildi÷i ekran görüntüsü

Web servisini kullanacak uygulama bir Windows uygulamasÕ, bir ASP.NET uygulamasÕ veya bir mobil uygulama olabilir (Thomas ve Ark., 2003).

2.2. Visual Studio .NET ile Uygulamaya bir Web Servisi Eklemek

Visual Studio.NET ile geliútirilen uygulamaya bir web servisi eklemek için izlenmesi gereken adÕmlar kÕsaca úöyledir:

- Solution Explorer’da proje ö÷esinin üzerine sa÷ tÕklanÕr.

- AçÕlan menüden Add Web Reference seçene÷ine tÕklanÕr.

- Ekrana gelen web servisi ekleme seçenekleri sunan Add Web Reference diyalog penceresinde Web services on the local machine ba÷lantÕsÕna tÕklandÕ÷Õnda localhost üzerindeki tüm web servislerinin bir listesini elde ederiz.

(35)

- Uygulamaya eklemek istenilen web servisi üzerine tÕklandÕktan sonra Add Reference butonuna tÕklanarak web servisi uygulamaya eklenir.

Web servisi uygulamaya eklendikten sonra metodu kullanÕlmak istenilen sÕnÕfa iliúkin bir nesne oluúturularak, ilgili sÕnÕfÕn metotlarÕna eriúim sa÷lanmaktadÕr. Örnek kod Çizelge 2.2’de gösterilmektedir.

Çizelge 2.2 Uygulamaya eklenen web servisi metotlarÕnÕn kullanÕlmasÕ

localhost.egetelWS egetelWS = new localhost.egetelWS();

TextBox1.Text = egetelWS.GetPhoneNumber(userName).ToString();

2.3. PHP ile bir Web Servisi Oluturmak

PHP ile veritabanÕ iúlemleri oldukça kolaydÕr. PHP her veritabanÕna özel fonksiyonlar barÕndÕrÕr. PHP ile mySQL veritabanÕ üzerinde iúlem yapmak için yaklaúÕk 40 tane fonksiyon vardÕr. Ama genellikle birçok iúlemi gerçekleútirmek için bunlarÕn ço÷una gereksinim duymayÕz.

2.3.1. PHP ile mySQL Veritaban Õ Sunucusuna Balanmak

PHP uygulamalarÕnda veritabanÕndan yararlanabilmek için öncelikle uygulamanÕn Web sunucusu aracÕlÕ÷Õyla veritabanÕ dosyasÕ ile ba÷lantÕ kurmasÕ gerekmektedir. MySQL açÕsÕndan ise bu ba÷lantÕ, veri sunucusunda yeni bir oturumun açÕlmasÕ anlamÕna gelmektedir (Demirkol, 2007). øki program arasÕndaki bu iliúki PHP`nin mysql_connect() fonksiyonu ile sa÷lanmaktadÕr.

(36)

$baglanti = mysql_connect(“veritabanÕ sunucusunun adÕ”,

“veritabanÕ kullanÕcÕsÕnÕn adÕ”);

$baglanti = mysql_connect(“veritabanÕ sunucusunun adÕ”,

“veritabanÕ kullanÕcÕsÕnÕn adÕ”, “kullanÕcÕ úifresi”);

VeritabanÕ sunucusunun adÕ, localhost, www.ege.edu.tr gibi ba÷lantÕ kurulacak veritabanÕ sunucusunun adÕdÕr. VeritabanÕ kullanÕcÕsÕnÕn adÕ, mySQL sunucusunda açÕlacak oturumun kimin adÕna açÕlaca÷Õ; kullanÕcÕ úifresi ise mySQL kurulumu sÕrasÕnda belirlenen, ilgili kullanÕcÕ adÕ için tanÕmlanmÕú olan úifre bilgisidir. E÷er kullanÕcÕ için tanÕmlanmÕú bir úifre yok ise fonksiyonun üçüncü parametre giriúi yapÕlmaz. VeritabanÕna, kullanÕcÕ adÕ ve úifre ile eriúimin sa÷lanmasÕ mySQL veritabanÕna izinsiz eriúimleri engellemektedir. Bu veritabanÕ güvenli÷inin sa÷lanmasÕ açÕsÕndan önemli bir özelliktir.

VeritabanÕna ba÷lantÕ sa÷layan fonksiyon sonucu $baglanti isimli bir de÷iúkene atanmÕútÕr. mysql_connect fonksiyonu veritabanÕ ba÷lantÕsÕnÕ sa÷larsa sa÷lanan ba÷lantÕya özel bir de÷er atayacak ve ilgili ba÷lantÕ bilgilerini bu ba÷lantÕ üzerinden izleyecektir. Ba÷lantÕnÕn sa÷lanamadÕ÷Õ durumlarda $baglanti de÷iúkenine “false” de÷eri atanacaktÕr. Çizelge 2.3’te verilen örnek kodda yer alan if deyimi,

$ba÷lanti de÷iúkeninin de÷er içerip içermedi÷ine bakmakta ve de÷iúkende de÷er yok ise, ba÷lantÕ kurma giriúini durdurarak, ziyaretçiye hata mesajÕ göndermektedir.

(37)

Çizelge 2.3 VeritabanÕna ba÷lanmak

$ba÷lanti = mysql_connect("veritabanÕ sunucusunun adÕ", "veritabanÕ kullanÕcÕsÕnÕn adÕ", "kullanÕcÕ úifresi");

if (!$ba÷lanti) {

die("MySQL ile veri ba÷lantÕsÕ kurulamamaktadÕr.);

}

2.3.2. Kullan Õlacak VeritabanÕnÕ Seçmek

Ba÷lantÕ baúarÕyla kurulduktan sonra PHP programÕ, bu ba÷lantÕ üzerinden veritabanÕ sunucusuna, hangi veritabanÕ dosyasÕndan yararlanmak istedi÷ini bildirmelidir. Buna veritabanÕ dosyasÕ seçme iúlemi denir ve mysql_select_db() fonksiyonu ile sa÷lanÕr:

mysql_select_db("veritabanÕnÕn adÕ", $baglanti);

mysql_select_db fonksiyonunun birinci parametresi ba÷lantÕ sa÷lanacak veritabanÕnÕn adÕ, ikinci parametresi ise kullanÕlacak mySQL ba÷lantÕsÕnÕn belirtecidir. Ba÷lantÕ belirteci mysql_connect fonksiyonu tarafÕndan sa÷lanan de÷erdir.

Çizelge 2.4 VeritabanÕnÕ seçmek

mysql_select_db("veritabanÕn adÕ", $ba÷lanti) or die ("VeritabanÕ açÕlamÕyor!".mysql_error());

mysql_select_db fonksiyonunun baúarÕyla çalÕútÕrÕlÕp çalÕútÕrÕlmadÕ÷Õ, fonksiyondan dönen de÷erin “true” veya “false”

olmasÕndan anlaúÕlÕr. Bu de÷er “false” ise bu deyimin die() bölümü çalÕútÕrÕlacak ve tarayÕcÕ penceresine veritabanÕnÕn açÕlamadÕ÷Õ mesajÕyla

(38)

birlikte MySQL`in hata mesajÕ da gönderilecektir. PHP`nin MySQL veritabanÕnÕ seçememesi ço÷u zaman kullanÕcÕ yetkilerinin ønternet ziyaretçilerini kapsayacak biçimde düzenlenmemiú olmasÕndan kaynaklanÕr. Bu durum gerçek Web sunucusunda ortaya çÕkarsa, Web sunucusu yönetimine baúvurmak gerekecektir.

2.3.3. Sorgunun Gönderilmesi ve Sonucun Al ÕnmasÕ

VeritabanÕna sorgu göndermek için mysql_query fonksiyonu kullanÕlmaktadÕr. $sonuc de÷iúkenine ise mysql_query fonksiyonundan geri dönen kayÕt dizisine iliúkin belirteç bilgisi atanmaktadÕr.

$sonuc = mysql_query("SELECT * FROM tablo adÕ");

mysql_query fonksiyonunun ça÷rÕlmasÕndan sonra $sonuc de÷iúkenine dönen kayÕt dizisindeki bilgileri almak için kullanÕlabilecek birkaç fonksiyon vardÕr:

- mysql_result ($sonuc) - mysql_fetch_array($sonuc)

- mysql_fetch_row($sonuc)

Bu üç fonksiyon da temelde $sonuc de÷iúkenini parametre olarak almakta ve de÷iúkenin tuttu÷u kayÕt dizisindeki kayÕtlara eriúimi sa÷lamaktadÕr. Örne÷in aúa÷Õda yer alan ifadede 0. kaydÕn, uye_adi alanÕndaki de÷eri $uyeAdi de÷iúkenine atanmaktadÕr. Dizideki di÷er kayÕtlara indis de÷eri de÷iútirilerek ulaúÕlabilir.

$uyeAdi = mysql_result ($sonuc, 0, "uye_adi");

(39)

VeritabanÕndaki bir tablonun tüm fonksiyonlarÕ listelenmek istendi÷inde mysql_num_rows($sonuc) fonksiyonu sorgu sonucunda dönen kayÕt dizisinde bulunan kayÕt sayÕsÕnÕ vermektedir.

$toplam_kayit_sayisi= mysql_num_rows($sonuc);

mysql_result fonksiyonu kullanÕlarak veritabanÕndaki uyeler adlÕ tablodaki tüm kayÕtlarÕ listeleyen örnek Çizelge 2.5’te gösterilmektedir.

Çizelge 2.5 mysql_result fonksiyonunun kullanÕmÕ

<?

$baglanti = mysql_connect("localhost","uyeadi","úifre");

mysql_select_db("veri", $baglanti);

$sonuc = mysql_query("SELECT * FROM uyeler");

$toplam_kayit_sayisi = mysql_num_rows($sonuc);

for ($i=0; $i<$toplam_kayit_sayisi; $i++) {

$uyeAdi = mysql_result($sonuc,$i,"uye_adi");

$uyeSoyadi = mysql_result($sonuc,$i,"uye_soyadi");

}

?>

mysql_fetch_row fonksiyonu, bir veritabanÕndan elde edilen sonucu satÕr satÕr okumak için kullanÕlmaktadÕr. Fonksiyondan dönen de÷er $satir adÕnÕ verdi÷imiz dizi de÷iúkenine yazÕlmakta ve sonrasÕnda printf fonksiyonu ile bu dizinin elemanlarÕ sÕrayla tarayÕcÕ penceresine gönderilmektedir.

$satir = mysql_fetch_row($sonuc));

mysql_fetch_array fonksiyonu kayÕt dizisinden kayÕtlarÕ almada oldukça kullanÕúlÕdÕr.

$kayit = mysql_fetch_array($sonuc);

(40)

Fonksiyon kayÕt dizisinden bir kayÕt almaktadÕr. KayÕt dizisindeki bütün kayÕtlar alÕnana kadar kayÕtlarÕ alma iúlemine devam edilebilir.

Tüm kayÕtlar alÕndÕktan sonra fonksiyon “false” de÷erini geri döndürür.

Böylece $kayit de÷iúkenine bir kayÕtlÕk bilgi atanÕr. mysql_fetch_array fonksiyonunun her ça÷rÕlÕúÕnda en son alÕnan kayÕttan sonraki kayÕt alÕnÕr. Son kayÕttan sonra yapÕlan ça÷rÕmda fonksiyon “false” de÷erini döndürür.

mysql_fetch_array fonksiyonu kullanÕlarak veritabanÕndaki uyeler adlÕ tablodaki tüm kayÕtlarÕ listeleyen örnek Çizelge 2.6’da gösterilmektedir.

Çizelge 2.6 mysql_fetch_array fonksiyonunun kullanÕmÕ

<?

$baglanti = mysql_connect("localhost","uyeadi","úifre");

mysql_select_db("veri",$baglanti);

$sonuc = mysql_query ("SELECT * FROM uyeler");

while ($kayit=mysql_fetch_array ($sonuc)) {

$uyeAdi =$kayit["uye_adi"];

$uyeSoyadi = $kayit["uye_soyadi"];

}

mysql_free_result($sonuc);

mysql_close($baglanti);

?>

Örnekte gösterilen mysql_free_result($sonuc) fonksiyonu, sistem kaynaklarÕnÕn fazladan kullanÕlmamasÕ için hafÕzada $sonuç de÷iúkenine iliúkin tutulan ve artÕk gereksinim duyulmayan kayÕt dizisi bilgilerini silmektedir. mysql_close fonksiyonu ise oluúturulan veritabanÕ ba÷lantÕsÕnÕ kapatmaktadÕr.

(41)

YukarÕda anlatÕlan fonksiyonlarÕn yanÕsÕra mysql_error(), mysql_errno() fonksiyonlarÕ ile veritabanÕ iúlemleri sÕrasÕnda (yeni kayÕt ekleme, kayÕt silme, kayÕt güncelleme vs.) olasÕ hatalar izlenebilmekte;

mysql_pconnect() fonksiyonu ile kalÕcÕ veritabanÕ ba÷lantÕlarÕ oluúturulabilmekte; mysql_create_db() fonksiyonu ile veritabanÕ

oluúturulabilmekte; mysql_list_dbs(), mysql_list_tables(), mysql_list_fields() gibi fonksiyonlarla veritabanÕ ile ilgili daha ayrÕntÕlÕ

bilgiler dinamik olarak mySQL’den alÕnabilmektedir. PHP ile mySQL sunucusu iúlemlerinin neredeyse tamamÕn yönetilebilmektedir.

2.3.4. NuSOAP ve NuSOAP Kullanan Web Servisleri

NuSOAP, PHP için bir SOAP araç kitidir. Bu araç kitini kullanmak, programcÕyÕ bir SOAP servisine do÷rudan ba÷lanmanÕn zorluklarÕndan kurtarmaktadÕr. NuSOAP, kullanÕcÕlarÕn HTTP üzerinden SOAP mesaj göndermesine ve almasÕna izin veren PHP sÕnÕflarÕ kümesidir. Önceleri SOAPx4 olarak bilinen NuSOAP NuSphere Corporation (http://www.nusphere.com) tarafÕndan da÷ÕtÕlmÕútÕr. AçÕk kaynak kodludur ve GNULGPL lisansÕ altÕndadÕr.

SOAPx4 PHP için birçok Web Servisi araç kitinin çekirde÷i olarak kullanÕlmÕútÕr (PEAR-SOAP ve Active State yazÕlÕmÕnÕn basit Web Services API’sÕ gibi) (Ayala D. ve Ark., 2002).

NuSOAP’Õn üstünlüklerinden bir tanesi bir PHP eklentisi olmamasÕna ra÷men sadece PHP ile yazÕlmÕú olmasÕdÕr. Bu neredeyse tüm PHP geliútiricilerinin NuSOAP’Õ kullanabilece÷i anlamÕna gelmektedir.

NuSOAP bileúen tabanlÕ Web Servisi araç kitidir. Web servisi etkileúimi soapclient olarak adlandÕrÕlan üst seviye bir istemci sÕnÕfÕ ile

(42)

sa÷lanmaktadÕr. Bu üst seviyeli sÕnÕf kullanÕcÕlara SOAP mesajÕnÕn kendisinin gönderilmesi ve alÕnmasÕnÕn yönetmenin yanÕsÕra HTTP yetkilendirme kimli÷i, HTTP proxy bilgileri gibi seçenekleri belirleme olana÷ÕnÕ sunmaktadÕr.

SOAP iúlemleri call() metoduna çalÕútÕrÕlmak istenen iúlemin adÕ parametre olarak geçirilerek çalÕútÕrÕlÕr. KullanÕlacak olan servis bir WSDL dosyasÕ sa÷lÕyorsa soapclient sÕnÕfÕ yapÕlandÕrÕcÕ metoduna WSDL dosyasÕnÕn URL’sini parametre olarak alÕr ve WSDL dosyasÕnÕ ayrÕútÕrmak için ve içerisindeki tüm verileri çÕkartmak için wsdl sÕnÕfÕnÕ kullanÕr. WSDL sÕnÕfÕ iúlem veya ba÷lama bazÕnda verileri çÕkartan metotlara sahiptir (Ayala D. ve Ark., 2002).

Soapclient, WSDL dosyasÕndan aldÕ÷Õ bu bilgileri kullanÕcÕ servise ça÷rÕda bulundu÷unda parametreleri úifrelemek ve SOAP zarfÕnÕ oluúturmak için kullanÕr. Ça÷rÕ çalÕútÕrÕldÕ÷Õnda, soapclient sÕnÕfÕ dÕúarÕya giden mesajÕ göndermek ve gelen mesajÕ almak için soap_transport_http sÕnÕfÕnÕ kullanÕr. Gelen mesaj soap_parser sÕnÕfÕ kullanÕlarak ayrÕútÕrÕlÕr.

ùekil 2.5’te SOAP web servisinin NuSOAP aracÕlÕ÷Õ ile kullanÕlmasÕ anlatÕlmaktadÕr.

(43)

ùekil 2.5 SOAP web servisinin NuSOAP aracÕlÕ÷Õ ile kullanÕlmasÕ (Ayala D. ve Ark., 2002)

KullanÕlacak olan web servisi bir WSDL dosyasÕ sa÷lamÕyorsa izlenen süreç farklÕlÕk göstermektedir. Servise iliúkin URL soapclient sÕnÕfÕnÕn yapÕlandÕrÕcÕ metoduna parametre olarak geçirilir. øúlemler yine soapclient nesnesinin call metodu kullanÕlarak çalÕútÕrÕlÕr, ama WSDL dosyasÕ tarafÕndan sa÷lanan ayrÕntÕlar parametre olarak geçirilmelidir.

Özel tipte olan parametreler soapval sÕnÕfÕ kullanÕlarak gösterilir (Ayala D. ve Ark., 2002).

2.3.4.1. Kurulum ve YapÕlandÕrma

NuSOAP’Õn kurulumu oldukça basittir. Kurulum sÕrasÕnda izlenmesi gereken adÕmlar úu biçimde listelenebilir:

- DosyalarÕ http://dietrich.ganx4.com/nusoap/index.php web adresinden indirin.

- Nusoap.php dosyasÕnÕ zip’ten çÕkarÕn.

- Kolay eriúim için sÕnÕflarÕ tanÕmlÕ olan bir konuma kopyalayÕn.

- SÕnÕfÕ script’inize ekleyin.

(44)

include(‘nusoap.php’)

Verilen örnekte nusoap sÕnÕfÕnÕ oluúturulan script’e eklemek için include fonksiyonu kullanÕlmÕútÕr. Bu fonksiyon nusoap.php’nin konumu do÷ru de÷ilse bir uyarÕ mesajÕ üretecektir, ancak script’in geri kalanÕnÕ iúletmeye devam edecektir. Bu fonksiyona alternatif olabilecek birkaç fonksiyon daha vardÕr (Ayala D. ve Ark., 2002):

- require: bu fonksiyon include() fonksiyonuna benzerdir, ancak hatayÕ script’in çalÕúmasÕnÕ sonlandÕran ölümcül bir hata oluúturarak ele alÕr.

- require_once: bu fonksiyon require() fonksiyonuna benzerdir, ancak script’e dahil edilecek olan dosya halihazÕrda dahil edilmiúse onu tekrar dahil etmeyecektir.

- include_once: bu fonksiyon include() fonksiyonuna benzerdir, ancak script’e dahil edilecek olan dosya halihazÕrda dahil edilmiúse onu tekrar dahil etmeyecektir.

2.3.4.2. Basit bir PHP SOAP stemci Örnei

Bu bölümde bir SOAP istemcisi oluúturmak için gereken temel iúlemler anlatÕlmaktadÕr: bir SOAP servisinin ça÷rÕlmasÕ, ona parametre gönderilmesi ve yanÕtÕn alÕnmasÕ. Dosya ismi ornekIstemci.php olarak belirlenmiútir (Ayala D. ve Ark., 2002).

ølk olarak NuSoap sÕnÕfÕ oluúturulan script’e dahil edilir (Bkz.

Çizelge 2.7). Servise gönderilmek istenen string için bir de÷iúken oluúturulur (Bkz. Çizelge 2.8). SonrasÕnda parametreler SOAP istemcisine bir dizi olarak aktarÕlÕr (Bkz. Çizelge 2.9).

(45)

Çizelge 2.7 NuSoap sÕnÕfÕnÕ oluúturulan script’e dahil etmek

<?php require_once(‘nusoap.php’);

Çizelge 2.8 String bir de÷iúken tanÕmlamak

$mesaj = 'Mesaj!';

Çizelge 2.9 Parametreleri bir dizi olarak tanÕmlamak

$parametreler = array($mesaj);

ArtÕk soapclient nesnesi ilklenebilir. Nesne yapÕlandÕrÕcÕ metodu, sunucunun URL’sini parametre olarak alÕr (Bkz. Çizelge 2.10).

Çizelge 2.10 soapclient nesnesinin ilklenmesi

$s = new soapclient(‘http://localhost/../ornekIstemci.php’);

Call metodu kullanÕlarak soapclient nesnesine eriúilmek istenen servisin ne oldu÷u belirtilir, sonra ona parametrelerden oluúan dizi aktarÕlÕr, sonrasÕnda metot geriye sunucunun yanÕtÕnÕ döndürür (Bkz.

Çizelge 2.11). Dönen yanÕt PHP’ye özgü bir tiptedir (string, integer, array gibi).

(46)

Çizelge 2.11 Call metodu kullanÕlarak soapclient nesnesine eriúmek

$sonuc = $->call(‘ornekMetot’,$parametreler);

NuSOAP getError() metodu ile hatalarÕ belirleme olana÷Õ sa÷lar (Bkz. Çizelge 2.12). Bir hata oluútu÷unda bu metot hatayÕ tanÕmlayan bir hata string’i geri döndürür, aksi durumda “false” de÷erini geri döndürür.

Çizelge 2.12 getError() metodu ile hatalarÕ belirlemek

if(!$hata = $s->getError()) echo ‘Sonuc : ’ .$sonuc else

echo ‘Hata : ’ .$hata

2.3.4.3. Basit bir PHP SOAP Sunucu Örnei

Bu bölümde, önceki bölümde oluúturulan örnek istemci tarafÕndan eriúilen, ornekMetot isimli sunucu servisi gerçekleútirimi anlatÕlmaktadÕr. Öncelikle NuSOAP sÕnÕflarÕ uygulamaya dahil edilmelidir (Bkz. Çizelge 2.13).

Çizelge 2.13 NuSOAP sÕnÕflarÕnÕ uygulamaya dahil etmek

<?php require_once(‘nusoap.php’);

SonrasÕnda soap_server sÕnÕfÕnÕn sa÷ladÕ÷Õ sunucu nesnesi ilklenebilir (Bkz. Çizelge 2.14).

(47)

Çizelge 2.14 Sunucu nesnesini ilklemek

$s = new soap_server;

Fonksiyonun uzaktan ça÷rÕlmasÕna izin vermek için fonksiyon sunucu nesnesine kayÕtlanmalÕdÕr (Bkz. Çizelge 2.15). Bu yapÕlmazsa sunucu, bir istemci servise eriúti÷inde servisin mevcut olmadÕ÷Õna dair bir hata oluúturacaktÕr.

Çizelge 2.15 Fonksiyonu sunucu nesnesine kayÕtlamak

$s = register->(‘ornekMetot’);

ArtÕk servis olarak sunulan fonksiyon yazÕlabilir (Bkz. Çizelge 2.16). Öncelikle aktarÕlan de÷erin bir string olup olmadÕ÷Õ kontrol edilmelidir. E÷er parametre bir string de÷ilse, soap_fault sÕnÕfÕ kullanÕlarak istemciye bu fonksiyona bir string de÷eri aktarmasÕ gerekti÷ini belirten bir hata mesajÕ döndürülür.

(48)

Çizelge 2.16 Servis olarak sunulan fonksiyon

function ornekMetot($aktarilanString) {

if(is_string($aktarilanString)) {

return $aktarilanString;

} else {

return new soap_fault('Client', '', 'Bu servis için

gönderilen parametre

string tipinde olmalÕdÕr.') }

}

Son adÕmda gönderilen veriler SOAP sunucusunun service metoduna aktarÕlmalÕdÕr (Bkz. Çizelge 2.17). Bu metot gelen iste÷i iúler ve uygun fonksiyonu ça÷ÕrÕr. SonrasÕnda yanÕtÕ biçimlendirir ve yazar.

Çizelge 2.17 Verilerin Soap sunucusunun servis metoduna aktarÕlmasÕ

$s->service($HTTP_RAW_POST_DATA);

(49)

3. WEB PART

Bir portal sundu÷u seçeneklerle kullanÕcÕya kendi sayfasÕnÕ düzenleyebilme olana÷Õ verir. FarklÕ firmalarÕn farklÕ portal çözümleri mevcuttur. ASP.NET 2.0 di÷er geliútirme ortamlarÕndan farklÕ olarak kolay bir biçimde kiúiselleútirilebilen portal uygulamalarÕ geliútirmek için hazÕr kontroller ve ara birimler sunmaktadÕr. ASP .NET 2.0’da portal web part’lardan oluúur. Bir web part görsel bir bileúendir. ASP .NET 2.0’da bir web part bir sunucu kontrolü, kullanÕcÕ kontrolü, kullanÕcÕ tarafÕndan oluúturulmuú özel bir kontrol veya baúkalarÕ tarafÕndan oluúturulmuú bir bileúen olabilir (Demirkol, 2007).

ASP .NET 2.0 WebPart kontrolleri kullanÕcÕlara web sayfalarÕnÕn içeri÷ini, görünümünü ve davranÕúÕnÕ do÷rudan bir tarayÕcÕ ile de÷iútirebilme olana÷Õ sa÷layan bir küme tümleúik kontroldür. YapÕlan de÷iúiklikler kullanÕcÕ bazlÕ kaydedilmektedir. Portal sayfasÕna yapÕlan her ziyarette eklenmiú ve düzenmiú olan tüm web part’lar bÕrakÕldÕklarÕ biçimde orada olacaktÕr. Tüm bu iúlevselli÷in sa÷lanmasÕ çok fazla kodlamayÕ gerektirmemektedir (Liu ve Ark., 2005). http://start.com Microsoft Research tarafÕndan yaratÕlan web tabanlÕ bir portaldÕr.

WebPart tipi soyut bir sÕnÕf olup, bir WebPart bileúeni için gerekli tüm temel alt yapÕyÕ sunmaktadÕr. WebPart kontrolleri WebPartZone kontrolleri içinde yer almaktadÕr. WebPartZone kontrolleri WebPartManager kontrolleri tarafÕndan yönetilmektedir. Bu kontrolleri içeren bir aspx sayfasÕnÕn mimarisi ùekil 3.1’de gösterilmektedir.

(50)

ùekil 3.1 Web Part’larÕ kullanan bir aspx sayfasÕnÕn mimarisi

Visual Web Developer 2005 Express veya Visual Studio 2005 editörlerinde web part’lar için oluúturulan kontroller ùekil 3.2ùekil 2.1’de gösterilmektedir.

ùekil 3.2 Visual Studio 2005’te Web Part’lar için oluúturulan kontroller

(51)

3.1. Web Part’lar Õn YapÕ TalarÕ

Web part’lar sayfalara eklenebilen hava durumu, son haberler, duyurular gibi bilgi niteli÷inde bileúenlerdir. Web part’lar bir portal uygulamasÕnÕn dinamik içeri÷ini gösteren temel yapÕ taúlarÕ olarak düúünülebilir. ASP .NET 2.0’da web part’lar ile çalÕúÕlabilmesi için WebPart sunucu kontrolü sa÷lanmÕútÕr.

Bir web part genellikle bir baúlÕk çubu÷u, bir çerçeve ve dinamik içeri÷i gösteren bir gövdeden oluúmaktadÕr. Bir web part, kullanÕcÕya web part’Õ uyarlama ve kullanma olana÷Õ veren bir web kontrolü ile yönetilir. ùekil 3.3’te standart bir web part kontrolünü oluúturan temel elemanlar gösterilmektedir.

ùekil 3.3 Web Part kontrolünü oluúturan ö÷eler

(52)

3.2. Web Part’lar Õ Oluturmak

Web part’larÕ yaratmak için temelde iki seçenek vardÕr. KullanÕcÕ veya sunucu kontrollerinin bir web zone içerisine sürüklenmesi ve sonrasÕnda çatÕnÕn bu kontrolleri GenericWebPart olarak bilinen genel bir sarmalayÕcÕ içine yerleútirmesiyle veya do÷rudan WebPart sÕnÕfÕndan türetilen bir sÕnÕf yaratarak bir web part yaratÕlabilir.

3.2.1. GenericWebPart Kontrolü

Bir web part zone’una standart ASP .NET sunucu kontrollerini ekledi÷imizde (Button, Calendar, Label vs.), bu kontroller bir dönüúümün sonucunda birer web part olurlar. Bu kontroller verb’lere, title’lara ve editör part’lar tarafÕndan çalÕúma zamanÕnda düzenlenebilecek özelliklere sahip olurlar. Standart ASP .NET sunucu kontrolleri bir web part zone’a eklendi÷inde Çizelge 3.1’deki gibi bir kod oluúmaktadÕr.

Çizelge 3.1 GenericWebPart kontrolü için örnek kod

<asp:WebPartZone ID="WebPartZone1" runat="server">

<ZoneTemplate>

<asp:Label ID="Label1" runat="server" Text="Label">

</asp:Label>

</ZoneTemplate>

</asp:WebPartZone>

WebPartZone’a eklemiú oldu÷umuz Label kontrolü yeni bir tipteki kontrol ile yer de÷iútirir ve WebBrowsableObject özelli÷i ile sarmalanÕr. Gerekti÷inde Label kontrolüne GenericWebPart’Õn ChildControl özelli÷i üzerinden eriúilebilir.

(53)

Çizelge 3.2 GenericWebPart’Õn ChildControl özelli÷ine eriúmek

if (wp is GenericWebPart) {

Type t = ((GenericWebPart)wp).ChildControl.GetType();

string typeName = t.Name;

}

Portal çatÕsÕ, Label kontrolünü zone’a eklemeden önce GenericWebPart sarmalÕyÕcÕ içerisine koyarak bir web part statüsüne yükseltir. Bu, web part zone’lara eklenen tüm web part olmayan kontroller için gerçekleúir. Web part’larÕ do÷rudan WebPart sÕnÕfÕndan kalÕtÕm yoluyla yaratmaktansa, kullanÕcÕ kontrolleri yaratabilmek ve onlara web part gibi davranÕlabilmesini sa÷lamak web part’larÕn hÕzlÕ bir biçimde ve kolayca yaratÕlabilmesini olanaklÕ kÕlar (Neimke, 2006).

3.2.2. Kal ÕtÕmla Özel Bir Sunucu Kontrolü Oluturmak

Bu bölümde soyut bir web part sÕnÕfÕndan kalÕtÕmla özel bir sunucu kontrolü (web part) oluúturulmasÕ ve sonrasÕnda oluúturulan bu web part’Õn bir web sayfasÕna kaydedilerek eklenmesi anlatÕlmaktadÕr.

KullanÕcÕ kontrollerini zone’lar üzerine sürüklenmesi ve onlara web part’mÕú gibi davranÕlmasÕ, web part’larÕn baúka uygulamalarla paylaúÕlmasÕ gerekmiyorsa iyi bir yöntemdir. Yeniden kullanÕlabilirlikte kullanÕcÕ kontrolleri özel kontrollerden daha üstün de÷ildir; çünkü özel kontroller uygulamalar arasÕnda paylaúÕlabilmektedir. Web part’larÕnÕzÕ kendi uygulamalarÕnÕz arasÕnda paylaúmanÕz gerekiyorsa veya üçüncü partiler tarafÕndan yeniden kullanmak üzere paketlemek istiyorsanÕz özel kontroller yaratmayÕ tercih edebilirsiniz. Bunu yapmak için

(54)

do÷rudan WebPart sÕnÕfÕndan türetilen özel sÕnÕflar yaratÕlmasÕ gerekmektedir (Neimke, 2006).

WebPart sÕnÕfÕ System.Web.UI.WebControls.WebParts isim uzayÕnda yaúmaktadÕr ve tüm web part kontrolleri için temel sÕnÕf olarak hizmet vermektedir. GenericWebPart, WebPart sÕnÕfÕndan türetilmiútir.

WebPart sÕnÕfÕ ise Part isimli temel bir sÕnÕftan türetilmiútir. Part sÕnÕfÕ tüm web part’lara iliúkin temel özelliklere -description, title gibi- sahiptir.

Çizelge 3.3 WebPart sÕnÕfÕndan kalÕtÕmla bir web part oluúturulmasÕ

public class CustomWeatherPart : WebPart {

public CustomWeatherPart() { ... } }

Özel sunucu kontrolleri ile çalÕúÕldÕ÷Õnda karúÕlaúabilecek problemlerden biri kullanÕcÕ arayüzü elemanlarÕnÕn kodlar aracÕlÕ÷Õ ile oluúturulmasÕdÕr. Kod içerisinde bir kontrolün gösterilmesi, stil bilgileri dahil ona iliúkin tüm özelliklerin kod içerisinde oluúturulmasÕnÕ gerektirmektedir. Bir kontrolün sunumu için gereken kod miktarÕ arttÕkça özel sunucu kontrollerinin oluúturulmasÕ oldukça zorlaúabilmektedir. KullanÕcÕ kontrolleri kullanÕldÕ÷Õnda ise, kullanÕcÕ kontrollerinin araç kutusu üzerinden istenilen yere sürüklenmesi için Visual Studio’nun tasarÕm zamanÕ araçlarÕ kullanÕlabilir. AyrÕca kontrolün özelliklerinin de÷iútirilmesi için Visual Studio içerisindeki özellik editörleri ve di÷er sihirbazlar kullanÕlabilir.

(55)

Özel sunucu kontrolleri için arayüz elemanlarÕ, kontrolün Render metodu boyunca çalÕúan kodlar yazÕlarak oluúturulmaktadÕr. Render metodu tüm web kontrolleri için ortak bir metottur. Her bir web kontrolünü göstermek için ASP .NET çalÕúma zamanÕ tarafÕndan ça÷rÕlmaktadÕr. Render metodunda kullanÕcÕ arayüzü elemanlarÕ do÷rudan HtmlTextWriter nesnesinin içerisine yazÕlÕr. Bu nesne, ASP .NET çatÕsÕ aracÕlÕ÷Õyla parametre olarak Render metoduna geçirilir.

Çizelge 3.4 özel sunucu kontrolleri için örnek bir Render metodu gösterilmektedir.

Çizelge 3.4 Özel sunucu kontrolleri için örnek Render metodu

protected override void Render(HtmlTextWriter writer) {

...

Image img = new Image();

img.ImageUrl = string.Format("~/images/{0}.gif",

todaysPhoto.ToString());

img.AlternateText = "Today's Photo";

writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, "center");

writer.RenderBeginTag(HtmlTextWriterTag.Div);

img.RenderControl(writer);

writer.WriteBreak();

writer.Write(todaysWeather.ToString());

writer.RenderEndTag();

}

Sunucu kontrolünün sayfaya kayÕtlanmasÕ gerekmektedir (Bkz.

Çizelge 3.5).

Çizelge 3.5 Sunucu kontrolünün sayfaya tanÕtÕlmasÕ

<%@ Register TagPrefix="wp" Namespace="CustomWebPartNs" %>

(56)

Kontrol sayfaya kayÕtlandÕktan sonra oluúturulmuú olan özel web part bir ZoneTemplate içerisinde kullanabilir. Çizelge 3.6’da özel bir web part’Õn ZoneTemplate içerisinde kullanÕmÕna bir örnek verilmektedir.

Çizelge 3.6 Özel web part kontrolünün kullanÕlmasÕ

<asp:WebPartManager ID="WebPartManager1" runat="server">

</asp:WebPartManager>

<asp:WebPartZone ID="WebPartZone1" runat="server">

<ZoneTemplate>

<wp:CustomWeatherPart ID="CustomWeatherPart1"

runat="server" Title="Todays Photo" />

</ZoneTemplate>

</asp:WebPartZone>

3.2.3. Kullan ÕcÕ Kontrollerini Kullanarak Web Part Oluturmak

KullanÕcÕ kontrolleri ascx uzantÕlÕ özel dosyalardÕr. KullanÕcÕ kontrolleri de web part olarak kullanÕlabilmektedir. Benzer biçimde ascx dosyalarÕ da web part zone’lara eklenerek web part olarak kullanÕlabilmektedir (Neimke, 2006).

Günün tarihini gösteren bir web part oluúturmak üzere hazÕrlanan bir kullanÕcÕ kontrolü Çizelge 3.7’de gösterilmektedir.

Çizelge 3.7 Günün tarihini gösteren kullanÕcÕ kontrolü

<div>

<span style="width: 100px"> Todays Date: </span>

<%= DateTime.Now.ToShortDateString() %>

</div>

(57)

HazÕrlanan kullanÕcÕ kontrolü sayfa tasarÕm modundayken bir web part zone içerisine sürüklenip bÕrakÕldÕ÷Õnda kullanÕcÕ kontrolü için Register ifadesinin ve kodun ZoneTemplate gövdesine eklendi÷i görülebilir.

Çizelge 3.8 Günün tarihini gösteren web part

<%@ Register Src="TodaysDate.ascx" TagName=" TodaysDate"

TagPrefix="uc1" %>

<asp:WebPartZone ID="WebPartZone1" runat="server">

<ZoneTemplate>

<uc1:TodaysDate id=" TodaysDate"

runat="server" Title="Todays Date" />

</ZoneTemplate>

</asp:WebPartZone>

Özel sunucu kontrolleri kullanÕlarak ve temel WebPart sÕnÕfÕndan türetme yoluyla veya kullanÕcÕ kontrolleri kullanÕlarak web part’lar oluúturulabilmektedir.

3.3. Web Part S ÕnÕfÕnÕn YapÕsÕ

Bu bölümde WebPart sÕnÕfÕnÕn destekledi÷i arayüz ve özellikler, bu arayüz ve özelliklerin di÷er portal çatÕ bileúenlerinin onunla etkileúmesine nasÕl olanak sa÷ladÕ÷Õ anlatÕlmaktadÕr.

WebPart sÕnÕfÕ 3 arayüzü gerçekleútirmektedir:

- IWebPart: Bir web part’Õn çekirdek özelliklerini tanÕmlar. Title, Description, Height ve Width gibi.

- IWebActionable: Bir web part’Õn sa÷ladÕ÷Õ verb’leri tanÕmlar.

(58)

- IWebEditable: Web part’Õn bazÕ özelliklerini yönetmek için özel editör part’larÕ sa÷layan bir web part’Õ tanÕmlar.

WebPart sÕnÕfÕ bu üç arayüzü gerçekleútirdi÷inden, portal çatÕsÕnÕn her bir parçasÕ tüm web part’lar ile etkileúimde bulunabilmektedir.

Örne÷in, bir sayfa ilk görüntülendi÷inde her bir web part’Õn yetkisi web part manager’a verilir. SonrasÕnda web part manager bu arayüzleri bir web part’Õn sahip oldu÷u yetenekleri belirlemede kullanmaktadÕr. Bu nedenle, web part manager bir web part’Õn yetkisini aldÕ÷Õnda, ilgili web part’Õn özellikleri hakkÕnda herhangi bir úey bilmek zorunda de÷ildir.

Ancak web part manager, kontrolün title ve verbs gibi ayÕrdedici özelliklere sahip oldu÷unu bilir.

3.3.1. IWebPart

IWebPart arayüzü tüm web part’lar için ortak olan özellikleri tanÕmlamaktadÕr (Neimke, 2006).

- CatalogIconImageUrl: Web part bir web part katalo÷unda görüntülendi÷inde, web part için gösterilen resmin URL’sidir.

- Description: Bir web part, web part katalo÷unda görüntülendi÷inde, o web part hakkÕndaki tanÕmlayÕcÕ metindir.

Bu özellik bir web part hakkÕnda araç bilgisi bilgisinin gösterilmesinde kullanÕlÕr.

- Subtitle: Bir web part kontrolünün tam baúlÕ÷ÕnÕ oluúturmak için Title özelli÷i ile birlikte kullanÕlÕr.

- Title: Bir web part kontrolünün baúlÕ÷ÕdÕr.

- TitleIconImageUrl: Web part’Õn baúlÕk çubu÷unda gösterilen resmin URL’sidir.

Referanslar

Benzer Belgeler

S�gmaglobal esnek bar�yer s�stemler� yüksek darbe dayanımı, bakım onarım mal�yet� olmaması ve darbe sonrası esk� hal�n� alab�len esnek yapısı ve bu esnek

Psödoprogresyon grubunda, RT ve eú zamanlı TMZ tedavisi öncesinde, postoperatif dönemde elde olunan ilk MR incelemesi ile tedavi sonrası 1.ayda elde olunan MR incelemesi

økinci bölümde kimyasal tuhaf y ÕldÕzlar ve yayÕlma iúlemi ile ilgili olarak gerekli görülen bilgilerin verilmesinin ard Õndan, üçüncü bölümde HgMn yÕldÕzlarÕnÕn

Çekirdek aileye dönüşün başladığını, yaşlı bireylerin (anne-baba) ailedeki o otoriter ve saygın rolünün ortadan kalktığını ve yaşlıların artık

Tanım 4.2.1.: X bir topolojik uzay ve G de nesne kümesi &amp;( ) = olacak şekilde bir grupoid ve U ise X uzayının bir açık alt kümesi olsun ( ); | tam altgrupoidinin U-

Şehir Pazarlaması Unsurlarından Kültür ve Turizm Ölçeğine İlişkin Yapılan Doğrulayıcı Faktör Analizi Sonucu Elde Edilen Faktör Yükleri .... Şehir

Son olarak bir sonsuz silin- dirli zaman harmonik elektromanyetik dalgalar›n saç›lma problemi ve bu silin- dirin keyfi kesitinde zaman harmonik düzlem dalgan›n saç›lma

Mikroorganizmalar n ozon ve/veya negatif iyona duyarl l klar türe ba l de i im göstermekle beraber, bakteri konsantrasyonu veya ba l nem, kültür ortam bile enleri ve