目前Web services还是一门相当新的技术,而且不是每个人都知道该如何充分利用它们。以我的经验(我曾在Web services底层架构上构建了一个完整的企业软件产品),我发现Web services有这样两个主要用途:将多个系统整合到一起,以及将功能函数(function)作为组件提供给远程调用。本文我将介绍在使用后一种方法时需要注意的问题。
当你想要用Web service来提交一个新的函数或service给可能要远程调用的客户端时,你需要考虑到许多因素。不论这个函数是用于内部还是用于外部的客户或合作者,在Visual Studio .NET中开始一个新的Web service项目之前先设计一个大纲会帮你节省不少时间。比如,在要求访问专属数据库时以及/或者在很难实现本地部署或造价太高时,将一个功能函数作为一个Web service来提供就会很有意义。用于执行简单计算的函数不要求访问专属数据,同时在进行本地部署或维护方面也没那么复杂。
当功能函数需要一个复杂的安装过程或一个复杂的、昂贵的硬件配置时,使用Web services或许是你的最佳选择。在这种情况下,将功能函数作为一个Web service来提供会为你的客户解决很多麻烦事,因为他们不用在本地部署它。如果你经常需要发布一个功能函数的新版本,那么你也该考虑用Web services。一个Web service会提供一种简便的方法给所有使用该功能函数的客户发布升级版本,而无需在每次发布新版本时让他们重新部署一遍。公众所期望的通过Web service接口提供需要访问专属数据的功能函数是不容易得到的。不管怎样,客户端需要能够得到数据,而Web service显然是一个比传送普通文件(flat file)数据更好的方法。最后,最好能将依赖于经常改变数据的功能函数作为Web services来提供。在更新数据速度和更改数据大小方面的提高会使远程访问专属数据的优势更为明显。
在你决定是否将一个功能函数作为一个Web service来提供时,部署问题是一个最重要的因素。Web services会使软件的部署更简单。比如,如果你在构建一个指导驾驶的应用程序,你就不需要担心如何安装地图软件。或者如果你有一个需要经常升级的功能函数,你就不需要每几个月就回到公司让他们帮你部署更新。
明智地选择Web Services
然而,你要了解并非Web services的所有方面都是好的,它们也有优点和缺点。当然,在开始你的项目之前你得确认其优点是多于缺点的。否则你唯一需要用到新的Web service的地方就是在你的简历中了。
比如说,一个运行于其他架构中的Web service肯定不如在你自己的服务器中运行的那么可靠。即便是保护最完善的和维护得最好的网络在某些方面也并不是完全牢靠的。你必须能够向你的客户证明,无论是在内部还是外部,在service的部署和维护方面有很大优势来弥补本身固有的在一个易出错的网络中远程访问功能函数所带了的不足之处。
我最喜欢用平方根功能函数来说明一个典型的“错误”使用Web service的例子(见表1)。虽然这个场景有点夸张,但却很能说明问题。平方根功能函数没有体现任何Web service所提供的优势,相反却体现了其所有的缺陷。对它进行部署并非难事,而且它没有(至少最近没有)因为发生了变化而需要进行重新部署,这样一来就使Web services部署优势不能够体现出来了。而且,它不需要访问任何数据库或者专属数据来实现计算功能。然而它的确需要将功能函数请求发送到Web服务器,这会致使Web service因为其本身固有的缓慢或无网络链接问题而执行地很慢。在这种情况下,一个象平方根这样的小函数会导致一个很大的应用程序的机能完全停止。在你首次尝试Web services时,它会试图将一些应用函数(utility function)作为Web services来发布――一些将位图(bitmap)转化为JPEG的函数或压缩位图数据的函数。这些功能函数或许是非常便利的,但它们并不适合用Web services提供。
当数据可能会对其他部门有用时,内部的department-to-department (D2D) Web services可能会适用于所有功能函数,甚至是一些很难部署的功能函数。Web services提供了一种很棒的方法能够快速高效地在企业内部实现对软件部署和维护,而无需去访问防火墙以外的Web services。因为D2D Web services是在你的网络内部运行的,这样就减少了由于网络问题而导致程序中断的可能性,而且volume的层级也更容易预测。
通常在一个部门构建需要访问其他部门管制的数据的程序时,持有这些数据的部门会设置一个数据输出程序(data export procedure)将一个包含该数据的普通文件传输到所需要的部门,这样他们便可以将数据导入数据库中了。遗憾的是这种极不方便的共享数据方法还是非常普遍的。Web services提供了一种更好的方法为内部部门数据共享加载普通文件数据。Web services不是将原始数据传送过去让客户端程序自己进行数据处理,而是更多地让你来控制,它们会提供计算功能而不是用来计算的数据。这不仅是一种更稳定的信息共享的方法,而且它还提供了一种机制来增强和数据有关的商业规则。
尽管采用了同样的方法,对需要通过Web services来提供给外部的功能函数的评估还是非常重要的。使用一个外部企业提供的Web service的危险性更大一些。然而,这种危险性会被它们能充分利用分布程序跨防火墙而无需在本地部署service的优势所抵消(见表2)。
考虑以下问题
在你向公司建议将某一功能函数作为一个Web service 提供给你的商业伙伴或用户时,你需要说明其优势是否大于劣势。先考虑下面这些问题的答案会对你有所帮助:
|
传入或输出Web service 的数据有多敏感?
|
|
数据源是什么? 它多长时间更新一次?是否是公开的?
|
|
谁在控制Web service所处的架构? 该架构是否可靠?
|
Web services在大多数IT企业都具有利用潜力,尤其是在软件部署方面,但你也不能将它随意使用到任何地方。你要避免毫无意义地将功能函数或服务用做Web services。有时在本地部署是非常有必要的。
关于作者:Douglas Kerwin是Metaverse Corporation公司的创始人及执行总裁,这家公司位于Princeton, N.J.,主要从事将Web Content Management软件作为一个service来提供,其产品以Microsoft.NET作为开发平台。你可以通过
dkerwin@metaverse.cc和他联系。
分享到:
相关推荐
其中,SmartObject是K2平台的一个核心组件,主要用于封装外部数据源(如Web Services、数据库等),使得这些数据源可以被K2工作流、表单或其他K2组件方便地调用。通过SmartObject封装,可以实现快速开发,并轻松地与...
在探讨如何使用SQL Server 2005深入理解Web反馈的意义时,文章首先提出了网站发展的新趋势,指出网站不再仅仅关注点击和购物行为,而是希望通过用户的反馈来更深层次地理解客户需求、产品需要改进的方面以及未来发展...
#### 五、一个成熟并且相对安全的CMS,渗透时扫目录的意义? 1. **敏感文件**: 寻找可能存在的敏感文件,如配置文件、备份文件等。 2. **二级目录**: 扫描二级目录,可能会发现网站管理员不小心留下的备份文件或...
**IIS_Rewrite** 是一个强大的URL重写工具,专为Microsoft的Internet Information Services (IIS) web服务器设计。这个组件使得网站管理员能够轻松地管理URL,将动态URL转换为静态或者更友好的格式,从而提高搜索...
这个源码可能是帮助网站管理员追踪和分析访问者数量、浏览页面、停留时间等数据的工具,对于网站运营和优化具有重要意义。 【描述】中提到"ASP源码,压缩包解压密码:www.cqlsoft.com",意味着你需要在解压缩文件时...
**WSDL(Web Services Description Language)**是Web服务的标准描述语言,它定义了服务的位置、服务所使用的消息格式以及如何调用这些服务。WSDL文件是XML格式的,它提供了服务的接口定义,包括输入、输出参数、...
这种模型允许服务根据用户的角色分配权限,通过角色作为中间媒介,将用户的权限与资源访问进行映射,简化了授权管理的复杂性,使得权限管理更具灵活性和可扩展性。 最后,论文使用Python编程语言,结合RSA(Rivest-...
《连连看简体中文完全版》是一款经典的休闲益智游戏,深受广大用户的喜爱。它以简单易懂的操作、丰富的关卡设计以及趣味性十足的挑战为特点...同时,ASP.NET的知识对于提升Web开发者的技能水平和职业发展具有重要意义。
ASP.NET 2.0是微软开发的一个用于构建Web应用程序的框架,它是在.NET Framework的基础上构建的,提供了丰富的功能和工具,让开发者能够更高效地创建动态、数据驱动的Web应用程序。陈语林的《ASP.NET 2.0程序设计》...
【jbossws-cxf-transports-udp-4.2.4.Final.zip】这个压缩包文件主要包含的是JBoss Web Services (JBOSWS) 的CXF Transports UDP模块的一个特定版本,即4.2.4.Final。JBOSWS是Red Hat开发的一款企业级的Web服务实现...
9. ASP.NET MVC:除了传统的Web Forms模型,ASP.NET还提供了Model-View-Controller(MVC)框架,这是一种更现代、更灵活的开发模式,鼓励分离关注点和更好的测试。 10. ASP.NET Core:作为ASP.NET的最新版本,ASP...
6. 部署与维护:ASP.NET应用程序可以部署在IIS(Internet Information Services)或其他兼容的Web服务器上。系统可能还包含一些日志记录和错误处理功能,以便于监控和调试。 总的来说,"ASP.NET课程表查询系统"是一...
然而,RMI仍然是构建分布式Java应用的重要工具,可以与其他现代技术如Spring Remoting或Web Services结合使用。 总结来说,“draw_rmi”可能是一个项目或教程,展示了如何在Applet中利用RMI进行远程方法调用,以...
总的来说,ASP.NET网上选课系统的设计与实现是一个综合性的项目,涵盖了Web开发的多个方面,对提升开发者在Web应用开发、数据库设计、安全防护等方面的能力具有重要意义。通过学习和实践这样的系统,开发者不仅可以...
在这个车辆档案系统中,可能采用了ASP.NET的身份验证和授权机制,比如Forms身份验证,来确保只有授权用户才能访问敏感信息。 2. 车辆信息管理:包括车辆的添加、编辑、删除和查询功能。这些操作可能通过数据库交互...
AWS Lambda是由Amazon Web Services提供的事件驱动的无服务器计算平台。 它是一种计算服务,可响应事件运行代码并自动管理该代码所需的计算资源。 LambdaGuard是一个AWS Lambda审核工具,旨在创建资产可见性并提供...
ASP(Active Server Pages)是微软开发的一种服务器端脚本环境,用于创建动态网页或Web应用程序。在ASP中,为了保护源代码不被轻易查看,开发者可能会使用MS Script Encoder工具对脚本进行加密。本文将详细介绍ASP...
Iisext.vbs是一个非常有用的命令行脚本工具,它可以帮助管理员列出和管理IIS(Internet Information Services,互联网信息服务)上的Web服务扩展文件。 Web服务扩展允许服务器管理员控制服务器上哪些动态内容扩展名...
而Boto3是Amazon Web Services(AWS)的官方Python SDK,使得开发者能够轻松地在Python应用中访问和控制AWS服务。 accessanalyzer是AWS的一项服务,它允许用户分析其AWS资源的访问策略,以检测潜在的安全风险。通过...
优秀的个人网站模板应考虑搜索引擎优化(SEO),如使用有意义的URL、元标签和友好的HTML结构,帮助网站在搜索结果中获得更好的排名。 总结,这个“超赞的个人网站模板 asp.net”结合了ASP.NET的强大功能、C#的编程...