我正在开发具有WCF REST API且低于某些DAL的应用程序。一切都是用C#编写的。
所有REST方法都是GET,但是其中许多方法都有通用字符串参数(以及其他参数),我将其解析并映射到列表对象。效果很好。
当谈到映射到Dto对象时,我想使用一些设计模式来基于映射的REST参数实例化正确的Dto。不确定是否可能因为我有那个通用字符串参数(param名称不会一直相同)?
另外,基于创建的Dto类型我想选择合适的DB方法来调用,这个命令设计模式,我猜?
感谢您的帮助, 如果需要,我可以解释更多。
答案 0 :(得分:0)
问题的关键是:
...设计模式以基于映射的REST参数实例化正确的Dto
对我而言,这听起来像是要使用Factory Pattern。
Urgh。是的,我知道,货物崇拜编程等,但是(!),有充分的理由:
当然,你总是可以将DAL的一个实例传递到堆栈中,但这并不总是可行的,并且可能会有点混乱。
考虑创建一个可以使各种开关知道的DAL实现,并delegate调用正确的DAL实现。这可能实际上比直接工厂重量轻。
答案 1 :(得分:0)
我开发了相同类型的应用程序(WCF REST服务)。
我创建了.net解决方案并添加到项目
下面的DataService:
public SnapshotData GetSnapshot(string symbol, int nocache)
{
SnapshotData objSnapshotData;
try
{
objSnapshotData = (new SnapshotBAL()).GetSanpshotData(symbol);
SerializeObject(objSnapshotData, localCacheKey);
return objSnapshotData;
}
catch (Exception ex)
{
return null;
}
}
BusinessLayer:
namespace BusinessLayer
{
public class SnapshotBAL
{
public Snapshot GetSanpshot(string symbol)
{
return (new SnaapshotDAL()).GetSanpshot(symbol);
}
}
}
EntiryLayer:
namespace EntityLayer
{
public class Snapshot
{
public DateTime time { get; set; }
public double price { get; set; }
}
}
DataAccessLayer:
namespace DataAccessLayer
{
public class SnaapshotDAL : PrototypeDB
{
public Snapshot GetSanpshot(string symbol)
{
AddParameter("o_snapshot");
AddParameter("i_symbol", symbol);
Snapshot objSanapshot = new Snapshot();
return ObjectHelper.FillObject<Snapshot>(typeof(Snapshot), GetReader("A_SM7_V1_P.GetSnapshotQuick"));
}
}
}