SORU
4 ŞUBAT 2012, CUMARTESİ


Olay güdümlü model ve reaktör örüntü arasındaki fark nedir?

Vikipedi Reactor Pattern makale:

Reaktör tasarımı desen bir olay servis istekleri bir veya daha fazla girdi ile hizmet işleyicisi için aynı anda teslim işleme desen işleme.

Birkaç örnek, örneğin, *, eventmachine*1nodejs bu adlı

Ama ne ben yukarıda popüler tahrik çerçeve olay, onları bir reaktör desen de çerçeve yapmak çok olduğunu anladın mı?

Bu ikisi nasıl ayırt? Ya da hepsi aynı mı?

CEVAP
4 ŞUBAT 2012, CUMARTESİ


Reaktör desen daha özeldir "". olay güdümlü programlama Özel bir uygulama tekniği, olay güdümlü programlama yaparken kullanılır. Ancak, terim ile çok hassasiyet normal konuşma, öyle de olmalısın dikkatli kullanarak ve bekliyor kitleye anlamak, dikkatli ve nasıl yorumlamak vadede zaman karşılaştığınız kullanımı.

Reaktör desen bakış açısı "-engelleme olmayan" operasyonları yakından fikir ile ilgili düşünün. Reaktör belirli işlemleri engelleme olmadan tamamlanabilir zaman bildirimler gönderir. Örneğin, select(2) okuma ve yuva standart BSD soket API kullanarak yazmak için reaktör desen (recv(2), send(2), vb) uygulamak için kullanılır. select bayt çekirdek alıcı tampon bulunan bir yuva bayt anında almak zaman, örneğin, bu yuva için söyleyecektir.

Bu fikirleri düşünürken düşünebilirsiniz başka bir desenproactordesen. Reaktör desen aksine, proactor desen işlemleri hemen bitirmek için ne olursa olsun, başlamak, onları yürüttüzaman uyumsuz olarakve sonra düzenler ermesi ile ilgili bildirim sunmak için.

Ç Tamamlanma bağlantı noktası (IOCP) API I/Windows bir örnektirproactordesen görülebilir. Sahne bir IOCP ile bir yuva gönder, işlem çekirdeği yer var ne olursa olsun bu yuva için tampon gönder başlatıldı gönderin. WSASend arayın hemen tamamlanırken operasyon devam ediyor gönderme (başka bir konu, belki de çekirdek parçacığı). Gönderaslındatamamlar (yani sadece bu bayt gönderilen olmuştur kopyalanan içine çekirdek gönderme arabelleği için soket), bir geri çağırma işlevi verilen WSASend çağrı çağrılır (yeni bir iş parçacığı uygulama).

Operasyon başlıyor ve sonra tam olduğunda haberdar olmak için bu yaklaşımın fikir merkezidirzaman uyumsuzişlemleri. Karşılaştırınengellenmeyenbir operasyon kadar bekle nereye işlemleri hemen gerçekleştirmek için denemeden önce tamamlayabilirsiniz.

Her iki yaklaşım da olay temelli programlama için kullanılabilir. Reaktör kalıbı kullanarak, bir program için beklerolay(örneğin) bir yuva okunabilir ve okur olmak. Proactor desen kullanarak, program onun yerine beklerolaybir yuva tamamladıktan oku.

Açık konuşmak gerekirse, Çarpık vadede kötüyereaktör. select(2) (twisted.internet.selectreactor) dayanan Çarpık reaktör engellenmeyen reaktör gibi çok G/Ç, kullanılarak uygulanır. Ancak, uygulama kodu için ortaya bir arayüzzaman uyumsuz, proactor-sanki daha yapma. Çarpık da bir reaktör IOCP dayalı vardır. Bu reaktör aynı zaman uyumsuz bir uygulama ile karşı karşıya API sunarvekullanır proactor-IOCP API. Bu melez yaklaşım, farklı platform için platform ayrıntılarını yapar, ne terim "reaktör" ne de "proactor" özellikle doğru, ama bu yana API maruz tarafından twisted.internet.reactor temelde tamamen uyumsuz yerine engellenmeyen,proactormuhtemelen adı. daha iyi bir seçim olurdu

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ciaran Blumenfeld

    Ciaran Blume

    20 NİSAN 2009
  • LatinNinja99

    LatinNinja99

    28 EKİM 2011
  • MugenPowerBatteries

    MugenPowerBa

    8 EKİM 2010