ASP.NET MVC使用松散耦合的WCF Web服务

时间:2012-02-23 09:41:04

标签: c# asp.net-mvc wcf entity-framework

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

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

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

这是一种更好的方法吗?在可扩展性和性能方面,我并不是要冒犯实体框架粉丝。

1 个答案:

答案 0 :(得分:1)

根据仅使用基本类型的消息模式定义WCF Web服务是一种完全有效的方法,因此客户端无需了解WCF即可使用该服务。否则,WCF对于与其他平台(例如Java)互操作将毫无用处。

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

在数据和运营合同方面,可扩展性和性能完全与服务设计正交。您应该随意采用任何方法来定义您的服务最适合您的应用程序。如果那是XML消息,那没关系 - 不要让别人告诉你。