Web窗体中的WCF服务库引用(asp.net)

时间:2010-05-12 17:38:53

标签: asp.net wcf

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

这就是我所做的:

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

    1. 创建一个Web项目
    2. 创建一个WCF服务,其中包含此代码

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

    4. 这是你想要做的事吗?

2 个答案:

答案 0 :(得分:2)

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

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

    1. 您可以将所有服务合同,数据合同等放入单独的“MyService.Contracts”程序集中(称之为对您有意义的任何内容),然后您可以共享该程序集;在服务器端,实现服务契约的代码将引用该共享程序集 - 在客户端,您基本上做同样的事情:您的客户端项目将添加对该共享程序集的引用,现在在共享程序集命名空间中,您只拥有所有数据协定(“消息”类型)。
    2. 选项#2确实有其明显的优势,但同样:

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

      我希望这会给你一些想法和见解 - 如果你有进一步的具体问题 - 你知道在哪里问!

答案 1 :(得分:1)

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