Bağlama C # (ön) bir apache / php / python (backend)

4 Cevap

Overview: Biz web uygulamaları parçaları seçmek için bir C # kullanıcı arayüzü yazmak için arıyoruz. Bu (örneğin dahili) bir çok hedef kitleniz için.

Bizim web uygulamaları, web sunucusu olarak Apache kullanarak PHP ve / veya Python yazılır.

Why? A well thought out native Windows interface can at times be far more effective than living with the rules imposed by a web browser.

Question: C # ve PHP / Python HTTPS kullanarak arasındaki iletişim kurmak için en iyi yolu nedir? Ben serileştirme / unserialization ve her dilde çeşitli veri türleri ikamet dönüşüm çoğunlukla konuşuyorum.

İdeal olarak, biz güçlü yapılar veya C # ile çalışmak için objeleri ve bu amaçla üzerinde çalışmak için PHP / Python oluşturulan uygun veri yapılarını yazmış olurdu. Kod jeneratörler iyi.

I Apache Thrift, bizim iç veri kütüphaneleri uzanan ele, Google'ın Protokol Tamponlar, vb yorumlanan .. Thrift looks promising, but their documentation is very sparse. baktım

  1. En az bir geliştirici havai tutulması gereklidir.
  2. , Özellikle sunucu tarafında, makul bir performans tutulması önemlidir.

Xmlrpc, SOAP, veya diğer ilgili teknolojilerin faydasına Comments hoş olurdu.

Any pointers?

4 Cevap

PHP ile gerçek bir deneyimi var, ama dil ve çevre çeşitli ön uç müşterileri tarafından tüketilen Python arka uç web hizmetleri bol yaptık. Çok fazla "töreni" / yükünü - SABUN çoğunlukla ağzımda ekşi bir tat bıraktı ben denedim olanların dışında sadece teknolojisidir. (Back uzak geçmişte ben de en kısa sürede farklı diller için independed uygulamaları arasında birbirleri için çalışıyordu, CORBA denedim ve duygu ;-) tüm bu farklı değildi.

XML-RPC, JSON ve protokol tamponlar, hepsi benim için oldukça kullanışlı kanıtladı.

Protokol tamponlar normalde Google içinde kullanmak ne olduğunu, ve ben seni o kadar altında belgelenmiş onlar hakkında ne bulmak emin değilim - özel sorular sormak lütfen ve ben resmen veya gayri resmi olarak, daha iyi dokümantasyon yapmak için ne yapabilirim görürsünüz! Maksimum esneklik ile minimal havai - Onların temel avantajı da tel üzerinde bu kadar "sıkı" konum olmasıdır. JSON, çok büyük - ve sadece JavaScript müşterilerine kullanım kolaylığı için, ya: hayır JS tüm karıştığını zaman, bazen ben de, farklı diller arasındaki iletişim için varsayılan biçim olarak kullandım!

Eğer web uygulaması (diyelim) bir protokol tampon yayarlar kurduktan sonra, bu zor değil at all istek üzerine XML veya JSON yayarlar bu mümkün yapmak için - GET isteği bir OutputFormat = JSON ekstra bir parametre hepsini alır ve sağ çıktı seri hale toplama (Python, ama, ben de PHP, eminim) trivially kolaydır.

C # ucunda "kesinlikle yazılı nesneleri alma", benim görüşüme göre, en iyi ucunda bir C # katmanda yapabileceği bir iştir. O ile doğrudan deneyim, ama, örneğin, ben have mükemmel oluşan ve statik olarak yazılan nesneleri (ya da gelen veri anlamsal olarak doğru değildi kaldırdı istisnalar tükürdüler fabrika sınıfları içine C + + protokol tamponların alımını tamamladı ); Ben JSON veya XML için herhangi bir zor olmaz biliyorum, ve ben çok bunu umursamaz Java, C #, Python için herhangi bir sert, ya da gerçek dünyada hiç bir faydası yok başka herhangi bir dil olacağını sanmıyorum -!)

Web hizmetleri kullanarak senaryo için en uygun yol gibi geliyor.

Ben bir PHP SOAP Server ve VB.Net istemcisi kullanarak yapmış. Eğer sunucuya VB.Net / C # istemci (WSDL dosyasının konumu) bağladığınızda C # otomatik olarak tüm fonksiyonları ve maruz kalan tüm nesneleri algılar. Programlama yapmak çok daha kolay.

Ben de daha işlevsel olarak bulundu NuSOAP kullanarak öneriyoruz. http://sourceforge.net/projects/nusoap/

Ben PHP / Java Bridge öneririz. Adını sizi aldatmasına izin vermeyin. Bu herhangi ECMA-335 sanal makine (Java ve C #) PHP ve Python hem bağlamak için kullanılabilir!

http://php-java-bridge.sourceforge.net/pjb/

Yorum cevaplamak için:

Iletişim her iki yönde de çalışır, JSR 223 arayüzü Java bileşenleri PHP örneklerini arayabilir ve PHP betikleri CLR (VB çağırabilirsiniz, böylece çalışan bir PHP sunucusu (Apache / IIS, FastCGI, ...) bağlanmak için kullanılır. NET, C #, COM) veya Java (örneğin Java, Kawa, JRuby) tabanlı uygulamaları veya geri talep geldi ortamına aktarılması kontrolü. Köprü otomatik olarak bir PHP ön-uç başlatmak veya gerekirse, bir Java NET / arka uç başlatmak için ayarlanabilir.