创建WCF服务时要避免的DataContract对象类型

本文关键字:DataContract 对象 类型 WCF 服务 创建 | 更新日期: 2023-09-27 18:25:53

我想知道在创建WCF DataContract时应该避免的所有types

我希望我的Service与任何Client平台完全兼容。

这是我的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;
    }
}

我的服务是否与所有平台兼容

创建WCF服务时要避免的DataContract对象类型

类型应标记为SerializableAttribute、DataContractAttribute或XML Serializable。只要一个类型支持这一点,你就可以了。WCF会让你知道,如果不能。您的契约看起来很好,因为它只使用所有覆盖的原始类型和所有DataContract的复杂类型。

下面是一篇关于受支持类型的详细文章。

您可能需要考虑将WCF服务设置为RESTful。我认为这将使非WCF更容易使用该服务。这个:http://www.amazon.com/RESTful-NET-ebook/dp/B0028N4W74/ref=sr_1_3?ie=UTF8&qid=1330091833&sr=8-3可能是一个不错的读数。