您的位置:首页 > 编程语言 > C#

《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表达式后会觉得有时候代码可以如此之简单!

接下来的时间要根据这次的马虎笔记,针对一些内容进行扩展。在完成论文之后,准备扩展书中的扑克牌例子,尝试仿造一下《炉石传说》。加油!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: