【问题标题】:WCF as BLL (Middle Tier) and Security techniquesWCF 作为 BLL(中间层)和安全技术
【发布时间】:2012-10-23 20:23:59
【问题描述】:

所以请耐心等待,我是 MVC 和 WCF 的新手。我已经有一组服务 (WCF) 暴露了我的 BLL,我正在尝试从我的 MVC.net Web 应用程序中使用这些服务,但我不确定如何在这里执行安全操作。

这些是我的应用要求:

  • 能够为 Web 应用程序上的每个用户使用不同的凭据来使用 WCF 服务
  • 我的 BLL (WCF) 需要知道消费者在调用它(现在我只有 MVC 应用程序,但我计划向它添加 iOS 和 Andriod 调用,所以稍后我将向 WCF 端点添加 REST 服务) 那里有任何设计模式吗? (或者我应该只使用soap标头来包含来电显示吗?我应该使用某种来电者密码或其他东西吗?)
  • 我需要一个安全机制,比如令牌或其他东西,这样我就不必在每次调用服务方法 (WCF) 时传递用户名和密码

到目前为止我有什么:

  • WCF 使用证书和自定义用户名验证器。
  • 我已经使用合同接口而不是生成的代理手动编码代理:但我讨厌每次调用 WCF 服务时都必须验证用户名和密码的事实。我怎么能在这里使用代币?想知道在soap 标头上发送的给定令牌是否有效或尚未过期?我搜索了很多,没有教程/代码/示例足够清楚,我可以真正开始编写代码;(
  • 我正在尝试缓存 ChannelFactory,但我应该这样做吗?我的意思是,我需要为每个合同的每个登录用户缓存一个频道工厂;(可以吗?我可以在这里做什么?

提前致谢!

【问题讨论】:

标签: wcf security model-view-controller


【解决方案1】:

您是否应该为每个合同的每个用户缓存 ChannelFactory?

这取决于。有几个考虑因素。实例化通道工厂最多可能需要 70 毫秒。如果您重复执行此操作,如果您没有缓存 ChannelFactory 并在每次用户向您的 MVC 应用程序发出导致控制器操作调用 Web 服务的 http 请求时实例化一个(或多个),您将看到明显的性能下降。这表明缓存 channelFactory 将有利于速度。

另一方面,根据您拥有的用户数量,如果您正在缓存大量通道工厂(例如在静态字典中),您将开始使用大量内存 -这可能会成为您的问题。

您必须确定动态实例化通道工厂(并正确关闭/中止它们及其包含的通道)的成本与增加托管 MVC 应用程序的应用程序池中的内存利用率相比是否太高。

无论哪种方式,我强烈建议您在部署到生产之前对您的应用进行概要分析。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多