Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πρόβλημα χρήσης web service

Îåêßíçóå áðü ôï ìÝëïò Πέτρος Αμοιρίδης. Τελευταία δημοσίευση από το μέλος Πέτρος Αμοιρίδης στις 06-09-2007, 11:30. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  06-09-2007, 10:34 34765

    Πρόβλημα χρήσης web service

    Θα μπορούσε να με βοηθήσει κάποιος; Το web method μου είναι πολύ απλό. Δεν παίρνει παραμέτρους και επιστρέφει ένα απλό string:

    [WebService]
    [WebServiceBinding(ConformsTo=WsiProfiles.None)]
    [ToolboxItem(false)]
    public class SyncService : System.Web.Services.WebService
    {
      [WebMethod(Description="Returns the version of the DataSyncService")]
      public string GetVersion()
      {
        return "ver1.0";
      }
    }


    Όταν φτιάχνω ένα WinForms client που τρέχει τοπικά, αυτό λειτουργεί. Στο αντίστοιχο client ΝΕΤCF δε λειτουργεί. Υποψιάζομαι ότι έχει να κάνει με τον τρόπο που ορίζω το reference μέσα στο client project. Υποτίθεται πως για να καλέσεις κάποιο web service μέσα από την εφαρμογή σου, πρέπει να προσθέσεις ένα web reference σ'αυτό το web service ώστε το Visual Studio να δημιουργήσει όλες τις απαραίτητες πληροφορίες (proxy class) και τελικά να μπορείς να καλείς τα διάφορα web methods μέσα στον κώδικά σου. Το ζήτημα είναι, πως καλεί το web method το client σου όταν το μεταφέρεις σε διαφορετικό υπολογιστή/PDA? Εννοώ, το web reference είναι γενικό και παίζει παντού ή μόνο την ώρα του development τοπικά στον υπολογιστή σου;

    Είμαι νέος στα web services και μπορεί να μην κάνω ακόμα τις σωστές ερωτήσεις, αλλά με λίγη βοήθεια από εσάς πιστεύω θα στρώσω.

    Πέτρος

    Πέτρος
  •  06-09-2007, 10:54 34766 σε απάντηση της 34765

    Απ: Πρόβλημα χρήσης web service

    Το Web Reference έχει νόημα μόνο κατά το development. Τυπικά, θα χρειαστεί να κατασκευάσεις κατά τέτοιο τρόπο την εφαρμογή σου ώστε κατά το runtime να κάνει configure τα properties του Web Service προκειμένου να μπορεί να παραμετροποιηθεί σύμφωνα με το περιβάλλον, πχ να μπορεί να αλλάξει το url που βρίσκεται το service. Δες τα properties της proxy class για να πάρεις μια ιδέα, το proxy class δεν έχει μόνο τα web methods Wink
    Vir prudens non contra ventum mingit
  •  06-09-2007, 11:22 34767 σε απάντηση της 34766

    Απ: Πρόβλημα χρήσης web service

    Αν μου επιτρέπεται να διατυπώσω λίγο καλύτερα. Το Web Reference δημιουργεί μια proxy class η οποία, όπως οποιαδήποτε class στο ίδιο project, ενσωματώνεται στο τελικό output (exe ή dll). Αν το web reference το έχεις κάνει στο localhost (π.χ. http://localhost/myServer/myService.asmx) πρέπει να το αλλάξεις όταν δεν είσαι πλέον σε development mode, έτσι ώστε να δείχνει στο σωστό server. Αυτό γίνεται πολύ εύκολα ως εξής:

    MyServiceProxy myService = New MyServiceProxy();
    myService.Url = "http://www.myServer.com/myService.asmx";

    Βέβαια είναι καλό να βάλεις το παραπάνω url σε κάποιο configuration, έτσι ώστε να είναι παραμετροποιήσιμο. Φυσικά δεν προτείνεται καθόλου να βάλεις IP.

    Μπορείς αν θέλεις να βάλεις στο ίδιο configuration κάποια άλλη παράμετρο που να λέγεται π.χ. devMode και να αλλάξεις την δεύτερη γραμμή από τις παραπάνω ως εξής:

    if (devMode) myService.Url = "http://www.myServer.com/myService.asmx";

    Οπότε έτσι δεν θα χρειάζεται να κάνεις κάποια αλλαγή για να περνάς από development σε runtime, εκτός από το να αλλάξεις την τιμή του devMode στο configuration.
     


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  06-09-2007, 11:30 34769 σε απάντηση της 34766

    Απ: Πρόβλημα χρήσης web service

    Ουάου παιδιά! Με ξεστραβώσατε. Εννοείται ότι είχα localhost και ήταν μπροστά μου και δεν το έβλεπα! Άλλο ένα μάθημα: Πριν αρχίσεις να ψάχνεις αν το PDA έχει χαλασμένη εγκατάσταση .ΝΕΤ, ψάξε πρώτα τα βασικά!

    Πέτρος

    Πέτρος
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems