2009-04-03 14 views
5

मेरे पास एक सी # winapp है जो टीसीपी द्वारा जावा ऐप को कॉल करता है और सीसी पर टीसीपी द्वारा सबकुछ वापस भेजता है।सी # कॉलिंग जावा प्रोग्राम में WinApp

कारण मैं जावा का उपयोग कर रहा हूं क्योंकि मुझे जावा एपीआई मिली है। तो मैंने एक छोटा जावा ऐप लिखा जो उस एपीआई को कॉल करता है और मुझे आवश्यक सभी डेटा प्राप्त करता है।

तो मैं सोच रहा था कि इसके लिए कोई और समाधान है या नहीं। क्योंकि यह धीमी गति से चल रहा है, खासकर बहुत सारे डेटा के साथ।

धन्यवाद

उत्तर

5

स्थानीय मशीन से अधिक टीसीपी बहुत तेजी से होना चाहिए (नामित पाइप थोड़ा तेजी से हो सकता है, लेकिन दोनों सिरों पर ऐसा करने के लिए कठिन हो सकता है)।

सबसे बड़ी बाधा डेटा के क्रमिकरण और deserialization होने की संभावना है। डेटा का प्रतिनिधित्व करने के लिए आप वर्तमान में किस प्रारूप का उपयोग कर रहे हैं?

+0

मैं डेटा का प्रतिनिधित्व करने के लिए स्ट्रिंग का उपयोग कर रहा हूं। सीएसवी की तरह मैं ";" का उपयोग करता हूं डेटा को अलग करने के लिए। शायद सबसे अच्छा समाधान नहीं है। – Gerbrand

+0

अच्छा, यह कम से कम सरल है। Serializing के अधिक विदेशी तरीके हैं कि * तेजी से हो सकता है (जैसे "प्रोटोकॉल बफर", जिसमें जावा और सी # संस्करण हैं), लेकिन यह आमतौर पर जांच के लिए गैर-तुच्छ होगा। आपके द्वारा भेजे जा रहे डेटा की * वॉल्यूम * क्या है? –

+0

मैं जावा को एपीआई के लिए सिर्फ लॉगिन और पासवर्ड भेज रहा हूं और मुझे किस प्रकार की जानकारी चाहिए। जावा कुछ मामलों में 2000 के रिकॉर्ड वापस भेज रहा है। यह उस ग्राहक पर निर्भर करता है जिसके लिए मुझे जानकारी चाहिए। – Gerbrand

2

मुझे लगता है कि आपको इसे प्रोफाइल करने की आवश्यकता है। क्या आप वाकई नेटवर्क पहलू धीमा है? या धारावाहिक/deserialisation, या डेटा ट्रांसमिशन से परे वास्तविक ग्राहक/सर्वर प्रसंस्करण।

प्रोफाइलिंग समाधानों को संबोधित करने से पहले, आपको विशेष समस्या बिंदु की पहचान करनी चाहिए।

1

आपको जावा एपीआई मिली और आपने एक छोटा जावा एपीआई लिखा ... तो आप जावा को जानते हैं। जावा में बाकी एप्लिकेशन क्यों नहीं लिखते?

कभी-कभी "असंगत" भागों को फिर से लिखना आसान होता है जो इस पर निर्भर करता है कि यह कितना काम करता है।

+0

ऐसा नहीं कर सकता क्योंकि मुख्य कार्यक्रम सी # लिखा गया है। यह हिस्सा बाद के विकास की स्थिति में जोड़ा गया है। – Gerbrand

0

मैं दो अच्छे वेब सेवा ढेर का उपयोग करने की कोशिश करने की सलाह दूंगा। अपने परिणामों को सुनना बहुत दिलचस्प होगा। यह काउंटर-अंतर्ज्ञानी लगता है लेकिन इन ढेर को अनुकूलित किया गया है, भले ही उनके पास पाठ में परिवर्तित होने का बोझ हो। इसके अलावा, यह ढेर लेने के लिए बहुत अधिक काम नहीं करता है। कम से कम सी # में कॉल करना वेब सेवाओं को समानांतर करने के लिए आसान है यदि यह आपकी स्थिति के लिए उपयुक्त है।

0

ऐसे वाणिज्यिक समाधान भी हैं जो जावा को .NET (और इसके विपरीत) से आविष्कार करने की अनुमति देते हैं। मैंने कुछ साल पहले JNBridge का उपयोग किया था, और यह शानदार है।

आप http://www.jnbridge.com/bin/downloads.php?pr=1&id=0 पर 30-दिन का निःशुल्क परीक्षण डाउनलोड कर सकते हैं (नहीं, मैं उनके लिए काम नहीं करता)।

0

मैंने जावा में कुछ प्रोफाइलिंग किया और मुझे प्राप्त एपीआई की विधि मैंने देखा कि अधिकांश समय ले रहा है। यदि मुझे 1200 रिकॉर्ड प्राप्त होते हैं तो मेरे पास 5 मिनट का प्रतीक्षा समय होता है। एक बार जब मैं इसे सी # में प्राप्त करता हूं, तो इसे वस्तुओं में जोड़ने के लिए केवल कुछ सेकंड की आवश्यकता होती है और मुझे परिणामों का एक दृश्य दिखाता है।

तो मुझे लगता है कि समस्या वास्तव में मेरे अंत में नहीं है या अगर मैं जेएनबीज या webservice की तरह कुछ इस्तेमाल करता तो बेहतर हो सकता है?

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