我刚刚使用WCF / REST Web服务启动了一个小项目,该服务使用Entity Framework访问数据库,应用一些次要业务逻辑,并将结果传递给.NET Webforms前端。这很好用,但最初的设计没有花很多时间来调查选项,现在我被要求做另一个非常类似的项目。我现在有更多的时间来看看那里有什么,并且可能比第一个更好地完成这个项目。
我想知道是否有更好的方法来完成一些事情,特别是在Web服务和前端之间来回传递对象。
对于第一个项目,我创建了一个包含Web服务和网站使用的类定义的共享库。当请求进入Web服务时,执行数据库查询,应用业务逻辑,并创建其中一个共享类型的对象并在Web服务响应中传回。
当网站得到回复时,它会将其反序列化为相应的共享对象并继续它的快乐方式。
它工作正常,但是必须编写许多代码来定义共享对象,然后将查询结果/业务逻辑结果映射到共享对象。
有更好的方法吗?特别是我正在寻找的方式:
自动生成对象。 (我不确定是否存在 - 似乎我可以自动生成专门映射到数据库实体(如表或视图)的对象(实际上,这就是实体框架所做的)但是需要包含非DB信息的对象呢像业务逻辑可能添加的东西?)
删除Web Service和网站之间共享库的要求。我怀疑这可能存在,但我甚至不确定从哪里开始。
答案 0 :(得分:2)
我正在开展一个类似的项目,这就是我正在做的事情(你可以决定它是否适合你)。
所以,我最终总结了4个模型,总结如下:
如上所述,这允许分离关注点。我可以更改我的持久性模型,而无需更改服务中设置的合同(将公开)。这将使内部更改不会破坏外部应用程序。但是,你确实冒着必须改变所有模型的风险。
关于将它们全部映射到一起的样板,我正在使用AutoMapper。因此,由于AutoMapper,RestSharp和ServiceStack,代码不会被映射混乱。代码看起来像代码:)
我不确定这是否完全回答了你的问题,但听起来有点像你在解释的那样。
更新:
这是为了尝试采用上述内容,使其更加具体到BDW的ASP.NET解决方案: