2012-02-23 50 views
4

因为实体框架紧密耦合,所以我需要松散耦合的WCF。当我说松散耦合时,不需要实例化数据库上下文或添加WCF的服务引用。它只是依赖于web配置或一些.ini文件,当开发人员需要更改服务器,IP地址或服务url时,它们不需要编译。使用松散耦合的WCF Web服务的ASP.NET MVC

相反,MVC(比如控制器)只会发送请求消息,然后从WCF服务获取响应数据。但是,如果没有基于数据库的模型(因为我们需要在intellisense中进行视图标记),那么WCF将获取数据的情况下,我们仍然无法承受。假设我们已经有了这些数据库对象类,请创建一些将WCF数据绑定到MVC模型的存储库。

我的意思是WCF的Web服务,它只包含消息,不再传递对象引用,因为那是新的SOA定义。传递消息而不是对象更有意义。

这是一个更好的方法吗?在可伸缩性和性能方面,我并不是要冒犯Entity Framework Fans。

回答

1

这是一个完全有效的方法来定义一个WCF Web服务的消息模式方面,它只是使用基本类型,以便客户端需要对WCF一无所知才能使用该服务。否则WCF将无法与其他平台(例如Java)互操作。

了解WCF是通过各种传输协议实现通信的通用而强大的框架。对于原始XML消息传递,它可以同样有效地用于对象编程。对象序列化和反序列化是框架的一个可选的额外部分,而不是要求。 (实际上没有“传递对象引用”这样的东西 - 最终它是一个遍历通信通道的XML信息集。此外,实体框架不是WCF的一部分 - 它是一个独特的ORM框架,您可以使用WCF如果你愿意,但那是你的选择。)

可伸缩性和性能完全正交于服务设计的数据和操作合同。您应该随时采用任何方法来定义您的服务最适合您的应用程序。如果这是XML消息,那很好 - 别让别人告诉你。

+0

谢谢克里斯,那就是我正在谈论的XML;) – GiantHornet 2012-02-23 10:28:40