SharePoint 中关于event receivers的讨论

  今天一早,跟几个小伙伴在群里讨论了有关事件触发器的东西,感觉收获颇多,拿出来和大家分享。讨论的内容,主要就是关于事件触发器的同步/异步的设置以及作用。

  其实接触SharePoint颇久,对于事件触发器写的不多,但是同步/异步这个概念还是了解的,不过没有深究罢了。今天,和大家讨论了一下,也更加深刻的理解了这个概念;当然,有人说异步是单开一个线程操作,这个我不了解,但是不反对,因为无论如何,不是执行完毕操作立即执行事件,这就是异步了,我们不讨论内部机制是如何开辟线程,或者组织异步队列的。

  SharePoint中事件触发器,关于before事件(就是ing标志的事件),默认都是同步的,我理解就是完成一个操作之前,马上执行这个事件;而after的事件(就是ed标志的事件),默认都是异步的,也就是完成一个操作,不是立刻马上执行事件。至于为什么ed结尾的事件都是异步的呢?因为SharePoint为了方式UI上的操作和触发的事件冲突,所以把它设置为异步,至于内部如何处理异步,我觉得没必要太抠细节了。

  关于before事件,就是完成操作之前触发,这个只能是同步,SharePoint不允许定义为异步;而after事件呢?就是完成操作之后触发,默认异步,但是可以设置为同步,但是设置为同步以后,就不能再更新属性了,防止和UI操作的冲突。

  举个简单的例子,上传一个文档,然后都OK了弹出了上传以后的标题,然后UI会弹出修改属性的页面,这时,时间触发器同步修改了标题,但是却没有被属性页面加载出来,所以这时修改属性,会造成保存上的冲突。当然,有人说执行完事件以后,再弹出UI修改属性的页面,这样如果事件需要时间,就会造成效率上的问题。

  当然例子比较简单,就是给大家理解加一个参考罢了。也许自己的理解并不够深刻,希望有独特见解的,大家能够留言讨论。

  简单介绍下,after事件如何设置同步,在属性的xml文件里,设置即可,如下:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers ListUrl="ListName">
<Receiver>
<Name>EventReceiver1ItemAdded</Name>
<Type>ItemAdded</Type>
<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
<Class>EventReceiverProject1.EventReceiver1.EventReceiver1</Class>
<SequenceNumber>1000</SequenceNumber>
<Synchronization>Synchronous</Synchronization>
</Receiver>
</Receivers>
</Elements>

  最后,感谢SharePoint技术联盟的几个好伙伴,忘忧草、四毛和Berkaroad,我相信有讨论取长补短,大家才会有进步。

参考资料

  http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.speventreceiverdefinition.synchronization(v=office.15).aspx

SharePoint 中关于event receivers的讨论

时间: 2024-10-12 19:07:53

SharePoint 中关于event receivers的讨论的相关文章

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 介绍远程Event Receivers

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers  介绍远程Event Receivers 传统上,SP中的Event Receivers已经在业务解决方案中被用于广泛的目的,从发送邮件到创建通知,到数据验证到取消当前用户操作和重定向到其他操作.

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 远程Event Receivers App级别生命周期

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers  远程Event Receivers App级别生命周期 微软在新的云App模型中对Apps生命周期的管理投入了大量的投资.

BEGINNING SHAREPOINT&amp;#174; 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 本章中,你讲学到: 了解远程evernt receivers(RERs). 理解怎样给不同验证方法配置远程event receivers: 介绍App级别的远程event receivers. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 本章中,你讲学到: 了解远程evernt receivers(RERs): 理解如何给不同验证方法配置远程event receivers: 介绍App级别的远程event receivers.

BEGINNING SHAREPOINT&amp;#174; 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 远程Event Receivers App级别生命周期

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers  远程Event Receivers App级别生命周期 微软在新的云App模型中对Apps生命周期的管理投入了大量的投资. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 远程Event Receivers App级别生命周期

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 总结

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers  总结 本章节向你介绍了SP平台上event receivers的发展演进:远程event receivers.

BEGINNING SHAREPOINT&amp;#174; 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 总结

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers  总结 本章节向你介绍了SP平台上event receivers的发展演进:远程event receivers. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 总结

SharePoint中开发自定义Timer Job

 SharePoint中开发自定义Timer Job 1. Timer Job简介 在SharePoint中有一个服务SharePoint timer service(owstimer.exe),这个服务用来进行异步处理一些SharePoint的数据,创建web application等等,为了缓解站点w3wp.exe的压力,而且Timer 服务可以说是占据了SharePoint的半边天,没有他那么SharePoint将不能正常工作 2. Timer Job 作用 很多时候我们需要定期自动去处理

使用Visual Studio给SharePoint列表添加Event Receiver

使用Visual Studio给SharePoint列表添加Event Receiver 1. 管理员身份打开VS,新建事件接收器AnnouncementListEvent,点击确定. 2. 部署为场解决方案,点击下一步,选择列表项事件,通知,正在添加项. 3. 添加using. using System.IO; using System.Text; 4. 完整代码: 5. 部署解决方案. 6. 新建通知列表的项目. 8. 查看对应位置的记事本: 9. 上面代码还附加了与Log列表交互的语句,此