首先,这是我的第一个 Stack Overflow 问题,如果我弄错了,请提前道歉!
我正在为内部使用的 CRM 数据库创建服务端点。多个应用程序想要读取和写入此数据库,因此公开 WCF 服务似乎是最好的方法。
我开始使用用于 ORM 的实体框架、用于业务逻辑层的 CSLA 和用于与客户端应用程序通信的标准 WCF 服务。一切都很顺利,直到我查看了 WCF 数据服务并被可爱的 REST 界面、AJAX 客户端的易用性以及使用新技术的乐趣所吸引!
我现在已经用一个 WCF 数据服务替换了大部分 WCF 服务,它直接公开实体框架模型,绕过 CSLA 层。这对于只读操作非常有用,但如果没有一些业务逻辑,我将无法执行其他 CRUD 功能。
我一直在研究拦截器,我当然可以将业务登录放在那里,但我实际上想拦截 POST/Add 操作,将值映射到有问题的 CSLA BusinessBase 类,然后让它完成所有验证并最终保存到数据库。我已经尝试过了,虽然 CSLA 对象按预期工作,但底层 WCF 数据服务框架也保留了它的版本,所以我在 db 中获得了两个条目。
因此,我有几个问题:
1)我可以完全拦截一个变更请求,让我自己的业务对象处理它然后取消WCF数据服务而不抛出异常吗?
2) 是否有更好/标准的方法将业务逻辑层添加到 WCF 数据服务堆栈?到目前为止,我还没有找到一个。
提前致谢,
戴夫