C#nedir?com
 
YAZAR HAKKINDA
Turhal Temizer
Turhal Temizer
http://www.turhaltemizer.com
İletişme geçmek için tıklayın.
92 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: .Net .Net 3.0 .NEt 3.5 Foundation Paralel Aktivite Parallel Activity Temizer Turhal Visual Studio WF Windows Workflow Workflow Foundation WWF .NET 3.x Turhal Temizer
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : .NET 3.x
Yayınlanma Tarihi : 14.2.2010
Okunma Sayısı : 10004
Yorum Sayısı : 3     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer 'in Blogu
ChatBot UI Sample 11.12.2017
Turhal Temizer 'in Blogu
C# – IRR Function 11.12.2017
Burak Selim Şenyurt
JWT(JSON Web Token) Kullanımı 11.12.2017
Burak Selim Şenyurt
Apache Kafka ile Konuşmaya Çalışmak 11.12.2017
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
WF - Paralel Aktiviteler
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon

Windows Workflow (WF) teknolojisini kullanarak uygulama geliştirmek istediğimizde kullanabileceğimiz aktivite tiplerini incelemeye devam ediyoruz. Şu ana kadar incelemiş olduğumuz iş akışı tipleri sürekli olarak tek sequence activty 'den oluşmakta ve tek yönlü bir iş akışı süreci oluşmaktadır. Eğer ki şu ana kadar görmüş olduğumuz yöntemler de akış esnasında herhangi bir adım sonrasında aynı anda iki akış başlatmak istediğimizde bu durumu gerçekleştirme şansımız olmayacaktı. Eğer ki bir şekilde yapmaya çalışırsakta oldukça uğraştırıcı bir yöntem olacaktır. Bu tür ihtiyaçlarımızı karşılamak için toolbox 'ımızın içeriğini incelediğimizde parallel activity bileşenini görüyor olacağız. Bu bileşen yardımı ile herhangi bir adımdan sonra uygulamamıza ya da tasarladığımız akış esnasında birden fazla işlemi aynı anda yapabilmemize olanak tanıyacaktır. Bu yazımızda ilk olarak paralel activity 'i tanıyacağız. Sonrasında örnekler ile nasıl kullanabileceğimize göz attıktan sonra nelere değindiğimizi özet olarak göz attıktan sonra yazımızı tamamlamış olacağız.

Parallel Activity 'ler iki ya da daha fazla Sequence Activity 'lerden oluşmaktadır. Bu aktivite bileşeni birden fazla sequence activity 'i ve içerisinde yapılmış olan işlemlerin teorik olarak aynı anda başlamasını planlamaktadır. Ancak teorik olarak yer olan bütün sequence activity lerin aynı anda başlayacağı söylense de gerçekte böyle bir durum oluşmaz. Belirsiz bir rastgelelik ile birbirilerini takip ederek gerçekleşmektedir. Yani a aktivitesi tamamlandıktan sonra b aktivitesi başlar ve sonrasında yeniden a aktivitesinin başlayabileceği gibi b aktivitesi de başlayıp tamamlanabilir. Ancak bu rastgelelik iki işleminde sorunsuzca gerçekleşmesini ve tamamlanmasında herhangi bir engel taşımamaktadır. İşlemin en sonunda her iki aktiviteninde sorunsuzca tamamlandığı gözlemlenecektir.

Parallel activity 'lerin ektileyici özelliklerinden biri de dallarda yer alan sequence aktivitelerden herhangi biri Delay Activity yer alırsa, bunun bitmesi beklenmez ve bir diğer daldaki activiteye geçilir ve akışın sorunsuzca işlemesi sağlanmış olur. Bu işlemlerin bu şekilde çalışmasının en basit açıklaması ise bizim hazırlamış olduğumuz uygulamaların işletim sistemleri üzerinde çalışıyor olması ve işletim sistemi de üzerinde çalışan işlemleri thread 'ler ile işletmesinden kaynaklanmaktadır. Thread 'lerde birbirlerinin tamamlanmasını beklemek yerine herhangi bir rastgelelik ile çalışmasından ötürü uygulamanın beklemesi ya da herhangi bir sebepten ötürü bozulması durumunda sırada bekleyen diğer iş parçacığına geçerek işlemi devam ettiriyor olmasıdır.

Delay Activity, iş akışını belirli bir süre duraklamasını ve sonrasında da çıkmasına olanak tanımaktadır. TimeoutDuration ve TimeSpan özelliklerini kullanılır.

Parallel Activity sınıfı System.Workflow.Activities isim alanı altında yer almaktadır. Parallel aktiviteleren sık olarak while döngüsünün kullanılması gereken durumlarda görülmektedir.

Genel olarak paralel actviteyi tanıdığımıza göre artık örneklere geçiş yapabiliriz. Bu yazımızda geliştireceğimiz örneği Visual Studio 2010 RC1 sürümünde geliştiriyor olacağız. Ancak .Net Framework 3.0 sürümünü kullanacağımız için Visual Studio 2008 ya da gerekli eklentileri yüklenmiş 2005 sürümünde de sorunsuzca geliştirilebilir.

Projemizi Workflow seçeneği altında yer alan Sequential Workflow Console Application proje şablonu üzerinde geliştiriyor olacağız. Proje oluştulduğunda karşımıza Sequential Workflow tasarım ekranı gelecektir.


Örneğimizi paralel atvitileer ile yapacağımız için bir adet bu aktivite tipinden tasarım ekranına sürükleyoruz.



Göreceğiniz üzere paralel aktiviteyi tasarım ekranına eklediğimizde iki tane sequence acticity 'nin eklendiğini göreceğiz. Peki iki değilde daha fazla akışı aynı anda çalıştırmak istediğimizde nasıl bir yol izlememiz gerekmektedir. Bunun için paralel aktivite üzerinde sağ tıklama yaptıktan sonra açılan menüden Add Branch seçeneğine tıklamamız yeterli olacaktır. Bu işlem sonrasında artık karşımızda aynı anda çalıştıracağımız üç adet akış olacaktır. Bu işlemi tekrarlayarak ihtiyacımız kadar akış ekleyebilmemiz mümkündür.



Ayrıca paralel aktiviteler içerisinde de akışın iptal olması ya da bozulması durumunda yapılacak işlemler için gerekli özellikler yer almaktadır.

Şimdi uygulama geliştirmek için gerekli olan bileşenleri ekliyoruz ve tasarım ekranında geliştirmiş olduğumuz akış aşağıdaki görünüme kavuşuyor.


Şimdi ise eklemiş olduğumuz CodeActivity lerin arka plan kodlarını yazarak işlemlerimize devam ediyoruz.

using System;

using System.Workflow.Activities;

namespace ParallelActivity
{
    public sealed partial class Workflow1 : SequentialWorkflowActivity
    {
        public Workflow1()
        {
            InitializeComponent();
        }

        private void codeActivity1_ExecuteCode(object sender, EventArgs e)
        {
            Console.WriteLine("Sol taraf çalıştı.");
            solTarafSay++;
        }

        private void codeActivity2_ExecuteCode(object sender, EventArgs e)
        {
            Console.WriteLine("Sag taraf çalıştı.");
            sagTarafSay++;
        }

        private int solTarafSay;
        private int sagTarafSay;
    }
}

Ayrıca while döngüleri içerisinde kullanacak olduğumuz özellikleri de tanımladık. Sonrasında while bileşenin üzerinde sağ tıkladıktan sonra özelliklerinden condition değerine System.Workflow.Activities.Rules.RuleConditionReference değerini atıyoruz. Condition özelliğine ise aşağıda belirtiğimiz şekilde tanımlıyoruz.



Hem sol tarafı hem de  sağ tarafı tanımladıktan sonra while döngülerinin özelliklerinde yer alan condition seçeneğine baktığımızda aşağıdaki görünüme benzer bir hal alması gerekmektedir.



SoSon olarak aktivitenin dallarına delay activity eklerek bekleme durumunda nasıl bir işlem yapacağını gözlemleyeceğiz. Ayrıca tamamlandığını belirtmesi için akışın en sonuna bir tane daha kod aktivitesi ekliyoruz ve geliştirme işlemini tamamlıyoruz.



Sol taraftaki bekleme değerini bir saniye, sağ taraftaki bekeleme değerini iki saniye olarak verdiğimizi hatıralatarak hazırlamış akışı çalıştırıyoruz.



Oluşan program çıktısından da göreceğiniz üzere paralel aktivite bizim belirtmiş olduğumuz bekleme sürelerinin aksine ilk başta sıra ile çalışmasının aksine rastgelelik ile çalıştığını da bu sayede gözlemlemiş oluyoruz.

Sonuç olarak yazımızı toparlamak gerekirse, paralel aktivitelerin birden fazla iş akışını çalıştırabildiğini ve bu akışları aynı anda değil thread lere bağlı olarak rastgele bir sıradanlıkla çalıştırdığını öğrendik. Sonrasında hazırlamış olduğumuz örnek yardımı ile bu anlattış olduğumuz bilgileri doğrulyarak yazımızı tamamladık. Bir sonraki WWF yazımızda Condition kavramına değiniyor olacağız.

Umarım yararlı olabilmiştir.

Turhal Temizer
turhal.temizer@csharpnedir.com
info@turhaltemizer.com

http://turhal.blogspot.com

Makale:
WF - Paralel Aktiviteler .NET 3.0 ve .NET 3.5 Özel Bölümü Turhal Temizer
  • Yazılan Yorumlar
  • Yorum Yaz
MAR
10
2010
Kafanzi karistiran konu nedir? Nasil yardim edebiliim?
MAR
9
2010
www.aykurt.net çok karışdı kafam yhu
MAR
9
2010
www.aykurt.net çok karışdı kafam yhu
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor