WCF服务体系结构查询



我有一个由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.Services.Contracts dll

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

所以,我的问题是,web应用程序是否需要知道使用什么后端WCF服务的细节?我只想用指定的接口调用一个服务,而不关心它是如何实现的,也不关心它在内部做什么,只想返回在后端系统中创建的采购订单(无论它返回接口还是具体类)

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

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

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

最新更新