【问题标题】:WCF Project vs. A folder in the existing website project?WCF 项目与现有网站项目中的文件夹?
【发布时间】:2010-03-30 20:21:21
【问题描述】:

哪种方式最有意义?我有一个 ASP.NET 应用程序......将来可能还有一个 Silverlight 应用程序......我希望两者都与 Web 服务通信......

一开始,我喜欢让 WCF 项目独立进行。

但后来我想.. 有什么意义,因为我可以很容易地拥有一个包含现有网站项目中所有 .svc 文件和代码的“WEBSERVICES”文件夹。 ...至少那样...部署到远程主机会更容易一些,因为一切都在一个项目中..

还有其他考虑吗?

【问题讨论】:

    标签: asp.net wcf layer


    【解决方案1】:

    为什么没有:

    • Contracts 程序集中的 WCF 服务和数据协定
    • Services 程序集中的 WCF 服务实现
    • 从您的网站或网络应用中引用这两个程序集
    • 将 *.svc 文件放入 WebServices 目录

    这样你就有了

    • 干净且井井有条的关注点分离
    • 部署文件 (*.svc) 位于您的网站/Web 应用程序中
    • 以后您仍然可以通过其他方式(例如自托管)扩展/使用您的 WCF 代码,而无需大惊小怪

    【讨论】:

      【解决方案2】:

      需要考虑的两件事:

      安全性 - 您的服务是否只会被您的应用程序使用,或者它们是否有可能在其他任何地方使用(毕竟它们是服务)。如果是这样,您将授予对应用程序的访问权限,以便授予对 Web 服务的访问权限,或者至少调整对特定文件夹的访问权限,这可能会导致安全漏洞。

      部署 - 如果您在不违反合同的情况下对服务进行更改,为了部署更改,您必须部署整个应用程序。

      我更愿意采用 Marc 建议的方法(例如,有一个用于合同的程序集,一个用于服务实现的程序集)并将 Web 服务作为其自己的应用程序托管并从 ASP.NET 应用程序中引用它。这样,您就可以适当地分离关注点,并且可以分别维护两者。

      【讨论】:

        猜你喜欢
        • 2014-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-27
        • 1970-01-01
        • 2019-04-06
        • 1970-01-01
        相关资源
        最近更新 更多