WCF服务库与类库项目类型比较

23

WCF服务库与常规类库相比有什么不同?

编辑:我发布了自己的答案。我是否缺少什么?它们是否基本上都是加入了一些模板类的类库?


2
@qntmfred: "它们基本上只是带有一些模板类的类库项目", 一切都几乎只是一个类库项目,添加了模板类和其他设置。 - John Saunders
4个回答

25

我创建了这两个并进行了比较,以下是我的研究结果。

WCF服务库

  • 添加对 System.Runtime.SerializationSystem.ServiceModel 的引用。与类库不同,不包含对 System.Data.DataSetExtensions 的引用。
  • 包含示例服务类 IService1CompositeTypeService1
  • 添加 app.config 并提供了 wsHttpBinding 和 mexHttpBinding 服务端点
  • 在项目属性中的调试命令行选项中添加 /client:"WcfTestClient.exe"
  • 在项目属性中添加一个 WCF 选项 选项卡,该选项卡包含一个选项,在调试解决方案中的其他项目中启动 WCF 服务主机
  • 在项目属性的签名选项卡中启用 签署 ClickOnce 清单 选项。此选项在类库中被禁用

这确实很好地概括了WCF服务库的作用! - marc_s

5
它还在 F5 上运行 WCF 服务主机实用程序。你注意到的 /client 开关是传递给 WCF 服务主机的,以告诉它启动哪个客户端。在这种情况下,它被告知启动 WCF 测试客户端。
这为您提供了相当不错的 F5 体验。在服务中设置断点,按下 F5,使用测试客户端调用您的服务操作,然后会触发断点。

1
@Marc:我太匆忙了。请检查编辑以查看我的意图(即将/client开关传递给测试主机,以便它可以启动客户端)。 - John Saunders
@Benny:那只是 <kbd>F5</kbd>。仅偶尔使用。 - John Saunders

2
我已经在VS 2010项目中测试过,使用类库作为WCF托管类型,但是无法生成wsdl或代理类。
WCF项目与普通的类库不同,因为它添加了许多dll到解决方案/项目引用中,并且它还添加了(Service1.svc)模板,您需要在IIS服务器上部署它并使用svcutil.exe创建2个输出文件。

0

此处所述:

在第一个PropertyGroup元素中执行以下操作:

查找ProductVersion元素。将产品版本更新为以下内容:

<ProductVersion>8.0.50727</ProductVersion>

在 AssemblyName 元素下方添加以下元素:
<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

<StartArguments>/client:"WcfTestClient.exe"</StartArguments>

滚动到文件末尾,在Import元素下方添加以下扩展:

<ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{3D9AD99F-2412-4246-B90B-4EAA41C64699}">
        <WcfProjectProperties>
          <AutoStart>True</AutoStart>
        </WcfProjectProperties>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接