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

发布于 2025-01-08 18:42:07 字数 388 浏览 1 评论 0原文

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

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

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

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

The reason why I need loosely-coupled WCF because Entity Framework is tightly-coupled. When I say loosely-coupled, there's no need to instantiate the database context or add the service reference of WCF. It just rely on web configuration or some .ini file that does not require compilation when developers need to change servers, ip address or service url's.

Instead, the MVC(say controller) will just send request message and then gets the response data from WCF service. But still we cannot afford without having Models based on the database (since we need it in intellisense for views markup), where the WCF will get the data. Let say we have those database objects class already, create some repository that binds the WCF data to the MVC Models.

What I mean of WCF web service, it ONLY contains messages, no more passing of object reference, because thats the new SOA definition. It makes more sense to pass messages instead of objects.

Is this a better approach? In terms of scalability and performance, I don't mean to offend the Entity Framework Fans.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云之铃。 2025-01-15 18:42:07

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

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

可扩展性和性能与数据和操作合同方面的服务设计完全正交。您应该随意采用最适合您的应用程序的任何方法来定义您的服务。如果那是 XML 消息,那很好 - 不要让任何人告诉您其他消息。

It is an entirely valid approach to define a WCF web service in terms of message schemas which just use basic types, so that clients need know nothing about WCF in order to use the service. WCF would be useless for interop with other platforms (e.g. Java) otherwise.

Understand that WCF is a general and powerful framework for implementing communication over a variety of transport protocols. It can be equally effectively used for raw XML messaging as for programming in terms of objects. Object serialisation and deserialisation is an optional extra of the framework, not a requirement. (There is really no such thing as "passing of object reference" - ultimately it is an XML infoset which travels across the communication channel. Also, Entity Framework is not part of WCF - it is a distinct ORM Framework which you can use with WCF if you want, but that's your choice.)

Scalability and performance is entirely orthogonal to the design of the service in terms of its data and operation contracts. You should feel free to adopt whatever approach to defining your services is best for your application. If that's XML messages, that's fine - don't let anyone tell you otherwise.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文