我正在开发具有WCF REST及以下DAL的应用程序。所有东西都是用C#编写的。
所有REST方法都是GET,但其中许多方法都具有泛型字符串参数(以及其他参数),我解析这些参数并映射到list对象。效果很好。
当涉及到Dto对象的映射时,我想使用一些设计模式来基于映射的REST参数实例化正确的Dto。不确定是否可能,因为我有这个泛型字符串参数(param名称不会一直相同)?
另外,基于创建的Dto类型,我想选择合适的DB方法来调用,命令设计模式,我猜呢?
谢谢你的帮助,如果需要的话,我可以解释更多。
发布于 2014-09-23 09:19:06
问题的重点是:
基于映射的REST参数实例化正确Dto的...design模式
对我来说,这听起来像是你想要使用工厂模式。
呃。是的,我知道,货物邪教编程等等,但是(!)有很好的理由:
当然,您总是可以将DAL的一个实例传递到堆栈中,但这并不总是可能的,而且可能会变得有点混乱。
或者..。
考虑创建一个DAL实现,可以让它知道各种交换机,并将代表调用正确的DAL实现。这可能会比一家直接的工厂轻一些。
发布于 2014-09-23 09:27:36
我开发了类似的应用程序(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"));
}
}
}https://stackoverflow.com/questions/25991185
复制相似问题