我如何使用WCF数据服务?

Dot*_*mer 2 .net c# asp.net wcf wcf-data-services

我已经创建了一个wcf服务,但我已经使用了3个项目;
1)ServiceLibrary(WCF库)
2)Web
3)ConsoleTestClient
我的ServiceLibraryapp.config文件如下所示;

  <system.serviceModel>
    <services>
      <service name="MrDAStoreJobs.ServiceLibrary.AdvertisementService">
        <clear />
        <endpoint address="basic" 
                  binding="basicHttpBinding" bindingConfiguration="" 
                  contract="MrDAStoreJobs.ServiceLibrary.Interface.IAdvertisementService" />
        <endpoint name="mexHttpBinding"
          contract="IMetadataExchange"
          binding="mexHttpBinding"
          address="mex" />

        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:13758/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, 
          set the value below to false before deployment -->
          <serviceMetadata httpGetEnabled="True" />
          <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel> <br />
Run Code Online (Sandbox Code Playgroud)

现在,为了托管这个库,我在我Web.ConfigWeb项目文件中完成了以下设置.
svc文件名是WcfDataService1.svc

    public class WcfDataService1 : DataService<AdvertisementService>
    {
        // This method is called only once to initialize service-wide policies.
        public static void InitializeService(DataServiceConfiguration config)
        {
            config.UseVerboseErrors = true;
ServiceOperationRights.All);
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
        }
    }
  <system.serviceModel>
    <services>
      <service name="MrDAStoreJobs.ServiceLibrary.AdvertisementService">
        <clear />
        <endpoint address="basic" 
                  binding="basicHttpBinding" bindingConfiguration="" 
                  contract="MrDAStoreJobs.ServiceLibrary.Interface.IAdvertisementService" />
        <endpoint name="mexHttpBinding"
          contract="IMetadataExchange"
          binding="mexHttpBinding"
          address="mex" />

        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:13758/WcfDataService1.svc" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, 
          set the value below to false before deployment -->
          <serviceMetadata httpGetEnabled="True" />
          <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
Run Code Online (Sandbox Code Playgroud)

现在,当我使用WCF测试客户端直接使用(ServiceLibrary项目)测试此服务时,我看到以下内容并且一切都很好; 在此输入图像描述
问题是当我尝试运行我的Web项目(我用作wcf服务的主机).然后转到控制台测试客户端,并希望使用添加引用添加引用.我没有看到我GetSet方法(比如测试客户端) 在此输入图像描述 为什么我没有看到我的IAdvertisementService接口和方法
我是否必须部署它来实现IIS?

小智 6

要使用ASP.NET开发服务,我们必须将WebService属性添加到类,将WebMethodAttribute添加到任何类方法.

[WebService] 
 public class Service : System.Web.Services.WebService 
  { 
  [WebMethod] 
  public string Test(string strMsg) 
  { 
      return strMsg; 
  } 
 }
Run Code Online (Sandbox Code Playgroud)

要在WCF中开发服务,我们将编写以下代码:

[ServiceContract] 
public interface ITest 
{ 
   [OperationContract] 
   string ShowMessage(string strMsg); 
 } 


public class Service : ITest 
   { 
       public string ShowMessage(string strMsg) 
       { 
          return strMsg; 
       } 
   }
Run Code Online (Sandbox Code Playgroud)

ServiceContractAttribute指定接口定义WCF服务合同,OperationContract属性指示接口的哪些方法定义服务合同的操作.

实现服务契约的类在WCF中称为服务类型.

托管服务

ASP.NET Web服务被编译为类库程序集,扩展名为.asmx的服务文件将具有该服务的代码.服务文件将复制到ASP.NET应用程序的根目录中,Assembly将被复制到bin目录中.可以使用服务文件的URL访问该应用程序.

WCF服务可以在IIS或WindowsActivationService中托管.

将服务类型编译为类库将扩展名为.SVC的服务文件复制到虚拟目录中并汇编到虚拟目录的bin子目录中.将web.config文件复制到虚拟目录中.

客户开发

使用命令行工具WSDL.EXE生成ASP.NET Web服务的客户端.

WCF使用ServiceMetadata工具(svcutil.exe)为服务生成客户端.

有关更多详细信息,请转到此链接 http://www.codeproject.com/Articles/139787/What-s-the-Difference-between-WCF-and-Web-Services