Host、EndPoints及配置服务(一)

原创 2015年11月17日 17:27:11

服务的三要素(ABC)
A:Address 意味着在哪里(也含有传输方式信息)
B:Binding 意味着怎么做(与地址的传输方式要匹配)
C:Contract意味着做什么(服务契约)

配置文件:

<system.serviceModel>
<services>
<service
name="CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/service"/>
</baseAddresses>
</host>
<endpoint address=""  binding="wsHttpBinding"  contract="Samples.ICalculator" />
<endpoint address="/test"  binding="wsHttpBinding"
contract="Samples.ICalculator" />
<endpoint address="net.tcp://localhost:9000/service"
binding="netTcpBinding"
contract="Samples.ICalculator" />
</service>
</services>

下面举例讲解一下WCF服务的调用及简单配置:
首先创建WCF服务应用程序WcfServiceLibrary2
Iservice接口:

using System.Data;
using System.Data.SqlClient;

namespace WcfServiceLibrary2
{

    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
         DataTable getLinks();
        [OperationContract]
         void addEmps( link e);

    }

    [DataContract]
    public class link
    {
        private int id;
        [DataMember]
        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        private string site_path;
        [DataMember]
        public string Site_path
        {
            get { return site_path; }
            set { site_path = value; }
        }

        private string user_name;
        [DataMember]
        public string User_name
        {
            get { return user_name; }
            set { user_name = value; }
        }

        private string user_tel;
        [DataMember]
        public string User_tel
        {
            get { return user_tel; }
            set { user_tel = value; }
        }

    }
}

对应的实现:

using System.Data;
using System.Data.SqlClient;

namespace WcfServiceLibrary2
{
    // 注意: 如果更改此处的类名“IService1”,也必须更新 App.config 中对“IService1”的引用。
    public class Service1 : IService1
    {

        #region IService1 成员

        public System.Data.DataTable getLinks()
        {
            using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=123;database=GjjWebdb"))
            {
                string sql = " select * from dt_link";
                SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
                DataTable dt = new DataTable("员工表");
                sda.Fill(dt);
                return dt;
            }
        }

        public void addEmps(link e)
        {
            using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=123;database=GjjWebdb"))
            {

                string sql = "insert into dt_link value(@id,@User_name,@User_tel,@Site_path)";
                SqlCommand cmd = new SqlCommand(sql,conn);
                cmd.Parameters.AddWithValue("@id",e.Id);
                cmd.Parameters.AddWithValue("@User_name", e.User_name);
                cmd.Parameters.AddWithValue("@User_tel", e.User_tel);
                cmd.Parameters.AddWithValue("@Site_path", e.Site_path);
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
        }

        #endregion
    }
}

然后再创建web窗体应用程序WCFServer
1, 先添加引用System.serviceModel,和刚建立的WCF服务WcfServiceLibrary2
2, Form1窗体中添加两个按钮,分别表示服务的开启以及停止,并创建ServiceHost对象

   ServiceHost host = null;

        //开启
        private void button1_Click(object sender, EventArgs e)
        {
            host = new ServiceHost(typeof(WcfServiceLibrary2.Service1));
            host.Open();
            label1.Text = "服务已开启";
        }
        //停止
        private void button2_Click(object sender, EventArgs e)
        {
            if (host.State != CommunicationState.Closed)
            {
                host.Close();
                label1.Text = "服务已停止";
            }
        }

3, 添加应用程序配置文件App.config

<configuration>
  <system.serviceModel>
    <services>

      <service name="WcfServiceLibrary2.Service1" behaviorConfiguration="testBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:3333"/>
          </baseAddresses>
        </host>
        <endpoint address="" binding="wsHttpBinding" contract="WcfServiceLibrary2.IService1"></endpoint>

      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="testBehavior">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>

      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>
</configuration>

到此,服务即可启动以及停止,可以用浏览器打开http://localhost:3333查看;

版权声明:本文为博主原创文章,未经博主允许不得转载。

Host、EndPoints及配置服务(二)

服务的三要素(ABC) A:Address 意味着在哪里(也含有传输方式信息) B:Binding 意味着怎么做(与地址的传输方式要匹配) C:Contract意味着做什么(服务契约)配置文件:...
  • u012135077
  • u012135077
  • 2015年11月18日 09:17
  • 819

Host、EndPoints及配置服务(一)

服务的三要素(ABC) A:Address 意味着在哪里(也含有传输方式信息) B:Binding 意味着怎么做(与地址的传输方式要匹配) C:Contract意味着做什么(服务契约)配置文件:...
  • u012135077
  • u012135077
  • 2015年11月17日 17:27
  • 158

Webservice使用

Webservice使用介绍: http://blog.csdn.net/kardelpeng/article/details/6321019
  • u010890857
  • u010890857
  • 2016年05月17日 00:40
  • 395

etcd3安装和配置

etcd 是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。etcd 的灵感来自于 ZooKeeper 和 Doozer, 侧重于: 简单:支持 curl 方式的用户 AP...
  • mn960mn
  • mn960mn
  • 2016年08月24日 19:00
  • 4919

Kubernetes - Endpoint访问外部服务

k8s访问集群外独立的服务最好的方式是采用Endpoint方式,以mysql服务为例: 创建mysql-service.yaml apiVersion: v1 kind: Service metada...
  • u012804178
  • u012804178
  • 2017年05月11日 22:17
  • 2129

webService学习(三)—— 部署webService到tomcat上

webService学习(三)—— 部署webService到tomcat上 本文阅读前提: 1、能够部署本地的webService 2、能够编写客户端调用webService。(可以参考文章:htt...
  • wild46cat
  • wild46cat
  • 2017年01月16日 17:16
  • 7632

分分钟玩转 Web Services

文章转载自:http://www.58maisui.com/2016/09/09/372/ 当大型需求被数个公司分割开来,各公司系统相互交换数据的问题就会接踵而来。    毕竟是多家不...
  • Denghejing
  • Denghejing
  • 2016年09月09日 15:00
  • 443

Apache —— v-host配置

关于apache对V-host的配置是开发人员在开发过程中经常要使用到的,虽然配置的操作不是很困难,但是却十分重要。 注意:配置V-host前必须要打开apache的配置文件,将V-host模块打开...
  • baidu_38377749
  • baidu_38377749
  • 2017年08月03日 14:47
  • 378

rac监听状态为"Not All Endpoints Registered"

1,现象描述,应用反应不能正常 [grid@sdcmpdb1 ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.3.0 - Produc...
  • H18010484010
  • H18010484010
  • 2016年12月11日 21:58
  • 413

项目结尾公共模块WebService封装

在杭州出差一年有余,终于结束那个炼狱式的出差生活,心里一个High啊!虽然知道明年还要过去...       年末公司其他项目组看起来都是硕果累累啊,唯独我们项目组的兄弟都很萎,一是项目没有验收,另一...
  • liangyixin19800304
  • liangyixin19800304
  • 2013年10月16日 23:23
  • 729
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Host、EndPoints及配置服务(一)
举报原因:
原因补充:

(最多只允许输入30个字)