仓酷云

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

[学习教程] ASP网站制作之懂得MSMQ,把持ASP历程 (一)(转贴)...

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

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

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

x
ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊!历程|把持我们在利用ASP程序经常常会碰到这些情形:某个历程消费了太长的工夫而招致在客户端过时、会见者已保持了对你的网站的会见而分开往了其余网站、或你的服务器上堵塞了大批的逝世行列时,体系呈现"Serveristoobusy"毛病信息。

  当你在计划网站的过程当中碰着这些成绩时,一个无效的办理举措就是利用MicrosoftMessageQueue(MSMQ)来停止这些历程,让网站恢复一般!

  究竟MSMQ是个甚么样的器材呢?我们上面作一下懂得:

  1、MicrosoftMessageQueue的基础先容:

  MSMQ(代号又叫"Falcon")是运转在WindowsNT的服务,它供应使用程序之间的异步通信。你能够在NT4OptionPack中找到它。MSMQ的基础观点十分的复杂:它能够被当作是使用程序之间的email:一个动静被打包到一个特定范例的容器中,并把这个动静保留到一个用与出格感化的行列中直到收信者承受该动静为止。这些行列可以确保MSMQ的传送,而不论以后收集毗连的情况怎样。

  象一切的电子邮件一样,MSMQ动静有一个发送者和一个吸收者,个中的吸收者应当可以会见行列。一个单一行列中的一个独自动静,它具有多个承受者比方respinder。而动静的发送者一般是WebServer(IIS)。

  MSMQ也可以和其他动静体系举行通信。比方:SunSolaris,HP-UNIX,OS/2,VMS,AS/400平台。像其他的BackOffice服务一样,MSMQ有一个COMAPI(mqoa.dll)供应给开辟者开辟程序。个中最经常使用的三个类为:MSMQQueueInfo,MSMQQueue,MSMQMessage。

  (1)、MSQMQueueInfo

  MSMQQueueInfo同意你新建,翻开,删除行列中的动静.要和行列创建接洽起首必要设置PathName,这是一个定名行列的属性,它告知MSQM是哪台呆板上的行列。
<%
DimobjQueueInfo
DimobjQueue
SetobjQueueInfo=Server.CreateObject("MSMQ.MSMQQueueInfo")
objQueue.PathName=".MyQu"
SetobjQueue=objQueueInfo.Open(MQ_SEND_ACCESS,MQ_DENY_NONE)
%>


  下面的代码翻开一个叫MyQueue的当地行列。假如行列在别的一台服务器上,代码应当是如许的:

  objQueue.PathName="SomeOtherComputerMyQu"

  翻开行列中有两个参数:Access和ShareMode。Access暗示将要对行列实行甚么操纵。一样平常有三个操纵:

  MQ_PEEK_ACCESS(32),MQ_RECEIVE_ACCESS(1),MQ_SEND_ACCESS(2)。

  MQ_PEEK_ACCESS用来在特定的行列中查找动静。但对该动静不举行操纵。

  MQ_RECEIVE_ACCESS用来在读取行列中的动静后删除它。

  MQ_SEND_ACCESS用来在行列中发送动静,但不吸收动静。

  必要注重的是在利用翻开操纵后前往了一个MSMQQueue工具。上面是一个典范的新建和删除操纵例子:
<%
DimobjQueue
SetobjQueue=Server.CreateObject("MSMQ.MSMQQueueInfo")
objQueue.PathName=".MyQu"
objQueue.Create
%>

<%
DimobjQueue
SetobjQueue=Server.CreateObject("MSMQ.MSMQQueueInfo")
objQueue.PathName=".MyQu"
objQueue.Delete
%>


  (2)、MSMQQueue

  MSMQQueue类用来形貌一个在MSMQ服务中翻开的行列。该类供应了一个用来在指针行列中的动静举行轮回的功效。你不克不及够翻开一个利用了MSMQQueue类的行列要这么干只可以利用MSQMQueueInfo(见上例),固然很多ASP使用程序一般利用MSMQ来发动静,可是良多时分也必要ASP来显现这个动静的详细内容。

  猎取动静的体例有两种:同步体例,异步体例,可是ASP只可以利用同步体例。这是由于ASP不克不及够在服务端声名一个WithEvents变量。

  上面先举一个异步体例利用MSMQ的例子(仅VB中)
