代码之家  ›  专栏  ›  技术社区  ›  Nate Dudek

WCF数据服务(Astoria)是业务线应用程序的好选择吗?

  •  2
  • Nate Dudek  · 技术社区  · 15 年前

    我们的一个架构师正在为我们公司的下一代应用程序构建一个新的参考体系结构。原型是一个ASP.NET MVC 2 Web应用程序,位于WCF数据服务(Astoria)之上,使用EntityFramework 4进行数据访问和对象映射。

    原型应用程序管理用户的角色,因此服务执行诸如创建/更新/删除用户、向用户添加应用程序访问权限/能力/角色等操作。因此,从安全的角度来看,任何人都不应该能够在应用程序外访问数据服务,并执行任何这些操作。

    我最初认为,WCF数据服务是为网络上的OData实现和“开放”服务而设计的,而且业务线应用程序仍然应该使用传统的WCF服务,因为它们具有适应性、安全性和其他功能。我离基地远吗?WCF数据服务是从MVC控制器调用的好选择吗?他们能像传统的WCF服务一样轻松地处理身份验证和安全性之类的事情吗?

    2 回复  |  直到 13 年前
        1
  •  1
  •   John Farrell    15 年前

    更新:

    新的问题基本上是“WCF数据服务能否限制访问?”是的。


    这些问题很难回答,因为您没有发布您的需求、SLA或安全需求。对于我的业务线来说,WCF数据服务很好,但根据您尚未发布的各种详细信息,可能不适合您。

    两个想法:

    1)WCF数据服务仅为REST,与手动滚动的WCF服务不具有相同的选项安全性。你必须像克里姆林宫那样把一切都锁起来吗?WCF数据服务可能不是您的茶。

    2)WCF数据服务非常适合于只读的“从产品中选择前50个*类型”服务方法。通常,您必须为应用程序的每种实体类型编写几个WCF服务方法。通过在正常的WCF服务之上利用WCF数据服务,您可以节省大量时间反复编写相同的读取方法。

        2
  •  1
  •   Dony    13 年前

    OData是用于访问数据的协议,而不是用于保护数据的协议。没有标准的解决方案可以将对数据的某些部分的访问仅限于特定的角色或帐户,就像在每个普通的SQL数据库中一样。大多数安全措施都基于“所有内容都可见,并且允许所有操作,除非您为特定情况指定了其他选项”,而不是“默认安全”。

    当您希望使用OData从业务线应用程序中访问公司数据时,这是一个很大的障碍。如果您计划使用Ajax调用,那么您的OData必须在互联网上可见,从而容易受到各种攻击。对于已经在互联网上可用的公共数据,OData似乎是一个很好的协议,但据我所知,目前没有OData提供程序能够实现现成的基于角色的权限。

    可以用这种权限扩展标准的WCF数据服务,但这是有代价的。我从经验中知道,安全性不能在以后添加,它必须是任何应用程序框架和数据存储设施的组成部分。你可能希望最好,但你总是需要为最坏的情况做计划,不久就会有人在互联网上寻找包含个人和公司敏感数据的不安全的OData来源。

    推荐文章