Reputation: 9476
I would like to know all the types
i should avoid when i am creating my WCF DataContract
.
I would like my Service
to be completely compatible with any Client
platform.
This is my interface
:
public interface IShopriteService
{
[OperationContract]
ChangePasswordResponse ChangePassword(ChangePasswordRequest changePasswordRequest);
[OperationContract]
GetCampaignSchedulePlacementsResponse GetCampaignSchedulePlacements(GetCampaignSchedulePlacementsRequest getCampaignSchedulePlacementsRequest);
[OperationContract]
ConfirmDownloadResponce ConfirmDownload(ConfirmDownloadRequest confirmDownloadRequest);
[OperationContract]
UploadCampaignSchedulePlacementsResponse UploadCampaignSchedulePlacements(UploadCampaignSchedulePlacementsRequest uploadCampaignSchedulePlacementsRequest);
}
[DataContract]
public class ChangePasswordRequest
{
[DataMember]
public Guid ServiceProviderGuid
{
get;
set;
}
[DataMember]
public string OldPassword
{
get;
set;
}
[DataMember]
public string NewPassword
{
get;
set;
}
}
[DataContract]
public class ChangePasswordResponse
{
[DataMember]
public string Message
{
get;
set;
}
}
[DataContract]
public class GetCampaignSchedulePlacementsRequest
{
[DataMember]
public Guid ServiceProviderGuid
{
get;
set;
}
[DataMember]
public string Password
{
get;
set;
}
}
[DataContract]
public class GetCampaignSchedulePlacementsResponse
{
[DataMember]
public string Message
{
get;
set;
}
[DataMember]
public DateTime DateOfLatestUpdate
{
get;
set;
}
[DataMember]
public List<CampaignSchedulePlacement> CampaignSchedulePlacementList
{
get;
set;
}
}
[DataContract]
public class ConfirmDownloadRequest
{
[DataMember]
public Guid ServiceProviderGuid
{
get;
set;
}
[DataMember]
public string Password
{
get;
set;
}
[DataMember]
public DateTime DateOfLatestRecordRecieved
{
get;
set;
}
}
[DataContract]
public class ConfirmDownloadResponce
{
[DataMember]
public string Message
{
get;
set;
}
}
[DataContract]
public class UploadCampaignSchedulePlacementsRequest
{
[DataMember]
public Guid ServiceProviderGuid
{
get;
set;
}
[DataMember]
public string Password
{
get;
set;
}
[DataMember]
public List<CampaignSchedulePlacement> CampaignSchedulePlacementList
{
get;
set;
}
}
[DataContract]
public class UploadCampaignSchedulePlacementsResponse
{
[DataMember]
public string Message
{
get;
set;
}
}
[DataContract]
public class CampaignSchedulePlacement
{
[DataMember]
public Guid CampaignSchedulePlacementUID
{
get;
set;
}
[DataMember]
public string CampaignSchedulePlacementNo
{
get;
set;
}
[DataMember]
public string ClientNo
{
get;
set;
}
[DataMember]
public string ClientName
{
get;
set;
}
[DataMember]
public string ClientProductNo
{
get;
set;
}
[DataMember]
public string ClientProductName
{
get;
set;
}
[DataMember]
public string ClientProductRegion
{
get;
set;
}
[DataMember]
public string CampaignNo
{
get;
set;
}
[DataMember]
public string CampaignTitle
{
get;
set;
}
[DataMember]
public string CampaignScheduleNo
{
get;
set;
}
[DataMember]
public string CampaignScheduleTitle
{
get;
set;
}
[DataMember]
public string SupplierName
{
get;
set;
}
[DataMember]
public string SupplierProductName
{
get;
set;
}
[DataMember]
public DateTime PlacementDate
{
get;
set;
}
[DataMember]
public string Size
{
get;
set;
}
[DataMember]
public short Columns
{
get;
set;
}
[DataMember]
public int Quantity
{
get;
set;
}
[DataMember]
public string CombinedSize
{
get;
set;
}
[DataMember]
public string Colour
{
get;
set;
}
[DataMember]
public string Position
{
get;
set;
}
[DataMember]
public string PositionNo
{
get;
set;
}
[DataMember]
public string FromTime
{
get;
set;
}
[DataMember]
public string ToTime
{
get;
set;
}
[DataMember]
public decimal GrossUnitRateAmount
{
get;
set;
}
[DataMember]
public decimal GrossRateAmount
{
get;
set;
}
[DataMember]
public decimal DiscountAmount
{
get;
set;
}
[DataMember]
public decimal CommissionAmount
{
get;
set;
}
[DataMember]
public decimal NettCostAmount
{
get;
set;
}
[DataMember]
public string AdvertNo
{
get;
set;
}
[DataMember]
public string AdvertTitle
{
get;
set;
}
[DataMember]
public string AdvertLanguage
{
get;
set;
}
[DataMember]
public string OrderNo
{
get;
set;
}
[DataMember]
public DateTime OrderDate
{
get;
set;
}
[DataMember]
public string OrderStatus
{
get;
set;
}
[DataMember]
public string ContractNo
{
get;
set;
}
[DataMember]
public bool IsCancelledInChase
{
get;
set;
}
[DataMember]
public string ClientInvoiceNo
{
get;
set;
}
[DataMember]
public DateTime ClientInvoiceDate
{
get;
set;
}
[DataMember]
public decimal ClientInvoiceAmount
{
get;
set;
}
[DataMember]
public DateTime MaterialDeadlineDate
{
get;
set;
}
[DataMember]
public string ExtraInfo
{
get;
set;
}
[DataMember]
public string ChaseStatus
{
get;
set;
}
[DataMember]
public string ExternalStatus
{
get;
set;
}
[DataMember]
public DateTime ChaseModifiedDate
{
get;
set;
}
[DataMember]
public DateTime ShopriteModifiedDate
{
get;
set;
}
}
Will my service be compatible with all platforms?
Upvotes: 3
Views: 3213
Reputation: 42497
A type should be marked with SerializableAttribute, DataContractAttribute, or is XML Serializable. As long as a type supports that, you'll be fine. WCF will let you know if it can't. Your contract looks fine, as it uses nothing but primitive types that are all covered, and complex types that are all DataContracts.
Here's a detailed article on supported types.
Upvotes: 4
Reputation: 155
You might want to consider making your WCF service RESTful. I think this will make it easier for Non-WCF to consume the service. This: http://www.amazon.com/RESTful-NET-ebook/dp/B0028N4W74/ref=sr_1_3?ie=UTF8&qid=1330091833&sr=8-3 might be a good reading.
Upvotes: 1