您的位置:首页 > 编程语言 > ASP

[ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的WCF分层结构示例Step by Step —— 04 DataContract

2011-03-14 22:10 597 查看
注:本例来自图书Professional ASP.NET Design Pattern,该书的亚马逊链接为:http://www.amazon.com/Professional-ASP-NET-Design-Patterns-Millett/dp/0470292784/ref=sr_1_1?ie=UTF8&qid=1296479229&sr=8-1

转载请注明本文来自博客园 http://www.cnblogs.com/charrli

本文源自于该书第六章的一个SOA示例。

 

DataContract定义了Client和Service交互所使用的数据的格式。DataContract定义的数据类的特点是,其类名要使用DataContract的attribute,而类内部的Property,则需要使用DataMember进行修饰。这样做的目的适应序列化的要求。

 

1.在Service文件夹下建立ASPPatterns.Chap6.EventTickets.DataContract这个class library的project。

2. 建立Response抽象类:

namespace ASPPatterns.Chap6.EventTickets.DataContract
{
    [DataContract]
    public abstract class Response
    {
        [DataMember]
        public bool Success { get; set; }

        [DataMember]
        public string Message { get; set; }
    }
}

 

这里抽象类的目的是因为无论是Reservation还是Purchase,应都该包括是否成功以及要传递的信息这两个Property。注意这里虽然是抽象类,但是是实际上子类直接继承这两个Property就能使用。同时注意这里的Response是完全按照DataContract的要求来进行声明的,即类使用DataContract这个Attribute,而Property使用DataMemeber来进行声明。

3. 建立ReserveTicketResponse类:

namespace ASPPatterns.Chap6.EventTickets.DataContract
{
    [DataContract]
    public class ReserveTicketResponse : Response
    {
        [DataMember]
        public string ReservationNumber {get; set;}

        [DataMember]
        public DateTime ExpirationDate { get; set; }

        [DataMember]
        public String EventName { get; set; }

        [DataMember]
        public String EventId { get; set; }

        [DataMember]
        public int NoOfTickets { get; set; }
    }
}

注意这里返回了ReservationNumber,因为在这个实例里面,所有的Purchase都只能先进性Reserve,不提供没有Reserve过的Purchase。

4. 建立PurchaseTicketResponse类:

namespace ASPPatterns.Chap6.EventTickets.DataContract
{
    [DataContract]
    public class PurchaseTicketResponse : Response
    {
        [DataMember]
        public string TicketId { get; set; }
                      
        [DataMember]
        public String EventName { get; set; }

        [DataMember]
        public String EventId { get; set; }

        [DataMember]
        public int NoOfTickets { get; set; }
    }
}

5. 建立ReserveTicketRequest类:

namespace ASPPatterns.Chap6.EventTickets.DataContract
{
    [DataContract]
    public class ReserveTicketRequest
    {
        [DataMember]
        public string EventId { get; set; }
        [DataMember]
        public int TicketQuantity { get; set; }
    }
}

6. 建立PurchaseTicketRequest类:

namespace ASPPatterns.Chap6.EventTickets.DataContract
{
    [DataContract]
    public class PurchaseTicketRequest
    {
        [DataMember]
        public string CorrelationId { get; set; }

        [DataMember]
        public string ReservationId { get; set; }

        [DataMember]
        public string EventId { get; set; }
    }
}

注意这里的CorrelationID和ReservationId,在书中作者都是赋予ReservationID的值。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