【问题标题】:WCF Service Library Reference in a Web Form (asp.net)Web 窗体中的 WCF 服务库参考 (asp.net)
【发布时间】:2010-05-13 03:53:12
【问题描述】:

我不确定这是否是正确的做法,但我读到您不认为您的 Web 表单项目中有 WCF 服务库引用,而是将端点添加到您的 web.config,这是真的吗?

这是我所做的:

  1. 创建 WCF 服务库项目
  2. 创建一个名为“MyService.svc”的简单服务

网络表单:

  1. 创建一个网络项目
  2. 创建一个 WCF 服务,其中我有这段代码

    <%@ ServiceHost Language="C#"
        Service="WCFJQuery.ContactBLL.Implementation.ContactUs"
        Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>
    
  3. 右键单击 Web 项目和“添加引用”,然后从 WCF 服务库项目中添加 MyService.dll 引用。

这是你想怎么做的吗?

【问题讨论】:

    标签: asp.net wcf


    【解决方案1】:

    如果您控制通信的两端(服务器端和客户端),并且都是 .NET,您有两种选择:

    1. 要么像往常一样添加你的服务引用(如果你不控制双方) - 在这种情况下,你会得到一个客户端代理类,它实现服务方法的代理,以及所有数据协定是重复的(您在客户端代理命名空间中获得类,这些类将在来回发送的消息中序列化和反序列化相同的 XML 表示 - 但类是不同的,因为它们位于不同的命名空间中)

    或者,可选:

    1. 您可以将所有服务合同、数据合同等放入一个单独的“MyService.Contracts”程序集(您可以随意称呼它),然后您可以共享该程序集;在服务器端,实现服务契约的代码将引用该共享程序集 - 而在客户端,您基本上做同样的事情:您的客户端项目将添加对该共享程序集的引用,现在您的所有数据协定(您的“消息”类型)只有一次 - 在共享程序集命名空间中。

    选项 #2 确实有其明显的优势,但同样:

    • 只有在你控制通信双方的情况下才有效
    • 只有在双方都是.NET代码的情况下才有效
    • 由于您不使用内置的添加服务引用机制,您可能需要手动创建一些客户端配置(实际上并不难)

    我希望这能给你一些想法和见解 - 如果你有更多具体问题 - 你知道去哪里问!

    【讨论】:

    • 感谢您的回复,目前我的设置都是 .net 中的(客户端/服务器),所以我在我的网站项目中添加我的程序集引用并且工作得很好,但只是想确保我关注正确的模式。
    【解决方案2】:

    您可能听说过如何在网站“项目”中使用 WCF。在我看来,更好的解决方案是使用 Web 应用程序项目,使用 File->New Project。网站“项目”的行为很奇怪,与 Visual Studio 中的所有其他项目类型不同。

    【讨论】:

    • +1 - 肯定是的 - 使用 Web 应用程序 项目 - 更好,更多控制。
    • 你觉得奇怪的是什么,只是想知道。
    • 就像它们在运行时构建,而不是在编译时构建。就像没有项目文件一样。就像它们与 Visual Studio 中所有其他类型的项目不同的方式一样。差异应该是对微软的暗示,但他们没有得到暗示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 2015-04-09
    • 2021-01-29
    • 1970-01-01
    • 2020-06-18
    • 2018-07-12
    相关资源
    最近更新 更多