2009-03-28 4 views
5

.NET पुस्तकालयों में स्थित तर्क के लिए PHP ऐप्स को जोड़ने के लिए सबसे अच्छे विकल्प क्या हैं?PHP से .NET कक्षाओं को कॉल करने का सबसे अच्छा तरीका?

PHP, v5.0 के बाद से, a DOTNET class का समर्थन करता है जो मुझे PHP स्क्रिप्ट से .NET तर्क का आह्वान करने वाला है। लेकिन ऐसा लगता है कि कई समस्याएं हैं - मैं मनमाने ढंग से .NET कक्षाओं के साथ विश्वसनीय रूप से काम करने में सक्षम नहीं हूं। डॉक्टर पतला प्रकार है और दस्तावेज वास्तव में सही नहीं है। Php.net पर बग रिपोर्ट के रूप में, इस वर्ग पर internets पर सवाल कई हैं।

मैं COM इंटरऑप के माध्यम से .NET के साथ कनेक्ट करने के लिए PHP प्राप्त करने में सक्षम हूं - लेकिन इसके लिए आवश्यक है कि .NET क्लास ComVisible हो। और जहां तक ​​मुझे पता है, COM आवश्यकता के कारण, यह केवल विंडोज पर काम करता है।

मैंने Phalanger project के बारे में सुना है लेकिन कई विवरण नहीं जानते हैं। क्या यह मनमाने ढंग से PHP स्क्रिप्ट के साथ काम करता है? लिनक्स पर काम? क्या इसमें भारी perf या रनटाइम प्रभाव हैं?

क्या यह भी करने के लिए समझ में आता है, या यह उन लोगों में से एक है जो आप कर सकते हैं-लेकिन-आपको-चीजों की तरह नहीं होना चाहिए?

संपादित करें: मैं सामान्य मामले के बारे में सुनना चाहता हूं: एनईटी कक्षा पुस्तकालयों की एक विस्तृत विविधता उपलब्ध है, और PHP के साथ विभिन्न वातावरणों से उनका लाभ उठाने में सक्षम होना अच्छा होगा। उदाहरण एन्क्रिप्शन, लॉगिंग, डेटा एक्सेस, एचपीसी क्लस्टर के लिए क्लाइंट हो सकते हैं। विशेष तत्काल परिदृश्य एईएस एन्क्रिप्शन के साथ एक ज़िप पुस्तकालय है, जो .NET में उपलब्ध है।

+0

आप परिदृश्य जहां .net वर्गों का उपयोग करना चाहते के प्रकार के बारे में अधिक जानकारी दे सकते हैं? संदर्भ के संबंध में और आप .NET कक्षाओं में उपयोग करना चाहते हैं – eglasius

उत्तर

0

मुझे लगता है कि COM के माध्यम से ऐसा करने का सबसे अच्छा तरीका है।

+2

COM थ्रेड-सुरक्षित नहीं है, और वेब अनुप्रयोग ऐसी चीजें हैं जो एक बहुप्रचारित वातावरण में काम करते हैं ... इसलिए मुझे संदेह है कि यह सबसे अच्छा तरीका है। यह सबसे आसान तरीका हो सकता है (और आपके एकल उपयोगकर्ता विकास प्रणाली पर शानदार रूप से काम करता है), लेकिन आइंस्टीन ने कहा: इसे जितना संभव हो सके आसान बनाएं, लेकिन आसान नहीं। –

2

माइक्रोसॉफ्ट लिनक्स पर .NET को शिप या समर्थन नहीं करता है। यदि आप लिनक्स पर .NET कोड नहीं चलाएंगे तो आपको मोनो को देखना चाहिए। मुझे नहीं पता कि PHP 5 मोनो के साथ-साथ MicroSoft.NET

+0

मैं मोनो के बारे में जानता हूं। लेकिन मुझे नहीं पता कि PHP + मोनो काम करता है या समझ में आता है। – Cheeso

1

Phalanger से .NET कक्षाओं और कॉलिंग .net विधियों का उपयोग करना बहुत आसान है, क्योंकि यह .NET के लिए PHP कंपाइलर है। आप इस आलेख को PHP for .NET: Introduction for .NET developers देख सकते हैं, आलेख पुराना है (2007) इसलिए कुछ पुराने उदाहरण हो सकते हैं, लेकिन सिद्धांत लागू होते हैं।

लिनक्स फालेंजर पर मोनो पर अच्छा चल रहा है, यहां सबसे बड़ी सीमा यह है कि आप मूल एक्सटेंशन (PHP वितरण से) का उपयोग नहीं कर सकते हैं, जो केवल विंडोज़ पर समर्थित हैं (फालेंजर में विस्तार प्रबंधक सी ++/सीएलआई के साथ बनाया गया है जो मोनो पर समर्थित नहीं है)। लेकिन फिर भी आप उपलब्ध फालेंजर के लिए कुछ प्रबंधित एक्सटेंशन का उपयोग कर सकते हैं।

वास्तविक संस्करण (फरवरी 2011 रिलीज) में फाल्जरर का प्रदर्शन फास्टसीजीआई के माध्यम से PHP 5.3.5 से 2 गुना तेज है।

2

नेटफैप एक रैपर है जो PHP के लिए com_dotnet एक्सटेंशन के शीर्ष पर काम करता है ताकि आप PHP में किसी भी .NET असेंबली को कॉल कर सकें, भले ही यह COM दृश्यमान न हो और नेट फ्रेमवर्क के किसी भी संस्करण के साथ काम करता हो।

https://github.com/david-garcia-garcia/netphp

संबंधित मुद्दे