我正处于设计应用程序的初始阶段。会有以下内容:
- 网页界面
- 网络服务
- 利用其他预先存在的 Web 服务
我是 Windows 服务和 SOA 的新手,尤其是在 Visual Studio 的上下文中。
我的问题是,我将如何在 Visual Studio 中设置此解决方案?例如,我会
- 将Web UI和服务调用放在同一个项目中,并将我的服务放在一个单独的项目中,然后将上述所有内容放在一个解决方案中?
开始构建我的解决方案以使其可追溯和测试的最佳方式是什么?
我喜欢这样构建我的 WCF 解决方案:
Contracts(类库)
包含所有服务、操作、故障和数据合同。可以在纯 .NET-to-.NET 场景中的服务器和客户端之间共享
服务实现(类库)
包含实现服务的代码,以及实现此功能所需的任何支持/帮助方法。没有其他的。
服务主机(可选 - 可以是 Winforms、控制台应用程序、NT 服务)
包含用于调试/测试或可能还用于生产的服务主机。
这基本上给了我服务器端的东西。
在客户端:
客户端代理(类库)
我喜欢将我的客户端代理打包到一个单独的类库中,以便它们可以被多个实际客户端应用程序重用。这可以使用 svcutil 或“添加服务引用”并手动调整生成的可怕的 app.config 来完成,或者通过使用ClientBase<T>
或ChannelFactory<T>
构造手动实现客户端代理(当共享合同程序集时)。
1-n 个实际客户端(任何类型的应用程序)
通常只会引用客户端代理程序集,或者如果正在共享,也可能引用合约程序集。这可以是 ASP.NET、WPF、Winforms、控制台应用程序、其他服务 - 你可以命名它。
那样; 我有一个漂亮而干净的布局,我一遍又一遍地使用它,我真的认为这让我的代码更干净,更容易维护。
这是由 Miguel Castro 与 Carl Franklin 在 DotNet Rocks TV 上的Extreme WCF 屏幕投射的启发- 强烈推荐的屏幕投射!