我想知道将数据返回到客户端的最佳方法是什么,其中数据在某种程度上是相似的。我们要求允许客户端通过SOAP方法连接到我们的软件,并且我们将返回发生在特定对象上的所有“事件”。
例如,在在线商店中,事件可能是将项目添加到购物篮,下订单,支付订单。在此示例中,我们的软件将使用以下类结构:
public class Event
{
public Guid Id { get; set; }
public DateTime EventTime { get; set; }
public string Username { get; set; }
public string Message { get; set; }
}
public class ProductEvent : Event
{
public string ProductId { get; set; }
}
public class OrderEvent : Event
{
public ICollection<Product> Products { get; set; }
public string OrderId { get; set; }
}
目前我们可以创建可能如下所示的xml文件
<Events>
<ProductEvent>
<Id>0000-0000-0000-0000</Id>
<EventTime>01-01/-0001T00:00:00</EventTime>
<Username>User</Username>
<Message>Added to basket</Message>
<ProductId>00001</ProductId>
</ProductEvent>
<ProductEvent>
<Id>0000-0000-0000-0000</Id>
<EventTime>01-01/-0001T00:00:00</EventTime>
<Username>User</Username>
<Message>Added to basket</Message>
<ProductId>00002</ProductId>
</ProductEvent>
<OrderEvent>
<Id>0000-0000-0000-0000</Id>
<EventTime>01-01/-0001T00:00:00</EventTime>
<Username>User</Username>
<Message>Added to basket</Message>
<OrderId>000001</OrderId>
<Products>
<ProductId>00001</ProductId>
<ProductId>00002</ProductId>
</Products>
</OrderEvent>
</Events>
是否可以通过SOAP从一个方法返回此类数据,或者是否需要为每个事件类型分别使用单独的方法?
即。我可以使用SOAP调用返回IList<Event>
的方法返回类似于上面的内容吗?
有没有比这更好的方法来实现事件记录?我能想到的唯一方法是让Event
类包含Description属性中的所有信息,这会使搜索变得非常困难,因为您必须搜索写入文本的属性?
修改
应该提到,当尝试返回IList<Event>
时,内容可能来自Event
,导致客户端出错:
An existing connection was forcibly closed by the remote host
有没有办法做我正在尝试的事情,或者如果没有,那么有更好的方法或设计模式可以遵循。