OptionExplicit
Dimm_objQueueInfoAsNewMSMQQueueInfo
Dimm_objQueueAsMSMQQueue
DimWithEventsm_objMSMQEventAsMSMQEvent

PrivateSubForm_Load()
m_objQueueInfo.PathName=".MyQu"
m_objQueueInfo.Label="MySampleQueue"
OnErrorResumeNext
m_objQueueInfo.Create
OnErrorGoTo0
Setm_objQueue=m_objQueueInfo.Open(MQ_RECEIVE_ACCESS,MQ_DENY_NONE)

Setm_objMSMQEvent=NewMSMQEvent
m_objQueue.EnableNotificationm_objMSMQEvent,MQMSG_CURRENT,1000
EndSub

PrivateSubm_objMSMQEvent_Arrived(ByValQueueAsObject,ByValCursorAsLong)
Dimm_objMessageAsMSMQMessage
Setm_objMessage=Queue.PeekCurrent
MsgBox"MessageReceived:"&m_objMessage.Label
m_objQueue.EnableNotificationm_objMSMQEvent,MQMSG_NEXT,10000
EndSub

PrivateSubm_objMSMQEvent_ArrivedError(ByValQueueAsObject,ByValErrorCodeAsLong,ByValCursorAsLong)
MsgBox"Erroraccorded:"&ErrorCode
EndSub


  这段代码起首创建一个行列(假如它还不存在的话)。然后m_objMSMQEvent工具经由过程挪用EnableNotification毗连到MSMQQueue工具。一旦毗连到MSMQEvent工具,接上去需做的仅仅是完成Arrived和Arrived_Error(可选的)事务。Arrived事务当一个新的动静抵达行列时将被触发该事务前往两个指针,一个是指向行列中应当历来入手下手读动静的地位,别的一个是以后的地位。假如产生毛病,将触发ArrivedError事务当同步猎取动静时,会一向比及动静可猎取或则超不时程序才会不被挂起。代码以下:
PublicSubDisplayMessages()
DimobjQueueInfoAsNewMSMQQueueInfo
DimobjQueueAsMSMQQueue
DimobjMessageAsMSMQMessage
objQueueInfo.PathName=".MyQu"
objQueueInfo.Label="MySampleQueue"

OnErrorResumeNext
objQueueInfo.Create
OnErrorGoTo0
SetobjQueue=objQueueInfo.Open(MQ_RECEIVE_ACCESS,MQ_DENY_NONE)
DoWhileTrue
SetobjMessage=objQueue.Peek(,,1000)
IfobjMessageIsNothingThenExitDo
MsgBox"Message:"&objMessage.Label
Loop
MsgBox"Nomorenewmessages."
objQueue.Close
SetobjMessage=Nothing
SetobjQueue=Nothing
SetobjQueueInfo=Nothing
EndSub



  (3)、MSMQMessage

  MSMQMessage类撑持行列中动静的一切属性。MSMQ动静有两个办法和单一的属性。</p>ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。
山那边是海 该用户已被删除
沙发
发表于 2015-1-20 08:59:19 | 只看该作者
掌握asp的特性而且一定要知道为什么。
活着的死人 该用户已被删除
板凳
发表于 2015-1-29 06:19:46 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
地板
发表于 2015-2-5 23:07:17 | 只看该作者
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
蒙在股里 该用户已被删除
5#
发表于 2015-2-14 03:02:42 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
兰色精灵 该用户已被删除
6#
 楼主| 发表于 2015-3-4 04:17:43 | 只看该作者
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-11 16:30:59 | 只看该作者
不能只是将它停留在纸上谈兵的程度上。
再现理想 该用户已被删除
8#
发表于 2015-3-19 02:13:47 | 只看该作者
ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
因胸联盟 该用户已被删除
9#
发表于 2015-3-27 04:10:34 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 05:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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