题
什么方式最有意义?我有一个 ASP.NET 应用程序...也许将来还会有 Silverlight 应用程序..我希望两者都能与网络服务对话..
起初,我喜欢让 WCF 项目单独进行分离。
但后来我想..既然我可以轻松地拥有一个包含现有网站项目中所有 .svc 文件和代码的“WEBSERVICES”文件夹,那么这有什么意义呢?...至少这样..部署到远程主机会更容易一些,因为所有内容都在一个项目中。
还有其他考虑吗?
解决方案
为什么不拥有:
- 您的 WCF 服务和数据合同
Contracts
集会 - 您的 WCF 服务实现
Services
集会 - 从您的网站或 Web 应用程序引用这两个程序集
- 将 *.svc 文件放入
WebServices
目录
这样,你就有了
- 干净且组织良好的关注点分离
- 部署文件 (*.svc) 位于您的网站/Web 应用程序中
- 您仍然可以以其他方式扩展/使用您的 WCF 代码(例如自托管)稍后不会有太多大惊小怪
其他提示
两点考虑:
安全 - 只是要你的服务,你的应用程序中使用,或者他们有在其他地方使用的可能(毕竟他们是服务)。如果是这样,你将被授权访问你的应用程序,以授予访问您的网络服务,或至少调整接入到特定的文件夹,这可能会导致安全漏洞。
部署 - 如果你做你的服务的变更,不撕毁合同,以部署改变,你必须部署整个应用程序
我宁愿去与马克建议的方法(例如有一个组件,用于合同,一个服务实现),并有web服务托管其自己的应用程序,并从ASP.NET应用程序中引用它。这样,就具有的顾虑适当分离和可以分别保持两者。
不隶属于 StackOverflow