创建Web Service Storefronts
2024-07-21 02:21:38
供稿:网友
根据功能需求,实现单独的通道来访问你的商业逻辑。
by jonathan goodyear, mcsd, mcp, cls
大多数商业应用程序只通过web services给外界提供其功能的一小部分。大多数应用程序的商业逻辑都是在企业内部互联网中的防火墙后的。而且,在外部和内部,你总是需要同样的功能。理想情况下,你不需要在两个不同的地方编写这个重复的功能——它应该保留在一个集中的商业逻辑层中。要实现这一点,一种方法就是实现多个web service接口,将它们作为进入你的商业逻辑的通道。我把它们称作web service “storefronts”。
例如,假设你在为一个网站构建一个内容管理应用程序。在内部,你可能需要一些功能来增加、更新、删除和读取网站内容。如果你允许其它的网站运用你的内容,那么在外部你只需要提供读取功能。为了适当地封装你的商业逻辑,你需要将所有这些相关的内容部件功能添加到一个叫做contentwidget的单独的集合中(见列表1)。
接下来,你创建两个单独的web service接口,叫做internalcontent和externalcontent。这两个web services都会引用contentwidget集合。internalcontent web service为contentwidget.server对象提供了每个方法,因为你(大概)需要所有这些方法来管理你的网站的内容(见列表2)。
然而,externalcontent web service将只提供getcontentwidget方法来读取内容,因为对你的网站的内容的外部访问目的是单一的(见列表3)。注意,internalcontent和externalcontent web services都实现了getcontentwidget方法。如果你知道你的内容管理应用程序有权限访问这两个web services,你就可以从internalcontent web service删除getcontentwidget方法,作为替代,你可以调用externalcontent web service来读取内容,从而就可以删除所有的多余的代码。然而你的内部应用程序并不是总是有权限访问这两个web services的。
web services storefront方法的好处就是你可以集中所有的商业逻辑,同时也可以控制你给外界提供的功能。需要记住的一个主要的概念是web services不能用来提供商业逻辑。它们就类似一个asp.net web应用程序中的web窗体。它们只是方便了不同系统间(或人们之间,在web forms的情况下——见资源)的交互。确信将iis验证添加到internalcontent web service,以便限制已提供有效安全属性的应用程序对它的访问(见资源)。
你也可以用.net remoting实现同样的web service storefront方法。到你的商业逻辑的内部接口和外部接口是分离的,所以你可以同时实现它们。在这个例子中,我选择在内部和外部都运用了web services,因为在这种情况下,你的商业逻辑集合就有很好的机会可以与非.net系统交互。遇到一个.net remoting应用程序并与之交互的可能性是很细微的(就目前情况来说)。
下载web services storefront的一个完整的样例。它包含contentwidget商业逻辑集合、两个web service storefront项目、一个asp.net web应用程序、安装sql server表的脚本和存储、管理内容数据的存储过程。
关于作者:
jonathan goodyear是aspsoft(www.aspsoft.com)的总裁,这是个位于orlando,fla.的一家internet咨询公司。他是位mcsd,是debugging asp.net(new riders)一书的作者,你可以在www.debuggingasp.net找到它。你可以通过[email protected]与他联系,或者通过他在www.angrycoder.com上的angrycoder ezine同他联系。