Bir web hizmetine sayılan değerler geçirmek için nasıl

oy
20

Benim ikilem temelde nasıl iki uygulama arasında bir numaralandırma paylaşmak için vardır.

Kullanıcıların web üzerinde bir ön uç uygulaması üzerinden belgeleri yükleyin. Bu uygulama arka uç uygulama bir web hizmeti çağırır ve ona belgeyi geçirir. Arka uç uygulaması belgeyi kaydeder ve bir satır ekler Belge masaya.

Belge tipi (7 muhtemel belge türleri: Fatura , Sonuç vb), Web hizmetin bir parametre olarak geçirilir UploadDocument yöntemi. Soru bu parametrenin tipi (ve olası değerler) ne olmalı, değil mi?

Her iki uygulamada da bu değerleri hardcode gerektiğinden, bunun açıklayıcı dize (kullanmak için Tamam olduğunu düşünüyorum Fatura , Sözleşme , WorkOrder , SignedWorkOrder ).

Bir oluşturmak için daha iyi bir yaklaşım belki mi DocumentTypes aralarındaki web servisine karşılık gelen tamsayı değeri ilk uygulamada numaralandırma ve ikinci uygulamada da bunu çoğaltmak ve daha sonra pas?

Oluştur 05/08/2008 saat 00:43
kaynak kullanıcı
Diğer dillerde...                            


8 cevaplar

oy
6

Hala içten numaralandırma kullanmak istiyorum ama tüketiciler bana sadece adını değil, sayısal değeri kendisi geçmesi beklenir.

sadece bazı aptal örnek göstermek için:

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

[WebMethod]
public void UploadDocument(string type, byte[] data)
{
  DocumentType docType = (DocumentType)Enum.Parse(typeof(DocumentType), type);
}
Cevap 05/08/2008 saat 01:12
kaynak kullanıcı

oy
6

Ben sadece okunabilirlik ve hata ayıklama amacıyla, aralarında bir tamsayı geçirerek karşı öneririm. günlüklerinize geçiyor yaptığınızı ve DocumentType = 4 için 500 hataları bir demet görüyoruz. Şimdi DocumentType hangi bakmak gitmeliyim 4. Veya uygulamalardan biri belki Uyumsuz sürümlerine, diğerinde bulunmayan bir sayıya işaret ederse.

Biraz daha kod, ve biraz çiğ beynin statik yazarak bölümünü losyonları, ancak HTTP üst üste protokollerinde alınan bilgelik opak numaralandırma üzerinde okunaklı dizeleri tarafını etmektir.

Cevap 05/08/2008 saat 00:54
kaynak kullanıcı

oy
3

Eğer SOAP .NET için .NET ile çalışan değilseniz, yine her iki bitiş noktaları WSDL kullanırken sağlanan bir numaralandırıcıyı tanımlayabilirsiniz.

<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>

Onun kadar WSDL -> Proxy jeneratör aracı istemci dilde bir enum eşdeğer içine ayrıştırmak için.

Cevap 08/09/2008 saat 00:38
kaynak kullanıcı

oy
3

Bir .NET sayfa / uygulamadan Web hizmeti tüketen varsa, size hizmet tüketen projeye Web başvuru ekledikten sonra numaralandırma erişmek mümkün olmalıdır.

Cevap 05/08/2008 saat 02:34
kaynak kullanıcı

oy
3

NET'te, numaralandırma değerleri (varsayılan olarak) adı ile xml serileştirilir vardır. Birden çok değer (olabilir örnekleri için bayraklar ), o zaman değerleri arasında bir boşluk koyar. Numaralandırma boşluk içermediği için bu çalışır, böylece (LUBOS örneğini kullanarak, yani. "Fatura Sözleşme SignedWorkOrder") dizesi bölerek tekrar değerini elde edebilirsiniz.

Sen kullanarak asp.net web hizmetlerinde değerleri seri kontrol edebilir XmlEnumAttribute veya kullanan EnumMember WCF kullanırken niteliği.

Cevap 05/08/2008 saat 02:26
kaynak kullanıcı

oy
3

Ben sadece .net hakkında konuşabilir, ancak bir ASP.net webservice varsa, bunu doğrudan bir numaralandırma eklemek gerekir.

Sonra Müşteri Uygulamasında "Add Web Reference" kullandığınızda, sonuç Sınıf o enum içermelidir

Ama bu kafamın üstünden olduğunu ben geçmişte bunu yaptık eminim, ama emin diyemeyiz.

Cevap 05/08/2008 saat 00:56
kaynak kullanıcı

oy
2

Kullanmayan bazı oldukça iyi nedenleri vardır enumböyle bir arayüz sınırda s. Düşünün en göndermeden Dare konuda.

Cevap 08/09/2008 saat 13:35
kaynak kullanıcı

oy
0

Ben VS.NET gelen "Add Web Reference" karşıt olarak "Servis Add Reference" kullanılırken, fiili enum değerleri enum isimlerinin yanı sıra rastlamak fark ettik. Hem 2.0 ve 3.5 istemcileri desteklemek için ihtiyaç gibi bu gerçekten sinir bozucu. Ben enum değerleri Ben bir değişiklik yapmak her zaman manuel olarak eklemek 2.0 oluşturulan web hizmeti vekil koduna gidip zorunda sonunda!

Cevap 08/09/2008 saat 00:21
kaynak kullanıcı

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