제 딜레마는 기본적으로 두 애플리케이션 간에 열거형을 공유하는 방법입니다.
사용자는 웹에 있는 프론트엔드 애플리케이션을 통해 문서를 업로드합니다. 이 애플리케이션은 백엔드 애플리케이션의 웹 서비스를 호출하여 문서를 전달합니다. 백엔드 앱은 문서를 저장하고 문서 테이블에 행을 삽입합니다.
문서 유형(7가지 가능한 문서 유형: 송장, 계약서 등)은 웹 서비스의 UploadDocument 메서드에 매개변수로 전달됩니다. 문제는 이 매개변수의 유형(및 가능한 값)이 무엇이어야 하는가입니다.
두 애플리케이션 모두에서 이러한 값을 하드코딩해야 하므로 설명 문자열(Invoice, Contract, 작업 주문, 서명된 작업 주문)을 사용해도 괜찮다고 생각합니다.
첫 번째 애플리케이션에서 DocumentTypes 열거형을 만들고 두 번째 애플리케이션에서도 이를 재현한 다음 그 사이에 해당 정수 값을 웹 서비스에 전달하는 것이 더 나은 접근 방식일까요?
내부적으로는 여전히 열거형을 사용하지만 소비자는 숫자 값 자체가 아닌 이름만 전달해 주기를 기대합니다.
설명하기 위한 간단한 예시입니다:
public enum DocumentType
{
Invoice,
Contract,
WorkOrder,
SignedWorkOrder
}
[WebMethod]
public void UploadDocument(string type, byte[] data)
{
DocumentType docType = (DocumentType)Enum.Parse(typeof(DocumentType), type);
}
가독성과 디버깅을 위해 두 값 사이에 정수를 전달하지 않는 것이 좋습니다. 로그를 살펴보다가 DocumentType=4에 대한 500개의 오류를 발견했다고 가정해 봅시다. 이제 어떤 문서 유형이 4인지 찾아봐야 합니다. 또는 버전이 일치하지 않아서 애플리케이션 중 하나가 다른 애플리케이션에 존재하지 않는 숫자를 참조하는 경우도 있습니다.
코드가 조금 더 많아지고 정적 타이핑에 대한 두뇌가 약간 혼란스러워지지만, HTTP 기반 프로토콜에서는 불투명한 열거형보다 가독성이 좋은 문자열을 사용하는 것이 일반적인 관행입니다.
Net 에서는, 열거도 값은 xml 로 시리얼화된 (기본적으로) 라는 이름으로. 인스턴스에 대한 여러 값을 가질 수 있는 것이 특징이다 ([플래그] (http://msdn.microsoft.com/en-us/library/system.flagsattribute.aspx), 그 사이에 공간이 값. 이 때문에, t # 39 의 값을 얻을 수 있도록 다시 doesn& 열거도 컨테인먼트하는 공간을 분할하여 구체화하십시오. (예: # 39 을 사용하여 SignedWorkOrder" lubos& 송장의 ", 계약, 예).
의 값을 사용하여 웹 서비스 (asp.net) 에서 직렬화하지 제어할 수 있습니다 (http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlenumattribute.aspx) 또는 [스마르누마트리부트] [에누마 베르] (http://msdn.microsoft.com/en-us/library/system.runtime.serialization.enummemberattribute.aspx) 속성을 사용하여 사용할 때 WCF.
정상적으로 작동하지 않을 경우 .NET 를 정의하는 열거자를 모두 제공하는 엔드포인트에 WSDL 사용하는 .NET SOAP 수도 있습니다.
<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 - > 있다. 이넘 붙여넣습니다 분석할 수 있는 클라이언트 욕금지 avamer 가상본 발생기입니다 도구에서는