我正在开发一个基于多层体系结构的项目,即持久层(数据库系统),服务器层(与数据库通信,执行耗时的任务等)和客户端层(表示,CRUD等) )。
该架构(几乎)非常普遍和简单。我使用MVVM(Caliburn micro)进行演示,使用DTO在服务器应用程序和客户端应用程序之间传输数据。
我认为MVVM模式的一个常用方法是将DTO对象传输(或以某种方式吸收)到ViewModel对象(负责数据的呈现方式),因为我们希望将传输对象与表示对象分开(以避免向传输对象添加演示行为)。
我认为这种方法是正确的,但我对此有一些想法:
因此,我创建了另一组类(称为ViewHelpers),它们保存数据,呈现方式(注释如DisplayName等)以及从DTO行为导入/导出。我用接口连接它们,因为它们具有几乎相同的行为(导入,导出等),我想使用泛型继承(如EditViewModel等)来概括一些ViewModel,以保持类似ViewModel的结构一致
我还应该注意到我正在使用Model类与服务器服务进行通信(获取和保存dto对象的方法)。
这是解决此类问题的好方法吗?我错过了什么吗?我是否误解了MVVM模式,将MVVM的模型称为ViewHelper,并且给了我的模型错误的行为?
谢谢你的建议。由于我的方法可能不仅仅是通过描述它就完全清楚,让我提出一个简短的伪代码示例。
public interface IViewHelperOperations<T> //T is DTO object
{
T Export();
void Import(T item);
}
public interface IModelOperations<T> //T is DTO object again
{
T GetDTO();
void SaveDTO(T item);
//connecting with server service to save or get objects from database
}
public abstract class AGenericEditModel<T> //T is DTO again
{
//data is binded to viewhelper object
protected IModelOperations<T> model;
protected IViewHelperOperations<T> viewHelper;
public virtual SaveItem()
{
model.SaveDTO(viewHelper.Export());
}
}
//i think that implementation of those is pretty obvious
答案 0 :(得分:0)
一种方法是: