मैं एक जीडब्ल्यूटी परियोजना पर काम कर रहा हूं जहां एएसपी.नेट सर्वर पर मेरा एकमात्र विकल्प है। मैंने पाया है कि, जबकि इसे थोड़ा अतिरिक्त काम की आवश्यकता है, JavaScript Overlay प्रकार इसे आसान बना सकते हैं। इससे कोई फ़र्क नहीं पड़ता कि आपका सर्वर किस तकनीक का उपयोग कर रहा है, जब तक कि यह JSON क्रमबद्ध डेटा के साथ प्रतिक्रिया दे सके। उदाहरण के लिए, यदि आप सी # में एक संपर्क वर्ग है:
public class Contact
{
public int Id { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string Email { get; set; }
}
अपने सर्वर डिजाइन इतना है कि यह JSON के रूप में इस धारावाहिक देता है। मैं इसके लिए एएसपी.नेट एमवीसी का उपयोग करता हूं क्योंकि इसे बहुत कम काम की आवश्यकता होती है।यहाँ एक बहुत ही सरल उदाहरण है जहाँ हम कि संपर्क मान लेंगे एक स्थिर विधि है कि, एक आईडी को देखते हुए एक संपर्क उदाहरण वापस आ जाएगी है है:
public class ContactController : Controller
{
public ActionResult GetContact (int id)
{
return Json(Contact.GetById(id), JsonRequestBehavior.AllowGet);
}
}
अब आप अपने GWT आवेदन में, अपने संपर्क के लिए एक जावास्क्रिप्ट ओवरले प्रकार बनाने :
import com.google.gwt.core.client.JavaScriptObject;
public class Contact extends JavaScriptObject {
protected Contact() { }
public final native int getContactId() /*-{ return this.Id; }-*/;
public final native String getLastName() /*-{ return this.LastName; }-*/;
public final native String getFirstName() /*-{ return this.FirstName; }-*/;
public final native String getEmail() /*-{ return this.Email; }-*/;
public static final native Contact createFromJson(String json) /*-{
return eval('(' + json + ')');
}-*/;
}
इसके बाद, अपने GWT परियोजना में, एक HTTP अनुरोध सर्वर के साथ संवाद करने के लिए उपयोग करें:
public class ContactLoader {
private int id;
public ContactLoader(int id) {
this.id = id;
}
public void beginLoad() {
String url = "/YourService/GetContact/?id=" + id;
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
try {
@SuppressWarnings("unused")
builder.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(Request req, Response resp) {
Contact contact = Contact.createFromJson(req.getText());
// do something with your contact. In my project, I
// fire an event here for which the contact is the payload
}
@Override
public void onError(Request request, Throwable exception) {
// handle your error
}
catch (Exception exception) {
// handle your error
}
}
}
यह भी ओवरले प्रकार के साथ सामान्य प्रकार का उपयोग करना संभव है। उदाहरण के लिए, मैं कभी भी एक नंगे वस्तु वापस नहीं करता, मैं हमेशा परिवहन के लिए एक सामान्य कंटेनर का उपयोग करता हूं ताकि मैं आसानी से ग्राहक पक्ष पर त्रुटि रिपोर्टिंग को संभाल सकूं।
सी #:
public class ServerResponse<T>
{
public T Payload { get; set; }
public bool Success { get; set; }
public String Message { get; set; }
}
जावा:
public class ServerResponse<T extends JavascriptObject>
extends JavaScriptObject {
protected ServerResponse() { }
public final native T getPayload() /*-{ return this.Payload; }-*/;
public final native boolean getSuccess() /*-{ return this.Success; }-*/;
public final native String getMessage() /*-{ return this.Message; }-*/;
}
यह मुझे मेरे संपर्क, संपर्क या जो कुछ भी की एक सरणी लौटने की सुविधा देता है। यह आपके डेटा लोडिंग तर्क में डुप्लिकेशंस को कम करने में भी मदद करता है।
यह एक अत्यधिक सरल उदाहरण है, लेकिन उम्मीद है कि किसी भी गैर-जावा बैक-एंड के साथ सहायता की आवश्यकता वाले किसी व्यक्ति के लिए पथ साफ़ करने के लिए पर्याप्त है। मैट रायबल द्वारा ओवरले प्रकारों पर चर्चा करने वाले एक अन्य संसाधन को "JSON Parsing with JavaScript Overlay Types in GWT" पर मदद मिली।
ठीक है, आपको केवल एएसपी.नेट एमवीसी का उपयोग कर रिमोट-प्रोसेस हैंडलर के लिए एएसपी.NET एप्लिकेशन रूटिंग के रूप में उनके उदाहरण जे 2 ईई लाइब्रेरी में मिले एक ही एपीआई को फिर से कार्यान्वित करना होगा। – Skeolan
यह केवल तभी सच है यदि आप अपने बंडल आरपीसी तंत्र का उपयोग करना चाहते हैं। उस तंत्र को एक जेसन समर्थित आरपीसी तंत्र के साथ प्रतिस्थापित किया जा सकता है (मैंने gwt json rpc googled और कुछ परिणाम प्राप्त किए हैं), या आप एक आरईएसटी समर्थित आरपीसी तंत्र का भी उपयोग कर सकते हैं (इस http://code.google.com/p/ को आजमाएं gwt-rest /, या अधिक के लिए google, एक जोड़े हैं)। यानी, आरपीसी तंत्र प्रतिस्थापन योग्य है, और वहां पुस्तकालय हैं जो पहले से ही ऐसा करते हैं। – Chii