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

C# 使用松散耦合WCF Web服务的ASP.NET MVC,c#,asp.net-mvc,wcf,entity-framework,C#,Asp.net Mvc,Wcf,Entity Framework,我之所以需要松散耦合的WCF,是因为实体框架是紧密耦合的。当我说松耦合时,不需要实例化数据库上下文或添加WCF的服务引用。当开发人员需要更改服务器、ip地址或服务url时,它只依赖于web配置或一些不需要编译的.ini文件 相反,MVC(比如控制器)只发送请求消息,然后从WCF服务获取响应数据。但是,如果没有基于数据库的模型(因为我们需要用于视图标记的intellisense模型),WCF将从中获取数据,我们仍然负担不起。假设我们已经有了这些数据库对象类,创建一些将WCF数据绑定到MVC模型的存

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

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

我所说的WCFWeb服务只包含消息,不再传递对象引用,因为这是新的SOA定义。传递消息而不是对象更有意义


这是更好的方法吗?就可伸缩性和性能而言,我并不想冒犯实体框架的粉丝。

用消息模式定义WCF web服务是一种完全有效的方法,它只使用基本类型,因此客户端不需要了解WCF就可以使用该服务。否则,WCF将无法与其他平台(如Java)进行互操作

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


可伸缩性和性能与服务的数据和操作契约的设计完全正交。您可以随意采用任何最适合您的应用程序的方法来定义您的服务。如果这是XML消息,那很好——不要让任何人告诉你其他信息。

谢谢你,克里斯,这就是我要说的XML;)