WCF服务架构查询

WCF service architecture query

我有一个由 Web 应用程序和多个 windows 服务组成的应用程序,根据使用的后端软件版本,只安装了一个 windows 服务。

目前,数据由网络应用程序保存在数据库中,然后安装相关服务,这会获取数据并将其发布到已安装的后端系统中。

我想将其更改为使用 WCF 服务,以便将生成的数据直接 returned 到网络应用程序。

我以前没有使用过 WCF 服务,但我假设我可以做这样的事情。

WebApp.Objects.Dll - 包含数据库对象,例如 PurchaseOrder 对象

WebApp.Service.Contracts.dll - 在这里我可以描述服务方法,这将引用 WebApp.Objects.dll 所以我可以将 PurchaseOrder 对象作为参数

WebApp.Service.2011.dll - 这将是 2011 版后端系统的实际服务,这将引用 WebApp.Service.Contracts dll

WebApp.Service.2012.dll - 这将是 2012 版后端系统的实际服务,这将引用 WebApp.Service.Contracts dll

所以,我的问题是,Web 应用程序是否需要了解有关使用什么后端 WCF 服务的细节?我只想调用具有指定接口的服务,而不关心它是如何实现的或者它在内部做了什么,而只是为了 return 在后端系统中创建的采购订单(无论是 return接口或具体 class)

我是否可以创建服务客户端而无需知道正在使用的是 2011 年还是 2012 年的 WCF 服务?

只要您能够对所有版本使用完全相同的合同,Web 应用程序就不需要知道它正在访问哪个版本的 WCF 服务。

在 Web 应用程序的配置中,您指定 URL 和合同。但是,除了合同之外,服务之间可能还有其他差异。在一个极端的例子中,这可能意味着 v2011 使用与后端的 v2012 不同的绑定——从你的描述来看这不太可能。但也应在配置文件中解决配置或服务行为的细微差异。例如。如果 v2012 需要像 v2011 一样更长的时间来执行操作,则需要配置超时,以便 v2012 的更长时间不会导致过期。