《C#入门经典v6》读书笔记5 WCF&WWF
2016-04-21 20:11
309 查看
第25章 Windows Communication Foundation
WPF(Windows Presentation Foundation,Windows呈现基础)WCF(Windows Communication Foundation,Windows通讯开发平台)
WWF(Windows Workflow Foundation,Windows工作流开发平台)
WSDL(Web Service Description Language,Web服务描述语言)
SSL(Secure Sockets Layer,安全套接层)
invoke 调用
contract 协定,合同
什么是WCF?
Web站点:联网网页,供人类浏览,如登录天气网站查看当日天气;
Web服务:联网的服务操作接口,供计算机(Web站点、其他应用程序)使用,如天气网站开放的查询接口可供其他程序调用(网站、手机软件等);
远程技术:可以在一个进程中创建对象实例,在(另外一个计算机的)另外一个进程中使用它
WCF:结合了Web服务+远程技术,是应用程序之间进行通信的通用基础结构,比Web服务强大,比远程技术更易于掌握。
WCF的一些概念
通信协议:描述用什么样的方式建立通信:HTTP、TCP、UDP、命名管道(Named Pipe)、MSMQ。
地址:服务的地址类型取决于使用的通信协议。
string HTTPaddress = @"http://127.0.0.1:8081/WeatherService"; string TCPaddress = @"net.tcp://127.0.0.1:8081/WeatherService"; string UDPaddress = @"soap.udp://127.0.0.1:8081/WeatherService"; string NamedPipeaddress = @"net.pipep://127.0.0.1/WeatherService";
绑定:指定服务的操作使用的传输协议,通信的安全要求、端点的事务处理和消息编码等。
协定:一组用于描述服务的具体规则,使用类、接口+特性进行定义:
协定 | 描述 | 特性 |
---|---|---|
服务协定 | 描述服务的整体信息 | System.ServiceModel.[ServiceContract] |
操作协定 | 描述操作方法的参数、返回类型等 | System.ServiceModel.[OperationContract] |
消息协定 | 描述通信消息的格式 | System.ServiceModel.[MessageContract] |
错误协定 | 描述捕获的异常信息 | System.ServiceModel.[FaultContract] |
数据协定 | 描述用户自定义的复杂数据类型 | System.Runtime.Serialization.[DataContract] |
行为:可以控制宿主进程如何实例化和使用行为,如是否保留客户端的状态等。
驻留:WCF服务可以存储在不同的进程中,包括Web服务器、可执行文件、Windows服务等。
自驻留:自驻留的WCF服务存在于创建它的进程中,需要使用System.ServiceModel.ServiceHost类,详见P770例子。
WCF编程:详见P753例子。
在独立的程序集中定义WCF服务协定,由宿主项目、客户项目分别引用。服务项目实现协定接口,客户项目调用协定接口。(服务的实现与协定分开效果极佳)
定义服务协定(接口)
//IService1.cs 文件 [ServiceContract] //服务协定 public interface IService1 { [OperationContract] //操作协定 string GetData(int value); [OperationContract] CompositeType GetDataUsingDataContract(CompositeType composite); } [DataContract] //数据协定(类型定义加上一个特性修饰) public class CompositeType { string stringValue = "Hello "; [DataMember] public string StringValue { get { return stringValue; } set { stringValue = value; } } }
实现服务协定
//Service1.svc 文件 public class Service1 : IService1 { public string GetData(int value) { //...实现 } public CompositeType GetDataUsingDataContract(CompositeType composite) { //...实现 } }
使用服务
//Program.cs 文件 IService1 client = ChannelFactory<IService1>.CreateChannel( new WSHttpBinding(), new EndpointAddress("http://localhost:21277/Service1.svc"));//地址与配置有关 string data = client.GetData(70);
第26章 Windows Workflow Foundation
WWF(Windows Workflow Foundation,Windows工作流开发平台)由于暂时没有用到WWF的地方,并不深入研究本章,主要了解下WWF是什么,有什么用。
WWF是什么?
用户注册工作流:“如果用户注册,需要检查用户名是否被占用,如果占用如何,如果没占用如何?用户注册以后需要发email去通知他激活,如果激活了怎么样,如果没激活又怎么样?”
以上内容可以用流程图表示,流程图画出来了,代码也就出来了,这就是WWF的目的。WWF是提供给程序员用的图形化编程语言,用活动表示模块化功能,通过组合活动(预定义活动或自定义活动)来建立工作流,进而生成代码。
WWF的意义有点类似.NET控件:
每个.NET控件(基础控件和用户控件)本身具有特定的功能,用户使用时只需要从工具箱拖拽后编写少量代码即可完成功能,如TextBox用于接收用户输入。
WWF用活动表示一个特定的编程功能,如IF活动代表了IF/ELSE编程语句,用户(主要是程序员)从工具箱拖拽IF活动,编写少量代码(条件等),即可完成IF/ELSE的编写。最终,通过组合活动,完成程序的代码编写。同样,WWF可以通过定制活动(类似于编写用户控件),实现特定的功能,然后模块化地使用活动。WWF使得编写程序可以如同拖拽控件进行界面设计般简单。
后记
至此,算是把《C#入门经典》一书马虎地看一遍了,不得不说系统地学习一样东西收获还是不少的,特别是泛型和LINQ,之前只要遇到这两个概念脑子就是一坨浆糊。学习了LINQ和Lambda表达式后会觉得有时候代码可以如此之简单!接下来的时间要根据这次的马虎笔记,针对一些内容进行扩展。在完成论文之后,准备扩展书中的扑克牌例子,尝试仿造一下《炉石传说》。加油!
相关文章推荐
- C# Substring 和 String.join 0010
- 进度条的使用
- 终于会用c#中的delegate(委托)和event(事件)了
- 【转载】继承(C#)
- C#控制台实现52张扑克牌的分法
- 4.20学习笔记c# OpenFileDialog
- C# 中引用类型 和值类型
- 【转载】C# Graphics类详解
- C# TextBox中的Validating与Validated事件
- C#接口的作用。
- C#多态的理解
- C#接口和类的区别
- C#中 类的成员
- C#集合
- C# 数组中的数组
- C#运算符 string
- C# 语句异常处理语句
- C#语句 运算符 表达式 字符串 编码
- C# 控制台下的常见函数&数据类型
- C#中用来统计你所写的代码总量的代码