DLL与WCF:性能与可扩展性(WCF只是以防万一?)

DLL与WCF:性能与可扩展性(WCF只是以防万一?),wcf,Wcf,假设您要创建一个ASP.NET web应用程序。你认为它永远只是一个web应用程序(包含常规和移动页面),但你永远不知道。也许有一天你会想要一个iPhone、iPad、Android或任何应用程序作为客户端。如果出现这种情况的可能性为0%,您应该将业务层打包为DLL,并从客户端引用它们。如果将来有1%或更多的机会使用这些其他前端应用程序,那么您应该将您的业务层打包到WCF中,并通过http(即面向服务的体系结构(service oriented architecture,SOA),即任何客户端都

假设您要创建一个ASP.NET web应用程序。你认为它永远只是一个web应用程序(包含常规和移动页面),但你永远不知道。也许有一天你会想要一个iPhone、iPad、Android或任何应用程序作为客户端。如果出现这种情况的可能性为0%,您应该将业务层打包为DLL,并从客户端引用它们。如果将来有1%或更多的机会使用这些其他前端应用程序,那么您应该将您的业务层打包到WCF中,并通过http(即面向服务的体系结构(service oriented architecture,SOA),即任何客户端都可以使用的软件即服务,而不考虑平台)

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

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

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

我认为您可以使用(或至少将其添加到您的列表中)。 您可以创建一个调用RESTAPI的网站,该网站也可以从本机应用程序获得

查看下一篇文章以了解更多信息:


想到两个选项

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

第二个选项更适合用于概念验证。一个很好的描述是在

这就是我所认为的情况。但是,当我玩它的时候。。您必须跳过一些环才能将DLL封装在WCF中。。比直接在WCF中编写业务代码要麻烦得多。当然,不能按原样使用DLL。您需要创建公开DLL功能的包装器方法。如果这是你想要的,那么通过这些额外的工作,你可以获得更大的灵活性。很抱歉,仍然感到困惑。选项1:创建DLL并在初始web应用程序中引用它们。如果将来有iPhone/Droid/任何客户端应用程序,请将DLL封装在WCF中,尽管很麻烦。选项2:在WCF中直接/本地创建业务代码,并通过http访问初始web应用程序。然后,所有这些都准备就绪,以便将来的客户端应用程序也能这样做。你更喜欢选项1?是的,选项1。如果将来有必要,您需要做的就是创建一个ServiceContract,并让它的方法调用您的DLL。使用选项2,您将引入另一个可能不需要的层/技术。为什么过早地包含WCF?以后再加也没什么大不了的。