2011-08-25 16 views
6

सबसे पहले जो मैं चाहता हूं वह काफी जटिल है, कम से कम मेरे लिए, लेकिन दूसरी ओर यह रोमांचक लगता है।डेल्फी ऐप के लिए रीयल टाइम वेब आधारित क्लाइंट। कैसे?

मेरे पास डेल्फी में लिखा गया एक सॉफ्टवेयर है, और मैं इसके लिए एक वास्तविक समय वेब आधारित क्लाइंट चाहता हूं।

आवश्यकताओं:

  • ग्राहक के पक्ष शुद्ध जावास्क्रिप्ट
  • चमकदार इंटरफेस पर (GWT, SmartGWT)
  • सर्वर और ग्राहक के बीच अतुल्यकालिक कनेक्शन। अजाक्स पुश, लांग पोलिंग, धूमकेतु, वेबसाकेट?

सर्वर साइड

  • पैमाने-क्षमता

डेल्फी ओर मुझे लगता है मैं Overbyte से आईसीएस इस्तेमाल कर सकते हैं लगता है पर, अनुरोधों को हैंडल करने। मुझे पता है कि आईसीएस पैक से THttpAppSrv आसानी से सरल सामग्री की सेवा कर सकता है, लेकिन वेबसाइट्स के बारे में क्या है, या मैं इसके साथ लंबे मतदान कैसे कर सकता हूं?

आपको क्या लगता है, क्या यह एक अच्छा कॉम्बो (क्लाइंट साइड पर जीडब्ल्यूटी, स्मार्टजीडब्ल्यूटी, और डेल्फी साइड पर आईसीएस) है, क्या वहां कोई नमूना प्रोजेक्ट है, या कोई अन्य समाधान है?

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

अद्यतन 2 मैं अरनॉड Bouchez के जवाब जो मुझे मूल प्रश्न के लिए सबसे अच्छा लग रहा है स्वीकार किए जाते हैं, फिर भी मुझे लगता है कि वहाँ एक बेहतर समाधान है एक ग्राहक एक के लिए ब्राउज़र में चल बनाने के लिए (यदि आप आवश्यकताओं को एक छोटे से बदल) डेल्फी आवेदन। विचार साझा करने के लिए, मैं यहां थोड़ी सी टिप्पणी करता हूं। अंततः मैंने node.js सर्वर का उपयोग किया, और इसे ZMQ की सहायता से मेरे डेल्फी ऐप से कनेक्ट किया।

+0

