WCF 接口通信基础 C#

问题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地址,如果路径正确的话就能在新程序中以 所填命名空间的名字,作为类名访问接口方法了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值