3

假设您要创建一个 ASP.NET Web 应用程序。您认为它永远只是一个网络应用程序(带有常规页面和移动页面),但您永远不知道。有一天,您可能希望拥有 iPhone、iPad、Android 或任何应用程序作为客户端。如果发生这种情况的可能性为 0%,您可以将业务层打包为 DLL 并从客户端引用它们。如果将来这些其他前端应用程序有 1% 或更大的机会,您会将业务层打包在 WCF 中并通过 http 公开(即面向服务的架构 (SOA),任何客户端都可以使用的软件即服务)不论平台)。

  • DLL pro:速度/性能。
  • DLL con:只有 Microsoft 客户端可以使用并且必须有 DLL 与客户端。这也意味着如果 DLL 嵌入客户端应用程序,则需要很长的距离将数据带到业务层进行处理然后返回。
  • WCF pro:可扩展性.. 任何客户端都可以使用。
  • WCF 缺点:速度/性能。

软件架构就是要在性能和灵活性之间找到适当的平衡。我想在这种情况下您必须将 WCF 作为保险单?

4

3 回答 3

2

您不必使用 WCF。如果需要,并且您需要将 BLL 的功能公开给其他非 Microsoft 类型,那么您可以创建一个新的 WCF 服务。在这个新服务中,您可以在 ServiceContract 中创建包装器方法来公开 DLL 的方法等。因此,您可以创建 DLL 并在将来需要时为其创建服务。

于 2012-12-20T16:59:47.780 回答
0

想到两个选择

  • 在无状态的 BLL 中定义粗粒度的公共方法。如果/当您希望作为 WCF 服务运行时,您可以轻松地包装您的库。
  • 或实现为 WCF 并在本地托管

第二个选项更适合概念验证。一个很好的描述是在http://msdn.microsoft.com/en-us/library/bb332338.aspx

于 2012-12-22T06:43:48.410 回答
0

在我看来,您可以使用ASP.NET Web API(或至少将其添加到您的列表中)。您可以创建将调用 REST api 的网站,并且它也可以从本机应用程序中使用。

查看下一篇文章以获取更多信息:

于 2012-12-20T17:02:28.480 回答