2010-06-08 12 views
6

वेब सेवा बनाने का सबसे अच्छा तरीका क्या है जो एक्स, वाई निर्देशांक का एक सेट देता है? मुझे उस वस्तु पर यकीन नहीं है जो सबसे अच्छा रिटर्न प्रकार है। जब सेवा लेने वाली मैं इसे उदाहरण के लिए एक्सएमएल के रूप में वापस आ preferibly कुछ इस तरह करना चाहते हैं:वेब सेवा से XML डेटा लौटाएं

<TheData> 
    <Point> 
    <x>0</x> 
    <y>2</y> 
    </Point> 
    <Point> 
    <x>5</x> 
    <y>3</y> 
    </Point> 
</TheData> 

कोई वापस जाने के लिए कृपया मदद मैं इस सब पर नया हूँ एक बेहतर संरचना है।

+0

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

उत्तर

3

आप सी # का उपयोग कर रहे बाद से, यह बहुत आसान है। मेरा कोड मान रहा है कि आपको deserialization की आवश्यकता नहीं है, क्लाइंट के लिए कुछ एक्सएमएल पार्स:

[WebService(Namespace = "http://webservices.mycompany.com/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[ToolboxItem(false)] 
public class PointService : WebService 
{ 
    [WebMethod] 
    public Points GetPoints() 
    { 
     return new Points(new List<Point> 
     { 
      new Point(0, 2), 
      new Point(5, 3) 
     }); 
    } 
} 

[Serializable] 
public sealed class Point 
{ 
    private readonly int x; 

    private readonly int y; 

    public Point(int x, int y) 
    { 
     this.x = x; 
     this.y = y; 
    } 

    private Point() 
    { 
    } 

    [XmlAttribute] 
    public int X 
    { 
     get 
     { 
      return this.x; 
     } 

     set 
     { 
     } 
    } 

    [XmlAttribute] 
    public int Y 
    { 
     get 
     { 
      return this.y; 
     } 

     set 
     { 
     } 
    } 
} 

[Serializable] 
[XmlRoot("Points")] 
public sealed class Points 
{ 
    private readonly List<Point> points; 

    public Points(IEnumerable<Point> points) 
    { 
     this.points = new List<Point>(points); 
    } 

    private Points() 
    { 
    } 

    [XmlElement("Point")] 
    public List<Point> ThePoints 
    { 
     get 
     { 
      return this.points; 
     } 

     set 
     { 
     } 
    } 
} 
+0

धन्यवाद जेसी, एक आखिरी बात यह है कि वेब सेवा प्रकाशित करने का एक आसान तरीका है ताकि मैं कहीं से भी पहुंच सकूं? –

+0

खाली सेटर्स होने के बाद अक्वार्ड है। दुनिया को कैसे पता होना चाहिए कि आप केवल उनके कार्य को अनदेखा करते हैं? सार्वजनिक संपत्तियों को इसके बजाय क्यों नहीं पढ़ा? या इससे भी बेहतर: सार्वजनिक int एक्स {प्राप्त करें; निजी सेट;} –

+0

सबसे आसान तैनाती के लिए, आप "XCOPY परिनियोजन" के रूप में जाना जाता है, जिसमें आपका कोड बस आपकी वेबसाइट की जड़ के नीचे कॉपी हो जाता है और उपयोगकर्ता इसे http: //yoursite/service.asmx के माध्यम से एक्सेस करते हैं। हालांकि, इसे वेब सर्वर पर रखने के लिए विजुअल स्टूडियो (प्रीकंपिल्ड वेब, तैनाती) के भीतर और अधिक मजबूत तरीके हैं। हालांकि आपके पर्यावरण का लाभ भिन्न हो सकता है। –

1
<Points> <!-- alternatives: PointCollection or PointList --> 
    <Point x="0" Y="2" /> 
    <!-- ... --> 
</Points> 

या, आप के बजाय JSON प्रतिनिधित्व के लिए जा सकते हैं:

[ { x:0, y:2 }, { x:5, y:10 } ] 
+0

क्या आप वेब सेवा में इसे बनाने के लिए फ़ंक्शन हस्ताक्षर में सहायता कर सकते हैं? वापस जाने के लिए किस प्रकार का? एक्सएमएल की एक स्ट्रिंग? या कोई बेहतर तरीका है? –

+0

क्षमा करें, @ निक, मैंने आपके प्रश्न को गलत तरीके से पढ़ा। मैंने सोचा था कि आप पूछ रहे थे कि सबसे अच्छा रिटर्न प्रारूप क्या है। यदि आपको कोड उदाहरण की आवश्यकता है, तो @ जेसी एक अच्छा है। –

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