我对我的Web应用程序的设计有严重的怀疑。
我想将业务逻辑与接口分开,所以我制作了一个Web API,用于处理对数据库的所有请求。
它是具有实体框架,工作单元和通用存储库模式的ASP.NET Web API。到目前为止,一切都很好。
问题
我需要帮助的地方是,我找不到在API和应用程序之间共享对象的有效方法。
我不想直接序列化实体对象,我认为这将是一个坏习惯,因为如果实体模型发生更改,我最终可能会无缘无故地序列化大型对象。
现在如何实施
因为我的接口是C#中的ASP.NET Web应用程序,而我的API是C#中的API,所以我创建了一个公共库,其中定义了我想在它们之间共享的所有类。
我知道当我开发一个Android应用程序时该解决方案将不起作用,我将不得不再次用Java创建类,但这不是我最大的问题。
问题是我感觉自己一直在转换对象。
例
这是我的工作流程示例:
我从包含所有对象和表单数据注释的模型开始,然后用户将模型发布到控制器。
在控制器中,我必须将此模型转换为我的公共库中的类,然后将该对象发送到我的API。
然后,我的API中的控制器捕获了该调用,并将该对象转换为实体对象以更新数据库。
所以我有3节课
- 视图的模型以及用于验证的所有数据注释(客户端)
- 共享对象的公共库类(DLL)
- 实体类(API)
我感觉自己做错了什么。还有更优雅的东西吗?我想确保在这个项目变得太大之前,我有一个很好的解决方案。