首页 > 代码库 > WCF基础

WCF基础

 注意:通过控制台启动wcf服务,必须以管理员身份运行 vs,不然报错;

 
  新建 wcf服务库(有两个重要的组成部分 接口和实现这个接口的类)
【也可以新建一个类库,自己定义 接口和实现这个接口的类;接口需要  [ServiceContract]标签 接口中的方法需要  [OperationContract]标签 用到的数据对象类需要 [DataContract] 和 属性需要    [DataMember]标签】
独立把wcf作为一个服务库【类库】,好处是可以被不同的宿主引用使用;{vs内置了部署在iis上的快捷方式,创建wcf应用程序,之后部署iis即可,不过是确定了部署在iis上才这样写的;单独写开具有更强的灵活性}
 

寄宿在控制台

 
1.引用wcf服务库(类库)
2.新建控制台应用程序
在main函数写如下代码

           //MyService是你WCF服务库里面服务的名称
            ServiceHost selfHost = new ServiceHost(typeof(Service1));
            try
            {
                //打开 ServiceHost
                selfHost.Open();
                Console.WriteLine("success");
 
                Console.ReadKey();
                selfHost.Close();
            }
            catch (CommunicationException ce)
            {
                Console.WriteLine("Error : {0}", ce.Message);
                selfHost.Abort();
                Console.ReadKey();

            } 

3.在 控制台程序的 app.config中配置如下

 <!--【wcf寄宿在控制台的config配置开始】放在configuration节点的下一级-->

  <system.serviceModel>
    <services>
      <service name="WcfServiceLibrary1.Service1" behaviorConfiguration="MyBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8123/WcfServiceLibrary1/Service1" />
          </baseAddresses>
        </host>
        <endpoint address="MyService" binding="basicHttpBinding"
         contract="WcfServiceLibrary1.IService1"  />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyBehavior">
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
  <!--【wcf寄宿在控制台的config配置结束】-->

这样服务就创建成功,在需要引用这个服务的地方,引用--添加服务引用 如此例子 引用http://localhost:8123/WcfServiceLibrary1/Service1即可;
 
寄宿在winform

app配置和控制台完全一样,【配置再运行的项目的app.config上】

 
namespace OnWinform
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
 
        ServiceHost selfHost = null;
        private void button1_Click(object sender, EventArgs e)
        {
            if (selfHost != null)
            {
                selfHost.Close(); 
            }
            selfHost = new ServiceHost(typeof(WcfServiceLibrary.Service1)); 
            selfHost.Open();
            this.label1.Text="已经启动";
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            selfHost.Close();
            this.label1.Text = "已经关闭";
        }
    }
}

 
 寄宿在IIS


1、引用服务库(类库)
2、手动创建一个.svc的文件  (此文件被访问使用)
<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceLibrary.Service1"%>
 3、在要启动的web项目中,的config,右击--》wcf配置--》新建服务--》bin(没有可以重新生成)--》service1--》is而vice
--》。。。。httP://删了 。。。。 
4、在iis上部署这个web项目, ip:端口/ .svc即可访问到服务了 

 

---------------------------------------------------------------------------------------------

WCF基础