仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 688|回复: 8
打印 上一主题 下一主题

[学习教程] WCF操纵形式-单向操纵示例演示

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:19:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
另外,小型软件代码重用价值低,没有必要跨平台;大型软件,有严格的规划、部署,不可以随意跨平台。我们晓得web程序和服务器交互的典范形式就是一问一答,就是客户端向服务器发一个哀求,然后守候哀求的了局,客户端一向要比及吸收到了局,才会持续实行。假如某个哀求的盘算必要对照长的时分,我们的页面就会假逝世形态,直到完整吸收到了局。这个就是典范的”哀求/应对形式”。

WCF中,默许情形下也是这类交互形式,但除”哀求/应对”这类典范形式外,另有”单工操纵”和”双工操纵”两种形式,上面我们就复杂地先容一下WCF中这三个形式中的”单工操纵”,再下一节演示”双工操纵”,由于我本人也是初学者,以是示例会对照的复杂,一为先容,二为本人多纯熟:

单向操纵
这类情形下,客户端不体贴服务器是否是实行哀求乐成,也不会往客户端回发动静。以是想要完成这类操纵的办法必需没有前往值,也就是前往值必需是void的办法,一样,服务器抛出的非常也不会传送到客户端。这类操纵的优点就是,客户端发送哀求后会即刻持续实行前面的代码,不会停留上去守候。

上面我们做一个复杂的示例来演示一下单向操纵:
先定一个左券:
[ServiceContract]
publicinterfaceIOperate
{
[OperationContract]
voidMyMethod();
}

这个左券中办法MyMethod没有标识为单向操纵,那末它的交互形式就是”哀求/应对”形式。
上面界说服务,完成这个左券:
publicclassOperate:IOperate
{
publicvoidMyMethod()
{
Console.WriteLine("我被实行了,我要堵塞5秒钟!");
Thread.Sleep(5000);
}
}

服务中的MyMethod使线程挂起5秒。

然后是创立服务,为把持台程序:
classProgram
{
staticvoidMain(string[]args)
{
NetTcpBindingbinding=newNetTcpBinding();
using(ServiceHosthost=newServiceHost(typeof(Operate)))
{
host.AddServiceEndpoint(typeof(IOperate),binding,"net.tcp://localhost:8001");
host.Opened+=delegate
{
Console.WriteLine("wcf服务开启!");
};
host.Open();

Console.ReadLine();
}
}
}

接上面我们创立客户端(也是把持台程序)挪用这个服务,由于是演示,以是利用复杂的以编程的体例挪用该服务:
classProgram
{
staticvoidMain(string[]args)
{
NetTcpBindingbind=newNetTcpBinding();
EndpointAddressaddress=newEndpointAddress("net.tcp://localhost:8001");

ChannelFactory<wcfservice.IOperate>clientfac=newChannelFactory<wcfservice.IOperate>(bind,address);
clientfac.Open();
wcfservice.IOperateclientproxy=clientfac.CreateChannel();
Console.WriteLine("将要实行wcf服务:"+DateTime.Now);
clientproxy.MyMethod();
Console.WriteLine("wcf服务实行完了:"+DateTime.Now);
clientfac.Close();
Console.ReadLine();
}
}

接上去我们就是看看演示的效果了,先运转服务,运转窗口以下:



然后我们运转客户端,运转窗口以下:


从下面的运转了局看,客户端被堵塞了5秒钟,这是由于典范的”哀求/应对”形式客户端必要守候服务器的了局才会实行上面的代码。

上面我们将左券修正以下:
[ServiceContract]
publicinterfaceIOperate
{
[OperationContract(IsOneWay=true)]
voidMyMethod();
}

注重:IsOneWay=true就标识了体例MyMethod为单向操纵,不必要别的任何分外的代码就可以完成单向操纵了。示例中的别的代码都稳定化,如今看看单向操纵的效果。

仍是先运转服务,运转窗口以下,和是一样的,没有任何区分:



再运转客户端,运转窗口以下:



这下面的运转能够看到,客户端在挪用服务中MyMethod()办法后立即实行了前面的代码,并没有守候5秒,这个就是单向操纵的效果了。我以前很喜欢Serv-U,自从它用Java重写之后我就再也没用过,实在是太慢了,我宁可用IIS搭建FTP,虽然IIS搭建FTP在权限管理上很不灵活。
老尸 该用户已被删除
沙发
发表于 2015-1-18 12:53:06 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
分手快乐 该用户已被删除
板凳
发表于 2015-1-24 20:02:30 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
小魔女 该用户已被删除
地板
发表于 2015-2-2 13:39:55 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
变相怪杰 该用户已被删除
5#
发表于 2015-2-7 21:56:08 | 只看该作者
asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源
山那边是海 该用户已被删除
6#
发表于 2015-2-23 13:54:45 | 只看该作者
asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源
admin 该用户已被删除
7#
发表于 2015-3-7 09:29:15 | 只看该作者
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
莫相离 该用户已被删除
8#
发表于 2015-3-14 20:54:41 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
简单生活 该用户已被删除
9#
发表于 2015-3-21 15:35:56 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-11 08:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表