技术开发 频道

职责链模式在WCF开发中的应用


【IT168专稿】


   在我的一本书《软件设计精要与模式》的第19章中介绍了职责链模式在实际项目中的应用,由于引入了该模式,使得对象在职责划分上有了更清晰的结构,然而由于项目场景的诸多限制,总有几分“为模式而模式”的生涩感觉。最近在开发WCF的相关项目时,又一次应用了职责链模式,一方面加深了自己对设计模式的进一步理解,也积累了一些心得,可以与各位分享。

    在该项目中,我希望实现对Endpoint的合法性检验,其中对于绑定而言,则包含了许多约束,例如绑定与URI样式的约束,例如绑定与服务契约设计的约束。绑定不同,则向对应的约束也不相同。为了更好地体现Endpoint,我在项目中定义了属于自己的Endpoint类:
public class ServiceEndpoint 
{
public Uri Address
{
get;
set;
}
public Binding Binding
{
get;
set;
}
public Type ContractType
{
get;
set;
}
}
   如果考虑最简单的实现方式,我们完全可以通过分支语句,判断不同的绑定类型,然后执行对绑定约束的检查,例如:

public class BindingConstraint 
{
public bool Constraint(ServiceEndpoint endpoint)
{
bool flag = false;
switch (endpoint.Binding.Name)
{
case "BasicHttpBinding":
//check the BasicHttpBinding;

flag = true;
break;
case "NetTcpBinding":
//check the NetTcpBinding;
break;
case "NetPeerTcpBinding":
//check the NetPeerTcpBinding;
break;
//...Other bindings' constraint;
}

return flag;
}
}
0
相关文章