Πώς να περάσει απαριθμούνται τιμές σε μια υπηρεσία web

ψήφοι
20

δίλημμα μου είναι, βασικά, πώς να μοιραστώ μια απαρίθμηση των δύο εφαρμογών.

Οι χρήστες φορτώσετε τα έγγραφα μέσω ενός front-end εφαρμογή που είναι στο διαδίκτυο. Η εφαρμογή αυτή απαιτεί μια διαδικτυακή υπηρεσία του back-end εφαρμογή και περνά το έγγραφο σε αυτό. Το back-end εφαρμογή αποθηκεύει το έγγραφο και εισάγει μια σειρά στο έγγραφο πίνακα.

Ο τύπος εγγράφου (7 πιθανούς τύπους εγγράφου: Τιμολόγιο , Συμβόλαιο κλπ) διέρχεται ως παράμετρος στην υπηρεσία ίντερνετ UploadDocument μέθοδο. Το ερώτημα είναι, τι θα έπρεπε το είδος (και πιθανές τιμές) αυτής της παραμέτρου είναι;

Από τη στιγμή που πρέπει να hardcode αυτές τις αξίες και στις δύο εφαρμογές, νομίζω ότι είναι ΟΚ για να χρησιμοποιήσετε ένα περιγραφικό εγχόρδων ( Τιμολόγιο , Συμβόλαιο , WorkOrder , SignedWorkOrder ).

Είναι ίσως η καλύτερη προσέγγιση για τη δημιουργία ενός DocumentTypes απαρίθμηση στην πρώτη εφαρμογή, και να την αναπαράγουν και στη δεύτερη εφαρμογή, και στη συνέχεια να περάσει την αντίστοιχη ακέραια τιμή για την υπηρεσία web μεταξύ τους;

Δημοσιεύθηκε 05/08/2008 στις 00:43
πηγή χρήστη
Σε άλλες γλώσσες...                            


8 απαντήσεις

ψήφοι
6

Θα ήθελα να χρησιμοποιήσει ακόμα καταμέτρηση στο εσωτερικό, αλλά θα περίμενε κανείς τους καταναλωτές να μου περάσει μόνο το όνομα, δεν το αριθμητικό ίδια αξία.

μόνο μερικά ανόητα παράδειγμα για να τονίσει:

public enum DocumentType
{
  Invoice,
  Contract,
  WorkOrder,
  SignedWorkOrder
}

[WebMethod]
public void UploadDocument(string type, byte[] data)
{
  DocumentType docType = (DocumentType)Enum.Parse(typeof(DocumentType), type);
}
Απαντήθηκε 05/08/2008 στις 01:12
πηγή χρήστη

ψήφοι
6

Θα πρότεινα κατά περνάει έναν ακέραιο μεταξύ τους, απλά για λόγους αναγνωσιμότητας και τον εντοπισμό σφαλμάτων. Ας υποθέσουμε ότι περνάτε τα αρχεία καταγραφής σας και θα δείτε ένα μάτσο 500 σφάλματα για documenttype = 4. Τώρα έχετε να πάτε αναζητήσετε οποία documenttype είναι 4. Ή αν μία από τις εφαρμογές αναφέρεται σε έναν αριθμό που δεν υπάρχει στο άλλο, ίσως λόγω ακατάλληλα εκδόσεις.

Είναι λίγο πιο κώδικας, και τρίβει τη στατική πληκτρολόγηση τμήμα του εγκεφάλου λίγο ωμά, αλλά σε πρωτόκολλα πάνω από HTTP η σοφία είναι να συνταχθεί με ευανάγνωστα χορδές πάνω από αδιαφανή συνόλων.

Απαντήθηκε 05/08/2008 στις 00:54
πηγή χρήστη

ψήφοι
3

Αν δεν εργάζεστε με το .NET σε .NET SOAP, μπορείτε να ορίσετε ακόμα ένα απογραφείς υπό την προϋπόθεση ότι και οι δύο τελικά σημεία χρησιμοποιώντας WSDL.

