在.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对象对于所有操作都是相同的(我认为是这样),这是一个很好的实现还是我完全偏离轨道在这里做错了?

在.net中实现请求-应答模式

我想说您可以这样做,额外的请求-响应对象绝对不会对您造成伤害。

如果在某个阶段,例如,您发现您不断地通过id删除一些条目,并且要做到这一点,您必须定期创建一个完整的请求对象,并填充一个属性,您可以始终创建一个扩展方法-甚至是本机类方法,如果您愿意-它将接受long id并为您构造请求对象。

如果您只使用id,那么在某些阶段您可能需要请求对象,但修改将会困难得多。