我有一个由Web应用程序和多重Windows服务组成的应用程序,根据使用的是哪个版本的后端软件,只安装一个Windows服务。WCF服务体系结构查询
当前,数据由Web应用程序保存在数据库中,然后安装相关服务,然后将数据提取到已安装的后端系统中。
我想改变这个使用WCF服务,所以结果数据直接返回到Web应用程序。
我以前没有使用WCF服务,但我假设我可以做这样的事情。
WebApp.Objects.Dll - 包含数据库对象,例如PurchaseOrder的对象
WebApp.Service.Contracts.dll - 在这里我可以描述的服务方法,这将参考WebApp.Objects.dll这样我就可以拿了一个采购订单对象作为参数
WebApp.Service.2011.dll - 这将是2011年版的后端系统的实际服务,这将引用dll的WebApp.Service.Contracts
WebApp.Service .2012.dll - 这将是2012版后端系统的实际服务,这将引用因此,我的问题是,Web应用程序是否需要知道有关后端WCF服务的具体使用情况?我只想调用具有指定接口的服务,而不关心其实现方式或内部执行方式,而只是返回在后端系统中创建的采购订单(无论它是返回接口还是具体的类)
我能否创建服务客户端而无需知道其2011或2012年WCF服务是否正在使用?
嗨,多数民众赞成在此我非常感谢,有一个单一的dll来存储合同,所有版本的服务引用这个以确保它们是相同的,多个后端服务都做同样的事情,并且有相同的参数,他们只是使用一组不同的引用到后端软件,这就是为什么我不希望网络应用程序直接引用它们。如果所有的网络应用程序的需求是一个合同和地址,将工作得很好! – WraithNath
@WraithNath:我不知道所有的细节,但也许你根本不需要WCF(会降低部署和配置的复杂性,请求时间)。 WCF的一个原因是,如果你想将服务部署到不同的机器上。只需为所有后端版本(合同)声明一个通用接口。在每个版本的后端的独立程序集中实现接口。在Web应用程序中,配置要使用的具体实例并使用Activator.CreateInstance创建它。 – Markus
谢谢,我目前有一些dll,根据它是什么版本进入bin目录,如果它们在那里,它会通过反射装载它们。这确实工作得很好,但这确实意味着后端系统需要安装在Web服务器上,而这有时并不是最终用户想要的,我们的应用程序部署在跨服务器的某些情况下,已经可以公开访问Web服务器,所以后端财务系统不希望理想地在同一个盒子上。谢谢! – WraithNath