<s:simpleType name="MyEnum">    
     <s:restriction base="s:string">
          <s:enumeration value="Wow"/>
          <s:enumeration value="This"/>
          <s:enumeration value="Is"/>
          <s:enumeration value="Really"/>
          <s:enumeration value="Simple"/>
     </s:restriction>
</s:simpleType>

μέχρι το WSDL της -> εργαλείο γεννήτρια μεσολάβησης για να αναλύσει ότι σε ένα ισοδύναμο απαρίθμησης στη γλώσσα του πελάτη.

Απαντήθηκε 08/09/2008 στις 00:38
πηγή χρήστη

ψήφοι
3

Αν είστε καταναλώνουν υπηρεσία Web σας από ένα .NET σελίδα / εφαρμογή, θα πρέπει να είναι σε θέση να έχουν πρόσβαση στο απαρίθμηση μετά την προσθήκη αναφοράς στο Web για το έργο που καταναλώνει την υπηρεσία.

Απαντήθηκε 05/08/2008 στις 02:34
πηγή χρήστη

ψήφοι
3

Στη ΝΕΤ, τιμές απαρίθμηση είναι (εξ ορισμού) συνέχειες σε xml με το όνομα. Για τις περιπτώσεις όπου μπορείτε να έχετε πολλαπλές τιμές ( σημαίες ), τότε βάζει ένα κενό μεταξύ των τιμών. Αυτό λειτουργεί, επειδή η απαρίθμηση δεν περιέχει κενά, ώστε να μπορείτε να πάρετε και πάλι την τιμή με το διαχωρισμό το string (δηλ. «Τιμολόγιο Συμβόλαιο SignedWorkOrder», χρησιμοποιώντας το παράδειγμα Lubos του).

Μπορείτε να ελέγξετε τη σειριακή των τιμών των υπηρεσιών asp.net web χρησιμοποιώντας το XmlEnumAttribute , ή χρησιμοποιώντας το EnumMember χαρακτηριστικό όταν χρησιμοποιείτε WCF.

Απαντήθηκε 05/08/2008 στις 02:26
πηγή χρήστη

ψήφοι
3

Μπορώ να μιλήσω μόνο για το .net, αλλά αν έχετε ένα Webservice ASP.net, θα πρέπει να μπορείτε να προσθέσετε μια απαρίθμηση απευθείας σε αυτό.

Όταν στη συνέχεια χρησιμοποιήστε το «Add Web αναφοράς» στην Εφαρμογή Πελάτη σας, η προκύπτουσα κατηγορίας θα πρέπει να περιλαμβάνει αυτό το enum

Αλλά αυτό είναι από την κορυφή του κεφαλιού μου, είμαι αρκετά σίγουρος ότι έχω κάνει και στο παρελθόν, αλλά δεν μπορώ να πω με σιγουριά.

Απαντήθηκε 05/08/2008 στις 00:56
πηγή χρήστη

ψήφοι
2

Υπάρχουν μερικοί αρκετά καλοί λόγοι για να μην χρησιμοποιούν enums σε ένα όριο περιβάλλον όπως αυτό. Σκεφτείτε Τολμήστε το δημοσιεύσετε σχετικά με το θέμα.

Απαντήθηκε 08/09/2008 στις 13:35
πηγή χρήστη

ψήφοι
0

Έχω παρατηρήσει ότι όταν χρησιμοποιούν το «Add Υπηρεσία αναφοράς» σε αντιδιαστολή με «Καταχώρησε web αναφοράς» από VS.net, οι πραγματικές τιμές απαρίθμησης συναντήσετε καθώς και τα ονόματα απαρίθμησης. Αυτό είναι πραγματικά ενοχλητικό όπως έχω ανάγκη να υποστηρίξει και τις δύο 2.0 και 3.5 των πελατών. Θα καταλήξετε να χρειάζεται να περάσουν στον κώδικα μεσολάβησης υπηρεσίας 2.0 δημιουργείται web και το χέρι προσθέτοντας τις τιμές απαρίθμησης κάθε φορά που κάνετε μια αλλαγή!

Απαντήθηκε 08/09/2008 στις 00:21
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more