0

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

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

我想将其更改为使用 WCF 服务,以便将结果数据直接返回到 Web 应用程序。

我以前没有使用过 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 服务的细节?我只想调用具有指定接口的服务,而不关心它是如何实现的或它在内部做什么,而只是返回在后端系统中创建的采购订单(无论是返回接口还是具体类)

我是否能够创建服务客户端而不需要知道它是使用 2011 还是 2012 WCF 服务?

4

1 回答 1

1

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

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

于 2015-06-22T09:55:36.847 回答