04 2011 档案
通过拦截WCF消息进行身份栈传播
摘要:通过上一篇我们已经可以拦截WCF消息,现在我们可以利用该功能实现操作用户身份信息的传播。实现思路为:1、客户端调用WCF服务时拦截客户端消息,在消息头中附加操作者的身份信息;2、服务端收到消息后,从消息头中取出身份信息。其中用户身份可以保存在应用程序域的Iprincipal中,如下所示: AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); IIdentity identity = new GenericIden 阅读全文
posted @ 2011-04-20 11:31 顾文锦 阅读(295) 评论(0) 推荐(0) 编辑
通过定制行为拦截WCF消息
摘要:有两种方式可以扩展WCF:定制行为、定制绑定。行为用来控制内部的通信方法,绑定元素用来创建控制外部通信方法的信道。具体来讲,在WCF的客户端,行为用来修改某些组件的操作,这些组件主要负责将发送的数据序列化在消息中,以及反序列化响应;在WCF的服务端,行为用来修改调度器组件(dispatcher)的功能。(以上为《WCF3.5揭秘》中的原话)定制行为的类型包括操作选择器、参数检查器、消息格式器、消息检查器四种。操作选择器返回处理消息的操作;参数检查器可以修改调用的参数;消息格式器负责将接收的消息反序列化以及将要发送的消息序列化;消息检查器可以在消息通过终结点的时候操作和修改消息。根据以上描述,我 阅读全文
posted @ 2011-04-20 11:24 顾文锦 阅读(562) 评论(0) 推荐(0) 编辑
一个基于Prism的方案的介绍
摘要:对Prism的介绍园子里已经有很多人介绍了,这里就不再班门弄斧了。只着重介绍一下自己使用Prism构建的一个Wpf程序的设计方案,也请大家不吝指教。按照模式实践小组的介绍,Prism框架+MVVM模式也许是WPF程序开发的首选方案,因此我们在项目中使用了Prism4+MVVM模式+AcalonDock控件的设计方案。1、Prism的使用Prism的使用类似于Asp.net中的母版和用户控件的使用,首先有一个Shell作为母版,然后再母版中可以放入一些Region作为占位符,这些Region与一个用户控件关联,在Shell运行时会将这些用户控件动态添加到对应的Region所在的位置。这样做的一个 阅读全文
posted @ 2011-04-14 18:19 顾文锦 阅读(781) 评论(2) 推荐(0) 编辑
MVVM模式下附加属性的使用
摘要:最近开发的一个项目中我们使用了微软模式实践小组的Prism框架(后续会发布一些学习心得),该框架提供了MVVM模式的一种实践方式。在MVVM模式中View的事件的响应一般通过Command可以实现,在无法使用Command实现时也可以使用附加属性(Attached Properties)实现。下面贴一段代码,用来响应ListView的拖放事件。在ViewModel中定义附加属性:public static bool GetHandleDragEvent(DependencyObject obj) { return (bool)obj.GetValue(HandleDragEventProper 阅读全文
posted @ 2011-04-12 14:16 顾文锦 阅读(779) 评论(1) 推荐(0) 编辑
从WPF控件拖放到Winform控件的注意事项
摘要:最近在开发一个项目时,需要在WPF窗体中嵌入Winform控件,在尝试从WPF控件拖放到Winform控件时遇到了一些问题,现将问题和解决方法总结如下:1、如果自定义了拖拽实体类,如 public class DragObject { public string Name { get; set; } }应在类定义前加[Serializable]特性标记,否则在目标方接收数据时会提示“未将对象引用设置到对象实例”2、在Winform端有时会出现不触发DragDrop事件的情况,该情况下应先触发DragEnter事件,在DragEnter事件中修改拖放效果,如e.Effect = DragDro. 阅读全文
posted @ 2011-04-12 09:16 顾文锦 阅读(855) 评论(0) 推荐(0) 编辑


点击右上角即可分享
微信分享提示