没有服务约定接口的WCF是可能的

本文关键字:WCF 接口 服务 约定 | 更新日期: 2023-09-27 17:57:48

我在谷歌上搜索,想知道我们如何轻松地将asmx服务转换为wcf,在那里我看到人们编写了类似的代码

这是我以前的asmx服务

[WebService(Namespace="http://kennyw.com/sampleservices/")]
public class MyService : System.Web.Services.WebService
 { 
[WebMethod]
public string Hello(string name)
  { 
   return string.Format(“Hello {0}.”, name);
  }
}

转换为wcf

[ServiceContract(Namespace="http://kennyw.com/WCFservices/")]
[WebService(Namespace="http://kennyw.com/sampleservices/")]
public class MyService : System.Web.Services.WebService
 { 
[WebMethod]
[OperationContract]
public string Hello(string name)
   { 
    return string.Format(“Hello {0}.”, name);
   }
}

我看到在转换时,人们没有使用服务合同接口。它将如何工作,因为我知道当我们开发wcf服务时,我必须为单个服务编写一个服务合同接口。因此,希望探讨如何在没有服务合同接口的情况下开发wcf服务。感谢

没有服务约定接口的WCF是可能的

如果您没有在web.config中指定正确的合同名称,则以上内容将不起作用。

如果没有接口的类位于以下命名空间中:

namespace Foo
{
    [ServiceContract(Namespace="http://kennyw.com/WCFservices/")]
    [WebService(Namespace="http://kennyw.com/sampleservices/")]
    public class MyService : System.Web.Services.WebService
    { 
        [WebMethod]
        [OperationContract]
        public string Hello(string name)
        { 
            return string.Format(“Hello {0}.”, name);
        }
    }
}

在这种情况下,web配置服务配置应该看起来像

<services>
    <service name="YourServiceName">
        <endpoint address="" behaviorConfiguration="httpBehavior" binding="webHttpBinding" contract="Foo.MyService"/>
    </service>
</services>

因为针对接口编程是件好事,原因有几个:

  • 例如,一个非常重要的原因是,您可以在单元测试中轻松地使用它,这样您就可以轻松地模拟或存根它(并设置对它的期望)。

    IYourInterfaceMethods stub=MockRepository.GenerateStub();

    IYourInterfaceMethods mock=MockRepository.GenerateMock();

如果你在大公司,当你不是只为自己编码和完成JIRA任务时,你通常可以为其他人和你的大学编程。您正在为他们创建API,他们可以使用和重用这些API(从而降低公司的成本)。在这种情况下,您应该将服务的实现放在一个单独的库中,只公开它们可以调用的接口,并重用您的主部件。但在这种情况下,当有人开始使用你的服务(例如,可以发送短信,这需要花钱,或者运行5分钟长的复杂计算处理)时,如果他想对其进行单元测试,他需要能够模拟或存根。因此,您的代码必须是可测试的,并且您可以通过接口公开您的功能来实现它。这样,API的用户就可以使用不花钱的简单框架(因为你仍然可以使用其他不需要使用接口的单元测试框架,但它们不是免费的)。

  • 如果将接口放在一个单独的库中,则API的用户只能拥有此库及其使用的接口。如果您的接口是稳定的(不会经常更改),它们就不必重新编译代码,也很少需要重新部署应用程序(移动、web等)。在大公司中,部署新版本可能是危险的。他们喜欢坚持一个黄金计划:如果它没有坏,就不要修理它。对你有什么好处?你可以随心所欲地玩一个具体的实现,修复bug,修复这个和那个,重构,删除……总的来说很有趣,但不会伤害任何人:)…

  • 使用接口、程序员的安全等还有很多其他原因。但我认为以上是最重要的2。

我希望我能帮上忙。