WCF操纵形式-单向操纵示例演示
另外,小型软件代码重用价值低,没有必要跨平台;大型软件,有严格的规划、部署,不可以随意跨平台。我们晓得web程序和服务器交互的典范形式就是一问一答,就是客户端向服务器发一个哀求,然后守候哀求的了局,客户端一向要比及吸收到了局,才会持续实行。假如某个哀求的盘算必要对照长的时分,我们的页面就会假逝世形态,直到完整吸收到了局。这个就是典范的”哀求/应对形式”。WCF中,默许情形下也是这类交互形式,但除”哀求/应对”这类典范形式外,另有”单工操纵”和”双工操纵”两种形式,上面我们就复杂地先容一下WCF中这三个形式中的”单工操纵”,再下一节演示”双工操纵”,由于我本人也是初学者,以是示例会对照的复杂,一为先容,二为本人多纯熟:
单向操纵
这类情形下,客户端不体贴服务器是否是实行哀求乐成,也不会往客户端回发动静。以是想要完成这类操纵的办法必需没有前往值,也就是前往值必需是void的办法,一样,服务器抛出的非常也不会传送到客户端。这类操纵的优点就是,客户端发送哀求后会即刻持续实行前面的代码,不会停留上去守候。
上面我们做一个复杂的示例来演示一下单向操纵:
先定一个左券:
publicinterfaceIOperate
{
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秒钟,这是由于典范的”哀求/应对”形式客户端必要守候服务器的了局才会实行上面的代码。
上面我们将左券修正以下:
publicinterfaceIOperate
{
voidMyMethod();
}
注重:IsOneWay=true就标识了体例MyMethod为单向操纵,不必要别的任何分外的代码就可以完成单向操纵了。示例中的别的代码都稳定化,如今看看单向操纵的效果。
仍是先运转服务,运转窗口以下,和是一样的,没有任何区分:
再运转客户端,运转窗口以下:
这下面的运转能够看到,客户端在挪用服务中MyMethod()办法后立即实行了前面的代码,并没有守候5秒,这个就是单向操纵的效果了。我以前很喜欢Serv-U,自从它用Java重写之后我就再也没用过,实在是太慢了,我宁可用IIS搭建FTP,虽然IIS搭建FTP在权限管理上很不灵活。 Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。 当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源 asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源 主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。 HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了. 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
页:
[1]