WCF学习(二):服务契约

一、服务契约介绍

我个人理解服务契约是一组公开的操作,其中公开的操作(OperationContract)只能定义在方法(Method)上。对于我们要公开的服务我们可以在接口或者类上加上标识ServiceContract。但是我们一般情况下,会把ServiceContract定义在接口上而不是类上,这样有几个好处:

1.方便契约的继承,不同的类型可以去实现相同的契约,重用性高。

2.同一服务可以去实现多个契约。

3.可以随时去修改服务类型,而不需去修改接口。

下面定义一个服务的契约:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
  
namespace Service
{
  [ServiceContract(Name="Service_Calucator",Namespace="Henllyee")]
  public interface ICalucator
  {
    [OperationContract]
    int Add(int x, int y);
  
  }
}

我们在上面首先定义了一个接口名称为:ICalucator,然后我们要将这个接口公开为服务契约在上面加上属性标识[ServiceContract],其中Name可以为契约指定别名,这样的话,如果我们在客户端遇到相同的接口时可以通过Name来制定别名区别开来。公开的操作为Add方法,在上面标识[OperationContract]即可。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索接口
, 服务
, using
, system
标识
,以便于您获取更多的相关知识。

时间: 2024-08-02 05:27:26

WCF学习(二):服务契约的相关文章

WCF分布式开发步步为赢(6):WCF服务契约继承与分解设计

上一节我们学习了WCF分布式开发步步为赢(5)服务契约与操作重载部分.今天我们来继续学习WCF服务契约继承和服务分解设计相关的知识点.WCF服务契约继承有何优势和缺点?实际项目里契约设计有什么原则和依据?面向对象的设计经验有何值得借鉴的地方?这里我们会一一给出详细的介绍.本文首先介绍的是WCF服务中契约继承的一些概念.例子代码分析,其次来讲解服务契约的设计问题.首先介绍的也是进行服务设计的必要性,服务设计的原则,示例代码分析.最后是全文的总结部分.结构如下:[1]OO面向对象设计原则,[2]服务

WCF分布式开发步步为赢(5)服务契约与操作重载

继上一节WCF分布式开发步步为赢(4):WCF服务可靠性传输配置与编程开发,本节我们继续学习WCF分布式开发步步为赢的第(5)节:服务契约与操作重载.这里我们首先讲解OOP面向对象的编程中方法重载,重载的意义,WCF服务编程开发如何实现操作重载,随后是代码分析部分,给出了服务端服务契约定义和实现操作重载的注意的问题和实现过程,然后详细介绍了客户端实现操作重载的方式.最后是本文的总结部分.本节的结构是:[1]重载概念[2]操作重载[3]代码实现分析[4]运行结果[5]总结 [1]重载概念: [1.

WCF分布式开发步步为赢系列的(6):WCF服务契约继承与分解设计

上一节我们学习了WCF分布式开发步步为赢(5)服务契约与操作重载部分.今天我们来继续学习WCF服务契约继承和服务分解设计相关的知识点.WCF服务契约继承有何优势和缺点?实际项目里契约设计有什么原则和依据?面向对象的设计经验有何值得借鉴的地方?这里我们会一一给出详细的介绍.本文首先介绍的是WCF服务中契约继承的一些概念.例子代码分析,其次来讲解服务契约的设计问题.首先介绍的也是进行服务设计的必要性,服务设计的原则,示例代码分析.最后是全文的总结部分.结构如下:[1]OO面向对象设计原则,[2]服务

WCF服务编程设计规范(3):服务契约、数据契约和实例管理设计规范

WCF服务编程设计规范(3):服务契约.数据契约和实例管理设计规范.本节涵盖服务契约和数据契约设计规范,以及服务实例管理内容.中英对照版本,欢迎留言交流. Service Contracts 服务契约 1.Always apply the ServiceContract attribute on an interface, not a class: 把ServiceContract属性标记到契约接口上,而不是服务类上 //Avoid:避免 [ServiceContract] class MySe

WCF学习(五):数据契约之已知类型

准备技术: 1.C#基础知识 2.了解WCF基础知识 在正常的c#开发中我们是允许用子类去替换基类的,这也是所谓的替换原则.但是我们在WCF中确不能用数据契约的子类来替换父类的,因为这中间存在一个序列化的问题.举个例子: 我们有数据契约: [DataContract] class Employee{...} 服务契约中: [ServiceContract] interface IEmployeeManager { [OperationContract] void AddEmployee(Empl

WCF学习(四):数据契约的事件

技术准备: 1.dotnet基本开发: 2.WCF的数据契约跟服务契约的基本使用 内容: 我们都知道数据契约其实也是服务器端到客户端序列化跟反序列化,这样的序列化跟asp.net ajax访问webservice是很像的.asp.net ajax 一般是将服务器端的数据序列化成jason字符串传递给前台脚本的但是我们在序列化或则反序列化的时候也许会要去控制一些数据契约里面的Filed或则Attributes,这就需要我们去监听数据契约在序列化及反序列化时触发的一些事件. 数据契约的事件 数据契约

WCF多服务契约接口的实现

问题描述 这是我的服务实现类publicclassService:IService,IService2那两个接口都标明了是服务契约,并且里面都有操作契约,怎么实现在客户端只用一个代理类就可以调用那两个接口里面的操作服务?请各位帮帮忙,越详细越好. 解决方案 解决方案二:publicclassService:IService,IService2因为你只给用户提供了一个访问类啊.解决方案三:publicinterfaceIMyService:IService,IService2publicclass

[WCF安全系列]服务凭证(Service Credential)与服务身份(Service Identity)

在采用TLS/SSL实现Transport安全的情况下,客户端对服务证书实施认证.但是在默认情况下,这种认证仅仅是确保服务证书的合法性(通过数字签名确保证书确实是由申明的CA颁发)和可信任性(证书或者CA证书存储于相应的可信赖存储区).而WCF提供服务证书并不限于此,客户端对服务认证的模式应该是这样的:服务端预先知道了服务的身份,在进行服务调用之前,服务端需要提供相应的凭证用以辅助客户端确认调用的服务具有预先确定的身份.对于这样的服务认证模式,具有两个重要的概念,即服务凭证和服务身份. 目录:

WCF宿主与服务托管

若要公开WCF服务,需要提供一个运行服务的宿主环境.就像.NET CLR需要创建宿主环境以托管代码一般,WCF的宿主环境同样运行在进程的应用程序域中.在应用程序域中可以创建一个或多个ServiceHost实例,其关系如图一所示: 图一 托管ServiceHost WCF并不推荐在应用程序域中创建多个ServiceHost实例.如果要托管多个服务,完全可以在一个宿主中通过多个Endpoint公开多个WCF服务.由于应用程序域对安全进行了隔离,如果需要提供不同的安全上下文,则有必要创建多个Servi