澳门1495

WCF学习之同—WCF服务配置至应用程序(十)WCF学习之同—WCF服务配置到应用程序(十)

九月 27th, 2018  |  综合体育

 上接  WCF学习的一起—WCF寄宿前的预备(八)

 上接  WCF学习之同—WCF寄宿前的准备(八)

         WCF学习的一起—WCF服务配置到IIS7.5(九)

         WCF学习的一起—WCF服务配置及IIS7.5(九)

 

 

五、控制台应用程序宿主

      (1) 在解决方案下新建控制高出口项目
ConsoleHosting。如下图。

 图片 1

  (2)添加 System.ServiceModel.dll
的引用。

  (3)添加 WCF
服务类库(WcfServiceLib)的类别援。

  (4)创建宿主程序,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.Text;
using System.Threading.Tasks;
using WcfServiceLib; 

namespace ConsoleHosting
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建宿主的基地址
            Uri baseAddress = new Uri("http://localhost:8080/BookService");
            //创建宿主
            using (ServiceHost host = new ServiceHost(typeof(BookService), baseAddress))
            {
                //向宿主中添加终结点
                host.AddServiceEndpoint(typeof(IBookService), new WSHttpBinding(), baseAddress);
                if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)
                {
                    //将HttpGetEnabled属性设置为true
                    ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
                    behavior.HttpGetEnabled = true;
                    behavior.HttpGetUrl = baseAddress;
                    //将行为添加到Behaviors中
                    host.Description.Behaviors.Add(behavior);
                    //打开宿主
                    host.Opened += delegate
      {
          Console.WriteLine("BookService控制台程序寄宿已经启动,HTTP监听已启动....,按任意键终止服务!");

      };

                    host.Open();
                    Console.Read();      
          }
            }
        }
    }

}

 

  (5)运行宿主程序,在运行客户端进行调用之前,需要事先运行宿主程序。如下图所示,则印证宿主建立成。

 图片 2

五、控制台应用程序宿主

      (1) 在缓解方案下新建控制高出口项目
ConsoleHosting。如下图。

 图片 3

  (2)添加 System.ServiceModel.dll
的引用。

  (3)添加 WCF
服务类库(WcfServiceLib)的项目援。

  (4)创建宿主程序,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.Text;
using System.Threading.Tasks;
using WcfServiceLib; 

namespace ConsoleHosting
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建宿主的基地址
            Uri baseAddress = new Uri("http://localhost:8080/BookService");
            //创建宿主
            using (ServiceHost host = new ServiceHost(typeof(BookService), baseAddress))
            {
                //向宿主中添加终结点
                host.AddServiceEndpoint(typeof(IBookService), new WSHttpBinding(), baseAddress);
                if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)
                {
                    //将HttpGetEnabled属性设置为true
                    ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
                    behavior.HttpGetEnabled = true;
                    behavior.HttpGetUrl = baseAddress;
                    //将行为添加到Behaviors中
                    host.Description.Behaviors.Add(behavior);
                    //打开宿主
                    host.Opened += delegate
      {
          Console.WriteLine("BookService控制台程序寄宿已经启动,HTTP监听已启动....,按任意键终止服务!");

      };

                    host.Open();
                    Console.Read();      
          }
            }
        }
    }

}

 

  (5)运行宿主程序,在运转客户端进行调用之前,需要先运行宿主程序。如下图所示,则说明宿主建立成。

 图片 4

 

 

成立客户端

      (1)
重新树立解决方案–>Windows窗体应用程序项目。如下图。

 图片 5

  (2)添加对劳务之援(在援上右键–>输入我们定义之劳务宿主的基地址(此处为:http://localhost:8080/BookService)–>转至–>确定),具体求看率先节。如下图1,图2。

 图片 6

                       图1

图片 7

 

                                              图2

(2)
在From1蒙受上加一个文本框与一个按钮。如下图。

 图片 8

(3) 在From1.cs遭描绘如下代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;



namespace WinClient
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        } 

        private void btnGetBook_Click(object sender, EventArgs e)
        {
            BookServiceReference.BookServiceClient client = new BookServiceReference.BookServiceClient();
            string book = client.GetBook("5");
            textBox1.Text = book;

        }

    }

}

 

 

(4)
测试程序要下图所示说明成功(注意:一定要是先运行我们的宿主程序才行,如果宿主没有打开的话会报错:出于目标计算机积极拒绝,无法连接。)。如下图。

 图片 9

  以斯示例中我们拿Endpoint中之ABC,基地址,Behaviors等还直接写以了代码里,但骨子里采用过程中都是失去因配置文件,为了对比说明我们下面的例子中会动安排文件。

建客户端

      (1)
