WCF学习笔记 -- 如何用C#开发一个WebService

假设所有工程的命名空间是demo。

    1. 新建一个C#的ClassLibrary(类库)工程。
    2. 在工程引用中加入System.ServiceModel引用。
    3. 定义接口,你可以删除自动生成的代码,或者直接修改代码来添加接口。
[ServiceContract]

Interface IMath {

[Operationcontract]

            Int add (int a, int b);

}
    1. 实现接口

添加一个新类,如Math实现该接口。

Public class Math : IMath{

            Int add(int a,int b){

                        Return (a+b);

}

}
    1. 编写寄宿应用程序,新建一个控制台或者Winform程序。添加对System.ServiceModel和System.ServiceModel.Channels的引用。

      1. 通过代码绑定。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ServiceModel;

using System.ServiceModel.Channels;

namespace HelloServiceHost

{

class Program

{

static void Main(string[] args)

{

using (MyHelloHost host = new MyHelloHost())

{

host.openService();

}

}

}

public class MyHelloHost : IDisposable

{

private ServiceHost serviceHost = null;

/// <summary>

/// base address

/// </summary>

//public const string baseAddress = "net.pipe://localhost";

public const string baseAddress = "http://localhost";

/// <summary>

/// 服务名称

/// </summary>

public const string serviceAddress = "MathService";

/// <summary>

/// 实现服务的契约

/// </summary>

public static readonly Type serviceType=typeof(demo.Math);

/// <summary>

/// 接口契约

/// </summary>

public static readonly Type contractType = typeof(HelloService.IHelloService);

/// <summary>

/// 定义一个服务绑定

/// </summary>

//public static readonly Binding helloBinding = new NetNamedPipeBinding();

public static readonly Binding helloBinding = new BasicHttpBinding();

/// <summary>

/// 构造服务宿主

/// </summary>

private void createHelloServiceHost()

{

///创建服务对象

serviceHost = new ServiceHost(serviceType,new Uri[]{new Uri(baseAddress)});

///添加一个终结点

serviceHost.AddServiceEndpoint(contractType, helloBinding, serviceAddress);

}

public ServiceHost ServiceHost

{

get { return serviceHost; }

}

/// <summary>

/// 打开服务

/// </summary>

public void openService()

{

Console.WriteLine("Service is starting...");

serviceHost.Open();

Console.WriteLine("Service running...");

}

public MyHelloHost()

{

createHelloServiceHost();

}

public void Dispose()

{

if (null != serviceHost)

{

(serviceHost as IDisposable).Dispose();

}

}

}

}

                    1. 通过配置文件绑定。如果是控制台程序,请添加App.config文件,并修改如下,如果是Winform直接修改App.config文件。

1a)  修改App.Config

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

<configuration>

<system.serviceModel>

<services>

<service name="demo.Math" behaviorConfiguration="TestBehavior">

<host>

<baseAddresses>

<add baseAddress="http://localhost:8001/MathService"/>

</baseAddresses>

</host>

<endpoint address="" binding="basicHttpBinding" contract="demo.IHello" />

</service>

</services>

<behaviors>

<serviceBehaviors>

<behavior name="TestBehavior">

<serviceMetadata httpGetEnabled="true"/>

</behavior>

</serviceBehaviors>

</behaviors>

</system.serviceModel>

</configuration>

1b)  修改代码如下

class Program

{

static void Main(string[] args)

{

ServiceHost host = new ServiceHost(typeof(demo.Math));

host.Open();

Console.ReadKey();

}

}

WCF学习笔记 -- 如何用C#开发一个WebService

时间: 2024-08-06 20:02:55

WCF学习笔记 -- 如何用C#开发一个WebService的相关文章

WCF学习笔记(一)