जीडब्ल्यूटी + जीडब्ल्यूटी + आरपीसी + जेट्टी (या टोमकैट, जेबॉस, ग्लासफ़िश, वेबस्पेयर ...) आसानी से डेल्फी के साथ एकीकृत किया जा सकता है। यदि आपके पास जावा डेवलपर हैं जो इन उपकरणों का उपयोग करके आपके एप्लिकेशन की वेब परत बना सकते हैं, और फिर सिंक्रोनस या असिंक्रोनस इंटरफेस पर डेल्फी बिजनेस लेयर को एकीकृत कर सकते हैं, तो दोनों दुनिया के सर्वश्रेष्ठ मिश्रण को संभव बनाना संभव है। एक विशाल अतिरिक्त प्रदर्शन बढ़ावा के लिए [memcached] (http://memcached.org/) जैसे कैशिंग समाधानों पर विचार करें, जिनमें [डेल्फी] (http://code.google.com/p/delphimemcache/) और जावा क्लाइंट उपलब्ध हैं। – mjn

+0

अद्यतन: यदि आप रुचि रखते हैं तो मैं अपने डेल्फी/जावा संचार पुस्तकालयों के लिए लिखे गए दस्तावेज़ों के हिस्से के रूप में एक पूर्ण जीडब्ल्यूटी/डेल्फी एकीकरण उदाहरण बना सकता हूं, और इसे पूर्ण जावा स्रोत कोड के साथ प्रकाशित कर सकता हूं। – mjn

+0

@mjn Thx। हां, मुझे दिलचस्पी है। क्लाइंट साइड पर स्मार्टजीडब्लूटी विजेट के साथ एक साधारण उदाहरण, और डेल्फी पक्ष में, एसिंक से जुड़ा हुआ बहुत सराहना की जाएगी। – balazs

उत्तर

3

डेल्फी पक्ष पर HTTP सर्वर के बारे में, XP से Microsoft द्वारा प्रदत्त kernel mode http.sys server का उपयोग करने पर विचार करें। आईसीएस से तेज होना चाहिए।

AJAX भाग के लिए, Op4JS पर एक नज़र डालें या ElevateDBBuilder पर जाएं।

उन समाधानों के साथ क्या बढ़िया है कि आप ऑब्जेक्ट पास्कल कोड लिख सकते हैं, और यह कोड जावास्क्रिप्ट में अनुवादित किया जाएगा। अभी तक समाप्त नहीं हुआ है, लेकिन उनके रिलीज समय के लिए थोड़ा इंतजार करने लायक है।

बेशक, अधिक क्लासिक AJAX समाधान मौजूद हैं, जैसे IntraWeb या ExtPascal। दोनों अपने स्वयं के वेब सर्वर को लागू करते हैं।

जीडब्ल्यूटी के बारे में, AFAIK वे जावा पुस्तकालय हैं, जो जावा दुनिया से गहराई से जुड़े हुए हैं। आप इसे डेल्फी के साथ काम करने में सक्षम नहीं होंगे।

GWT के बारे में संपादित करें:

GWT एक पूर्ण क्लाइंट-सर्वर रूपरेखा है।

यदि आप जीडब्ल्यूटी के साथ जाते हैं, तो मुझे संदेह है कि आप किसी बिंदु पर एप्लिकेशन के पूर्ण जावा रीराइट के साथ समाप्त हो जाएंगे। या आप एक ढांचे के रूप में जीडब्ल्यूटी के अधिकांश हितों को याद करेंगे। यह तुम्हारी पसंद है।

उदाहरण के लिए जेएसओएन का उपयोग करके हम कुछ और मानक दृष्टिकोण पर भरोसा करेंगे, उदाहरण के लिए हम अपने ढांचे के साथ करते हैं।

+0

लिंक के लिए धन्यवाद, ये बहुत अच्छे उपकरण हैं, लेकिन मुझे ऑब्जेक्ट पास्कल कोड लिखने की आवश्यकता नहीं है, किसी भी तरह से इसे जावास्क्रिप्ट में अनुवाद करने की बजाय, वेबसाईट के माध्यम से संवाद करें, या क्लाइंट और सर्वर पक्ष के बीच लंबी अवधि के बारे में बताएं। वास्तव में जीडब्ल्यूटी जावा कोड को जावास्क्रिप्ट में परिवर्तित करेगा। – balazs

+0

@balazs तो आप पूरे जावा में क्लाइंट भाग लिखना चाहते हैं? लेकिन सर्वर साइड संसाधनों तक पहुंच प्रदान करने के लिए जीडब्ल्यूटी जावा सर्लेट्स के आधार पर एक आरपीसी तंत्र का उपयोग करता है। इसलिए आपको जावा में सर्वर भाग भी लिखना होगा (या इसे डेल्फी के साथ अनुकरण करना होगा - लेकिन कड़ी मेहनत करता है)। मैंने जीडब्ल्यूटी के साथ गहरी टिप्पणी करने के लिए अपना जवाब संपादित किया। –

+0

जीडब्ल्यूटी के बारे में कुछ स्पष्टीकरण: * जीडब्ल्यूटी "अपना स्वयं का HTTP सर्वर" प्रदान नहीं करता है, या इसके लिए आवश्यक है कि HTTP सर्वर जावा-आधारित है * जीडब्ल्यूटी जेएसओएन का प्रोटोकॉल के रूप में उपयोग कर सकता है, इसलिए यह सर्वर पक्ष – mjn

0

क्या आपने Intraweb चेक आउट किया है? मैंने इसे बड़े पैमाने पर इस्तेमाल नहीं किया है - लेकिन ऐसा लगता है कि डेल्फी वेब ऐप्स के लिए काफी लोकप्रिय है।

मैंने आईईएस या अपाचे के साथ TWebBroker का उपयोग करके कई वेब ऐप्स बनाए हैं। यह असिंक्रोनस है, और आपको अपने अन्य एप्लिकेशन के साथ डेल्फी कोड को आसानी से पोर्ट/साझा करने की अनुमति देता है। और यह अजाक्स कॉल का समर्थन करेगा।

1

डेल्फी, क्लाइंट साइड और चमकदार इंटरफ़ेस पर शुद्ध जावास्क्रिप्ट? आप Unigui के बारे में बात कर रहे हैं!

+0

वास्तव में नहीं, मैं पूरे ऐप को फिर से लिखना नहीं चाहता, यह आधा मिलियन लाइनों से अधिक है। मैं बस एक ग्राहक पक्ष जोड़ना चाहता हूँ। लेकिन आप सही हैं, यूनिगुई बहुत ही आशाजनक है, शायद मैं इसे किसी अन्य प्रोजेक्ट में उपयोग करूंगा। – balazs

1

मैंने पहले PHP, एएसपी और शीत संलयन पर काम किया था, और डेल्फी के साथ (लगभग) करना चाहता था। मैंने xxm शुरू किया। इसमें एक ही फाइल में डेल्फी और एचटीएमएल कोड है, और (फिर) ब्राउज़र में रीफ्रेश करते समय लाइब्रेरी को संकलित करता है। मैंने इन पुस्तकालयों के लिए हैंडलर बनाए हैं ताकि आप उन्हें आईआईएस, अपाचे, इंटरनेट एक्सप्लोरर, फ़ायरफ़ॉक्स, या सीधे डेल्फी-आधारित HTTP कार्यान्वयन से चला सकें। संबंध में अपने प्रश्न का (मैं काम एक http.sys हैंडलर पर भी शुरू कर दिया है, लेकिन यह एक बहुत अधिक काम ले लेंगे।)

इसके अलावा, मैं स्ट्रीमिंग चाहता था, मैं मैं क्या उत्पादन स्थानांतरित हो जाएगा कि चाहता था सुनने वाले क्लाइंट के लिए ASAP, ताकि आप लंबे समय तक चलने वाले पेज, लंबे मतदान और इसी तरह से कर सकें। जीडब्ल्यूटी और अन्य क्लाइंट-साइड स्क्रिप्ट के लिए, मैंने सफलतापूर्वक प्रोटोटाइप और jquery का उपयोग किया है।