在好几个实例中,ASP.NET的多个部件似乎起的作用是一样的。在各种选项中进行选择可能会很困难。下面这些技巧可以帮你很快地为手头的工作选择最适当的工具。
用户控件 vs.服务器控件
ASP.NET为用户界面代码封装提供了两个可供选择的方法。你可以构建服务器控件,也可以构建用户控件。
如果你运用用户界面元素来解决一个特殊的商业问题,那么一个用户控件是很理想的。如果你不操心隐藏你的源代码,那么你更应该用用户控件了。你选择构建一个用户控件的一个最重要的原因就是运用部分页面缓存。运用一个用户控件,你可以完成你用一个服务器控件所做的任何事情。总的来说,你应该从宏观的角度来看用户控件,从微观的角度来看服务器控件。用户控件的一个很好的例子就是一个可重用的电子邮件表,你可以把它放在你的网站的几个不同的地方,来收集各方的反馈信息。
服务器控件更复杂,更难构建,因此你应该将它们用于小的、独特的用户界面元素。如果你需要基于可重复的模板的用户界面元素,服务器控件也为构建这种元素提供了一个有效的机制。如果你打算出售你的控件,服务器控件是个很好的选择,因为你可以完全隐藏它们的实现。运用用户控件,你只能隐藏代码背后的类,这就需要你分布多个文件到控件的任意客户端。服务器控件的设计很紧密、很容易分布。服务器控件的一个很好的例子就是一个优化的TextBox控件,它可以执行一些数字格式化逻辑。
Web Services vs.Remoting
Web services和remoting都可以让你同远程系统通讯。如果你的服务的客户端在你的系统域“之外”,Web services就是个很好的选择。这是因为它们包含一个为你的服务描述接口的WSDL文件,可以使客户端更容易地使用它。通过Web service类定义上的WebMethod的CacheDuration属性,Web services也可以很容易地运用缓存。总体上,Web services是基于标准的,独立于平台的,所以如果你打算让你的服务跨越多个平台,Web services正合适。Web service的一个很好的例子就是一个公司的电话目录。
当你需要最大程度的配置灵活性时,Remoting是最佳的。通过将私有的.NET二进位协议用于通讯,你可以最佳化性能。尽管remoting最适合.NET与.NET的通讯,但如果你必须与非Windows系统通讯,你也可以运用SOAP协议。即使你不在一个Web服务器上提供你的应用程序,你仍可以用remoting,这个Web服务器为对等通讯提供了许多机会。Remoting更容易支持复杂的对象,而且remoting可以让你在一个stateful对象上调用多个方法。如果你在构建你自己私有的即时信息(Instant Messaging)客户端,remoting会是一个理想的工具。Microsoft的Terrarium项目是另一个运用remoting的完美的例子。