WCF是什么? 官方解释: Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架.借助 WCF,可以将数据作为异步消息从一个服务终结点发送至另一个服务终结点. 服务终结点可以是由 IIS 承载的持续可用的服务的一部分,也可以是应用程序中承载的服务.终结点可以是从服务终结点请求数据的服务客户端.简单消息可以是作为 XML 发送的单个字符或单个单词,复杂消息可以是二进制数据流. 网络收集: Windows通信基础(Windows Commu

Android:日常学习笔记(8)———探究UI开发(5)

Android:日常学习笔记(8)---探究UI开发(5) ListView控件的使用 ListView的简单用法 public class MainActivity extends AppCompatActivity { private String[] data={"Apple","Banana","Orange","Watermelon","Pear","Grape","

cocos2dx游戏开发——微信打飞机学习笔记(一)——开发准备

一.环境的搭建 1.Windows开发准备: (1)软件下载及安装 •下载Cocos2d-x 最新版本:http://www.cocos2d-x.org/download 或者从Cocos2d-x GitHub主页中克隆Develop分支:https://github.com/cocos2d/cocos2d-x •配置Python 2.7 环境:http://www.python.org/download/releases/ •建议IDE:Visual Studio 2013 •运行cocos2

wcf 学习笔记1

1. wcf 中的所有消息均为SOAP消息,注意WCF的消息与传输协议无关,与WEB服务不同,因此WCF服务可以在不同的协议之间传输,而不仅限于HTTP 2. wcf的每一个服务都有一个唯一的地址,地址包含两个元素:服务位置和传输协议:服务位置包括机器名,站点,通讯端口,管道或队列,以及一个可选的特定路径或URI统一资源标识 3. wcf 通讯协议有:http ,tcp , peer network , ipc , msmq ,使用命名管道的服务只能接收来自同一台机器的调用,每台机器只能打开一个

Android:日常学习笔记(7)———探究UI开发(1)

Android:日常学习笔记(7)---探究UI开发(1) 常用控件的使用方法 TextView 说明:TextView是安卓中最为简单的一个控件,常用来在界面上显示一段文本信息. 代码: <TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:text=&qu

wcf 学习笔记2

服务契约 我们知道,serviceContrac特性能够将接口或者类公开为面向服务的契约,允许开发者使用c#语言编程,把类似接口这样的语法结构公开为WCF契约和服务. 操作重载,基于WSDL的操作不支持操作重载,但是,我们可以手动的启动操作重载,使用operationContract特性的name属性,为操作指定别名,如下: [ServiceContract] interface ICalculator { [OperationContract(Name="AddInt")] int

Android:日常学习笔记(7)———探究UI开发(4)

Android:日常学习笔记(7)---探究UI开发(4) UI概述  View 和 ViewGrou Android 应用中的所有用户界面元素都是使用 View 和 ViewGroup 对象构建而成.View 对象用于在屏幕上绘制可供用户交互的内容.ViewGroup 对象用于储存其他 View(和 ViewGroup)对象,以便定义界面的布局. 说明: View是安卓中最基本的一种UI,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件,我们使用的各种控件都是在View的基础上进行的

springmvc学习笔记(11)-springmvc注解开发之简单参数绑定

springmvc学习笔记(11)-springmvc注解开发之简单参数绑定 springmvc学习笔记11-springmvc注解开发之简单参数绑定 spring参数绑定过程 默认支持的类型 简单类型 pojo绑定 自定义参数绑定实现日期类型绑定 springmvc和struts2的区别 本文主要介绍注解开发的简单参数绑定,包括简单类型.简单pojo以及自定义绑定实现类型转换 spring参数绑定过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到contro

VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式

原文:VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式 Excel包含很多公式,如数学.日期.文本.逻辑等公式,非常方便,可以灵活快捷的对数据进行处理,达到我们想要的效果.Excel的内置公式虽然强大,但是在ERP等系统中,往往需要进行很多业务上的计算,如收发存台账.指定年.月.部门的消耗查询等,都是需要从数据库中查询的,且和业务紧密相连.这时仅仅依靠Excel的内置公式就不够了,需要添加自定义的公式来进行这些业务计算. 测试代码下载 本系列所有测试代码均在Visual St