[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抽象类:
转载请注明本文来自博客园 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类:{
[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来进行声明。
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类:{
[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。
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类:{
[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; }
}
}
namespace ASPPatterns.Chap6.EventTickets.DataContract
{
[DataContract]
public class ReserveTicketRequest
{
[DataMember]
public string EventId { get; set; }
[DataMember]
public int TicketQuantity { get; set; }
}
}
6. 建立PurchaseTicketRequest类:{
[DataContract]
public class ReserveTicketRequest
{
[DataMember]
public string EventId { get; set; }
[DataMember]
public int TicketQuantity { get; set; }
}
}
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的值。
{
[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的值。
相关文章推荐
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的分层结构示例Step by Step —— 04 数据访问层
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的分层结构示例Step by Step —— 02 业务逻辑层
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的分层结构示例Step by Step —— 03 服务层
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的WCF分层结构示例Step by Step —— 02 Model的建立
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的WCF分层结构示例Step by Step —— 01 准备工作
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的分层结构示例Step by Step —— 01 准备工作
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的分层结构示例Step by Step —— 05 表现层
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的WCF分层结构示例Step by Step —— 03 数据访问层
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的WCF分层结构示例Step by Step —— 05 Contracts
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的分层结构示例Step by Step —— 06 用户界面层
- ASP.NET和Ajax应用一个超级实用的设计模式---享元模式
- 经验技巧分享--ASP.NET和Ajax应用一个超级实用的设计模式---享元模式
- [置顶] 经验之谈 ---- ASP.NET应用程序MVC5模式下的简单实例项目
- asp.net core 实现一个简单的仓储
- [翻译-ASP.NET MVC]Contact Manager开发之旅迭代4 - 利用设计模式松散耦合
- 用ASP.NET和Ajax搭建了一个框架
- 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler
- Asp.net开发过程中的几个模式(设计,源,cs or vb)切换
- 创建一个简单的ArcGIS Server ASP.NET网页
- [设计模式]Asp.Net Forums 代码中的web设计模式