深爱那片海 发表于 2015-1-18 11:17:53

ASP.NET网站制作之Windows WorkFlow Foundation进门(二)仓酷云

简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而net网页编程是公开了。2、利用WF开辟先容
WF同意我们用.netframework来开辟本人的事情流程序,它并非一个可实行程序,但它使得我们能开辟本人的事情流使用程序。
传统的通用编程言语努力于开辟短性命期的程序,它们缺少对程序运转的延续性和安定性的内涵的撑持。WF是一个框架,不是一门言语。它对事情流编程有着深切的了解,从而能很好的处置诸于persistenceandcompensation如许的事情。
WF是天真的,可扩大的。你能够间接经由过程代码或markup(?)来编写事情流,可以使用二者组合。你能够经由过程界说可重用的举动来,来完成自界说的事情流形式。
WF撑持模子驱动的事情流开辟,它撑持天然的可视化计划,同时埋没了一些体系级的观点,如事件、形态办理和并发把持。
开辟事情流程序有两件基础的事变,一是界说事情流和它的举动,再就是在程序利用这些事情流。
(一)事情流程形式
WF撑持多种事情流程式,如按次事情流,和数据驱动。按次形式是一向向前实行,它在反复和、可预感的操纵(这些操纵一般不异)中十分有效。形态机形式由一系列事务驱动的形态构成,数据驱动形式依附于数据来决意某个举动是不是实行。
按次事情流
按次形式是一向向前实行,它在反复和、可预感的操纵(这些操纵一般不异)中十分有效,比方,一系列的举动以划定的、一般不异的按次来运转。拜见下图。



按次事情流以按按次实行的体例来实行举动,直到最初一个举动实行完成。按次事情流纷歧定是完整断定的,即便在非一般操纵中。比方,你可使用一个“监听”举动或一个“并发”举动,事务的详细按次在分歧的情形下能够分歧。

形态机事情流
在形态机模子中,事情流就是一个形态机,它由一系列的形态构成。个中一个形态唆使了入手下手形态,每一个形态都能够吸收一系列的事务。基于一件,事情流从一个形态迁徙到另外一个形态。形态机事情流能够有一个闭幕形态,当迁徙到闭幕形态时,事情流就完成了。
上面这幅图是一个形态机事情流的例子。


上面这张表列出了在WF框架的举动汇合中与形态机相干的举动
举动申明EventDrivenActivity用于依附于内部事务才干入手下手实行的形态。EventDrivenActivity必需有一个Activity完成在了IEventActivity接口,作为其第一个子举动。SetStateActivity用于迁徙到一个新形态。StateActivity代表形态机中的一个形态,能够包括附加的“形态”举动StateInitializationActivity当进一个形态时实行,能够包括别的举动。StateFinalizationActivity当分开一个StateActivity时会实行它所包括的举动。
利用举动来把持流程
WF框架包括分歧功效的举动,我们能够这些举动来把持事情流的逻辑流程。
上面这张表列出了在WF框架的举动汇合顶用来把持事情流逻辑流程的举动。
举动申明ListenActivity能够依据一些事务或超时操纵来发生分支。IfElseActivity在每一个分支上测试统一个前提,而且实行第一个前往True的分支上的举动。ParallelActivity可使事情流同时实行两个以上互不相干的操纵。SuspendActivity挂起一个操纵,能够发生毛病用来干涉流程。TerminateActivity当毛病产生时,能够用来当即停止事情流中的一个操纵。WhileActivity轮回实行一个操纵,实行指定的前提失掉满意。ConditionedActivityGroup也被称为CAG。当设定到CAG的前提满意时,会实行CAG包括的子举动。子活的实行也必需满意该子举动设定的前提。EventDrivenActivity它是一个包括另外一个举动的举动,在指定的事务产生时实行。

在事情流中利用前提
我们能够经由过程前提来把持事情流的形态。运转时引擎会主动辨别一个前提,并依据辨别的了局来实行某一些操纵。
有两种体例来表达事情流中的前提:
一是代码体例,编写一个Handler前往Bool值;(注:以下译作代码前提)
二是经由过程事情流界说中的划定规矩(rule)。(注:以下译作划定规矩前提)
我们能够在运转的时分静态的更新划定规矩前提来改动事情流的举动。
我们还可使用PolicyActivity,经由过程划定规矩来完成有前提的举动。
前提举动
WF供应了多个利用前提的举动:


[*]IfElseActivity分支:基于对前提了局的辨别。
[*]WhileActivity:只需前提坚持为True,就会延续的实行它包括的一切举动。前提的值会在每次轮回实行时从头举行辨别。
[*]ConditionedActivityGroup:延续的实行它包括的一切举动直到其前提为真,它包括的每一个举动都有一个When前提,只要当When前提为真时,举动才会实行。
你能够在你创立的事情流中自界说前提。
注重:划定规矩前提能够援用public成员(即在你的事情流类中界说的变量或办法),而代码前提能够援用public或private成员。
利用划定规矩前提
划定规矩前提在前提表达式编纂器中界说,依据事情流形态和数据来断定前提的值。运转时引擎会辨别这个前提,从而决意要不要让与之相联的举动实行或使之可用。
划定规矩前提十分有效,由于你在运转的时分能够修正它们,这意味着你能够不必中断、修正或编译你的事情流就能够改动它的举动。
可使用上面的要从来构建划定规矩前提:


[*]逻辑操纵符,如AND,,OR,NOT
[*]算术操纵符,如+,-,*,/
[*]事情流中的public成员,直接地利用别的程序会合的成员
对包括庞大范例的变量的嵌套挪用,这类变量如:this.Address.State=="WA"
注重:if关头字会被主动增加到前提语句的后面,但它不会显现在这个语句中。

静态更新划定规矩前提
有理由相信是能提供更出色的性能。很多平台无法支持复杂的编译器,因此需要二次编译来减少本地编译器的复杂度。当然可能做不到net网页编程编译器那么简易。

飘飘悠悠 发表于 2015-1-19 09:20:22

平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。

第二个灵魂 发表于 2015-1-20 11:44:27

通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。

灵魂腐蚀 发表于 2015-2-5 22:26:56

ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。

海妖 发表于 2015-2-8 19:46:28

ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。

活着的死人 发表于 2015-2-25 23:42:16

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

再见西城 发表于 2015-3-1 02:24:06

ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。

深爱那片海 发表于 2015-3-1 10:37:44

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

冷月葬花魂 发表于 2015-3-9 10:22:17

比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。

分手快乐 发表于 2015-3-10 21:23:07

ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。

金色的骷髅 发表于 2015-3-13 04:40:57

我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。

变相怪杰 发表于 2015-3-20 12:55:02

有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
页: [1]
查看完整版本: ASP.NET网站制作之Windows WorkFlow Foundation进门(二)仓酷云