WCF-来自另一个程序集的服务约定

本文关键字:服务 约定 程序集 另一个 WCF- | 更新日期: 2023-09-27 18:00:03

自上周以来,我一直在谷歌上搜索答案,但一无所获。也许我只是在搜索不正确的关键词。。。

基本上,我们有一个正在运行的WCF服务,然后有一个单独的dll和另一个ServiceContract。我们想知道是否可以在当前运行的服务中公开单独的dll,如果可以,如何公开?

我们还是WCF的新手,所以如果这是一个愚蠢的问题,请原谅。:(

我们正在使用.NET 3.5 SP1和C#。

问候

编辑:我们想把我们的服务分成"模块"。因此,服务实现(方法等)和契约(接口)都在单独的库中。假设您有一个名为"客户端"的模块。我们希望所有与客户端相关的东西都在同一个单独的库(DLL)中,而不是从多个接口继承的一个大基类中。这是一个巨大的服务,我们需要多个开发人员同时处理同一服务的不同部分。这是我被指示要弄清楚的,但如果能做到,那就做不到。我希望这更有意义??

WCF-来自另一个程序集的服务约定

假设您正在询问如何在单独的DLL/Application:中运行的服务中实现在一个DLL中声明的服务契约

编辑以匹配后期编辑

  1. 将对带有服务约定的DLL的引用添加到包含服务的应用程序
  2. 在带有服务实现的.cs文件中,为服务约定的命名空间添加一个using语句
  3. 从服务约定派生服务(如果将服务约定定义为具体类而不是接口,并且希望在服务上公开多个约定,则会出现问题
  4. 如果自宿主,则创建一个ServiceHost,传递其他程序集中服务的类型对象;如果IIS宿主创建一个.svc文件,将其他程序集中的类引用为服务
  5. 在配置文件中添加一个服务元素,命名服务的完全限定名称
  6. 在新约定的唯一地址向服务添加终结点

当您将其他程序集(dll)作为"main"项目中的引用时,请将using指令添加到实例化WCF服务的文件中。然后,您可以简单地使用引用的服务契约来设置具有正确端点和绑定(配置)的正在运行的服务。

我想一个解决方案是让一个主ServiceHost托管您的WCFMainLib,然后您的所有客户端都将连接到WCFMainLib。

WCFMainLib然后充当一个代理,连接到本地主机(或其他服务器)上的所有其他WCFModuleLib以获取数据。

WCFMainlib将实现IWCFModuleLib1、IWCFModuleLib2等服务契约接口,并将它们公开给WCFClient。接口的实际实现将是对实际WCFModuleLib的调用。

这可能会带来一些开销,但总体而言,也会带来一些"功能",这些功能可能有利于您的老板或服务可用性。

或者,如果你只是想委托编程工作,也许你可以告诉每个团队为你的WCFLib使用分部类,在分部类上签订每个服务合同,然后每晚进行编译。