重新建立解决方案–>Windows窗体应用程序项目。如下图。

 图片 10

  (2)添加对劳动之援(在援上右键–>输入我们定义之劳动宿主的基地址(此处为:http://localhost:8080/BookService)–>转到–>确定),具体要圈率先节。如下图1,图2。

 图片 11

                       图1

图片 12

 

                                              图2

(2)
在From1受上加一个文本框与一个按钮。如下图。

 图片 13

(3) 在From1.cs挨描写如下代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;



namespace WinClient
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        } 

        private void btnGetBook_Click(object sender, EventArgs e)
        {
            BookServiceReference.BookServiceClient client = new BookServiceReference.BookServiceClient();
            string book = client.GetBook("5");
            textBox1.Text = book;

        }

    }

}

 

 

(4)
测试程序一旦下图所示说明成功(注意:一定要事先运行我们的宿主程序才行,如果宿主没有打开的话会报错:由目标电脑积极拒绝,无法连接。)。如下图。

 图片 14

  在这示例中我们管Endpoint中之ABC,基地址,Behaviors等都直接写在了代码里,但实则行使过程遭到还是错开因配置文件,为了对比说明我们下面的例证中见面使用安排文件。

六、Windows应用程序宿主 

       (1)
在解决方案下新建Windows窗体应用程序项目 WinHosting。如下图。

 图片 15

  (2)添加 System.ServiceModel.dll
的引用。

  (3)添加 WCF
服务类库(WcfServiceLib)的类援。

  (4)添加应用程序配置文件App.config,这次咱们利用安排的艺术进行WCF服务之通告,WCF服务配置代码如下。

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

    <startup>

        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />

    </startup>



  <system.serviceModel>



    <behaviors>

      <serviceBehaviors>

        <behavior name="metadataBehavior">

          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://127.0.0.1:8080/BookService/metadata" />

          <serviceDebug includeExceptionDetailInFaults="True" />

        </behavior>

      </serviceBehaviors>



    </behaviors>







    <services>

      <service behaviorConfiguration="metadataBehavior" name="WcfServiceLib.BookService">

        <endpoint address="http://127.0.0.1:8080/BookService" binding="wsHttpBinding"

        contract="WcfServiceLib.IBookService" />

      </service>

    </services>

  </system.serviceModel>

</configuration>

 

 

  (5)创建宿主程序Form1窗体,并修改App.config,代码如下:

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WcfServiceLib;


namespace WinHosting
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        ServiceHost host = null;
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                host = new ServiceHost(typeof(BookService));        

                    host.Opened += delegate
                    {
                        label1.Text="窗体宿主程序,BookService,使用配置文件!";

                    };
                    host.Open();                

            }
            catch (Exception ex)
            {
                label1.Text=ex.Message;
            }
        } 

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            host.Close();

        }

    }

}

   (6) 运行程序一旦下图所著。

 图片 16

六、Windows应用程序宿主 

       (1)
在缓解方案下新建Windows窗体应用程序项目 WinHosting。如下图。

 图片 17

  (2)添加 System.ServiceModel.dll
的引用。

  (3)添加 WCF
服务类库(WcfServiceLib)的类别援。

  (4)添加应用程序配置文件App.config,这次我们运用安排的法子开展WCF服务的公布,WCF服务配置代码如下。

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

    <startup>

        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />

    </startup>



  <system.serviceModel>



    <behaviors>

      <serviceBehaviors>

        <behavior name="metadataBehavior">

          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://127.0.0.1:8080/BookService/metadata" />

          <serviceDebug includeExceptionDetailInFaults="True" />

        </behavior>

      </serviceBehaviors>



    </behaviors>







    <services>

      <service behaviorConfiguration="metadataBehavior" name="WcfServiceLib.BookService">

        <endpoint address="http://127.0.0.1:8080/BookService" binding="wsHttpBinding"

        contract="WcfServiceLib.IBookService" />

      </service>

    </services>

  </system.serviceModel>

</configuration>

 

 

  (5)创建宿主程序Form1窗体,并修改App.config,代码如下:

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WcfServiceLib;


namespace WinHosting
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        ServiceHost host = null;
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                host = new ServiceHost(typeof(BookService));        

                    host.Opened += delegate
                    {
                        label1.Text="窗体宿主程序,BookService,使用配置文件!";

                    };
                    host.Open();                

            }
            catch (Exception ex)
            {
                label1.Text=ex.Message;
            }
        } 

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            host.Close();

        }

    }

}

   (6) 运行程序要下图所展示。

 图片 18

  建立客户端

       
使用我们在Console寄宿程序编制的客户端,去拜谒Windows窗体宿主程序的WCF服务。

 

  建立客户端

       
使用我们当Console寄宿程序编制的客户端,去拜访Windows窗体宿主程序的WCF服务。

 

相关文章

标签:,

Your Comments

近期评论

    功能


    网站地图xml地图