I’m designing a WCF service that will return a list of objects that are describing a person in the system.
The record count is really big and there I have some properties like person’s sex.
Is it better to create a new enum (It’s a complex-type and consumes more bandwidth) named Sex with two values (Male and Female) or use a primitive type for this like bool IsMale?
Very little point switching to bool; which is bigger:
or
Not much in it ;-p
If bandwidth becomes an issue, and you control both ends of the service, then rather than change your entities you could look at some other options:
byte[]orStream, noting to enable MTOM on the serviceDataContractSerialier(again: enable MTOM). In a test based on Northwind data (here) it reduced 736,574 bytes to 133,010. and reduced the CPU required to process it (win:win). For info, it reduces enums to integers, typically requiring only 1 byte for the enum value and 1 byte to identify the field; contrast to<gender>Male</gender>, which under UTF8 is 21 bytes (more for most other encodings), orgender="male"at 14 bytes.However, either change will break your service if you have external callers who are expecting regular SOAP…