WCF 接口通信基础C#

xiaoxiao2021-02-28  20

问题1:我们怎么建立一个wcf程序

我们可以通过wcf服务建立 ,这种形式的创建方式,供外届调用时需要用到IIS服务器配置工具.

程序建立之后 ,删除她提供的IService1.cs 和Service1.svc 里面有我们不需要的代码

添加我们自己的服务

添加成功后,会生成对应的接口文件,和实现文件.

//接口 [ServiceContract] public interface IMyService { [OperationContract]//每个接口方法之前都要写 void DoWork(); } //实现 public class MyService : IMyService { public void DoWork() { } }

我们还可以建立winfrom方式建立wcf

得到一个基础的winform应用

如上前一种情况添加wcf服务之后

这使得app.config 会发生一些变化

<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name=""> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> <services> <service name="WindowsFormsApplication1.MyService"> <endpoint address="" binding="basicHttpBinding" contract="WindowsFormsApplication1.IMyService"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="http://localhost:8733/Design_Time_Addresses/WindowsFormsApplication1/MyService/" /> </baseAddresses> </host> </service> </services> </system.serviceModel> </configuration>

里面的 baseAddress 是我们即将要发布到的地方,最常见的就是你接口程序所处的ip,以及分配的端口,这个地址是我们自己决定的,可以随意修改(前提要是可用的)

如果想要自定义baseAddress 例如我不叫 MyService , 我想换一个名字

需要在serviceMetaData结里面添上 httpsGetUrl="https://localhost:8733/yourname"

并将includeExceptionDetailInFaults 改为 true

这些之后还要开启我们的服务,双击From进入代码编辑页

在From1_Load 里面添加(命名空间System.ServiceModel)

private void Form1_Load(object sender, EventArgs e) { ServiceHost test_host = null; MyService t = new MyService(); try { test_host = new ServiceHost(t); test_host.Open(); } catch(Exception ex) { string a = ex.Message; } } 由于new ServiceHost(t)的要求我们要在,接口实现文件class的前面这行代码

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]

这时候就可以在baseAddress提供的链接下加上?wsdl访问到服务配置文件了

问题2:wcf程序中我们有那些文件需要编辑

当我们建立wcf程序时会出现两个cs文件 接口文件 和 接口的实现文件

        在接口文件中我们只需要关注生名我们的接口方法 并在方法前 添加 [OperationContract] (如他举得列子dowork 一样)

实现文件中,处理接口对应的逻辑和存取数据库

//接口 [ServiceContract] public interface IMyService { [OperationContract]//每个接口方法之前都要写 void DoWork(); } //实现 public class MyService : IMyService { public void DoWork() { } }

问题三:怎么使用wcf服务

wcf服务会自动生成一个wsdl文件,我们引用此文件就能够访问接口了

右键 引用 - > 添加服务器引用

填写wsdl地址,如果是提供给外网的话,应该写服务器所在的ip地址,如果路径正确的话就能在新程序中以 所填命名空间的名字,作为类名访问接口方法了

转载请注明原文地址: https://www.6miu.com/read-2000033.html

最新回复(0)