在.net中实现请求-应答模式
本文关键字:应答 模式 请求 实现 net | 更新日期: 2023-09-27 18:08:00
我只是想知道我走的方向是否正确。
我正在实现请求-应答(request - response)模式,其中每个操作发送一个请求对象并获得响应对象。
例如:Public FetchCustomerResponse Fetch(FetchCustomerRequest searchObject)
我对实现我的存储库有点困惑。我有一个像这样的通用存储库接口:
public interface IRepositoryReadOnly<TGetRequest, TGetResponse> : IDisposable
{
TGetResponse FetchAll();
TGetResponse Fetch(TGetRequest reqObject);
}
public interface IRepositoryReadWrite<TGetRequest, TGetResponse, TPutRequest, TPutResponse> : IRepositoryReadOnly<TGetRequest, TGetResponse>
{
TPutResponse Insert(TPutRequest dto);
TPutResponse Update(TPutRequest dto);
void Delete(long id);
}
我遇到的问题是在void Delete(long id);
。
我希望我的delete方法接受一个对象,其中包含其他字段,如UserName, TimeStamp
等
我应该创建一个DeleteRequestObject的属性,并将其添加到IRepositoryReadWrite
?
如果我这样做,将会是这个样子。
public interface IRepositoryReadWrite<TGetRequest, TGetResponse, TPutRequest, TPutResponse, TDeleteRequest, TDeleteResponse> : IRepositoryReadOnly<TGetRequest, TGetResponse>
{
TPutResponse Insert(TPutRequest dto);
TPutResponse Update(TPutRequest dto);
TDeleteResponse Delete(long TDeleteRequest);
}
因为DeleteRequest和DeleteReponse对象对于所有操作都是相同的(我认为是这样),这是一个很好的实现还是我完全偏离轨道在这里做错了?
我想说您可以这样做,额外的请求-响应对象绝对不会对您造成伤害。
如果在某个阶段,例如,您发现您不断地通过id删除一些条目,并且要做到这一点,您必须定期创建一个完整的请求对象,并填充一个属性,您可以始终创建一个扩展方法-甚至是本机类方法,如果您愿意-它将接受long id
并为您构造请求对象。
如果您只使用id,那么在某些阶段您可能需要请求对象,但修改将会困难得多。