在 Web 服务领域引入 MVC 模式的功能(4)

如果您的客户都是特定的合作伙伴,那您就不需要使用注册表了。不过,您可以在您的应用程序的 Web 层或者在具备适当安全保护的熟知位置来发布您的 Web 服务描述( WSDL 和 XML schemas)。例如,假想有一个转售者的客户应用程序,他与某个特殊厂商有协定。客户应用程序已经在厂商开发时间中静态地 与 Web 服务结合在一起了。只有授权的团体才可以查询 XML schema 或者从 Web 层检索服务描述来生成客户端代码。您应该在 WSManager 层中执行有效客户的身份验证和授权使用。

  订购者:使用 Web 服务

  应用程序可以利用在公共注册表或者企业内部中已存的 Web 服务。 WSManager 有解析必要的 WSDL 文件的方法并且调用相关的操作返回一个值。Structs 控制器在 WSManager 类中调用相关方法来使用特定的 Web 服务。数据作为预定义的数据访问对象在 WSManager 和 Structs 控制器之间来回传送。访问 Web 服务时所发生的所有异常都将在 WSManager 中列举出来并且传回到 Struts ActionController.

  服务请求者要通过使用服务代理来搜索 Web 服务;如果找到它所想要使用的 Web 服务,那么它就要与服务提供者建立一个合约才能享受这个服务,业务也是如此。

  WSManager 使用 WSDL 文档、服务器名字、端口名、操作名以及包括 Java 原始类型、Java 数组、Java 对象 或者与 XML 文档等所有必需的请求参数一起来订购一个 Web 服务。

  如果是在 UDDI 注册表中发布目标 Web 服务,那么所有基于 Structs 的应用程序都能使用像 XMethods (请参阅参考资料)这样的代理服务来订购它。在执行完所请求的操作后,供应者 Web 服务返回所期望的值。 WSManager 可以更改返回值使得它与应用程序所期待的 schema 相匹配;它也可以在应用程序要求基础上修改结果。从 WSManager 收到结果以后,Struts ActionController 能够处理结果并传送给相关视图,或者还能调用相关的模型服务来完成深层处理。

  错误处理

  所有的错误都是在 WSManager 层中处理的;这就消除了不必要的服务器开销。如果模型服务是当作 EJB 层来执行的,那么其性能会得到非常显著地增强。

  在充当供应者角色时, WSManager 抛出所有如 SOAPFaultException 这样的异常。它还可以检查新来的请求并且抛出所有缺少命令域的异常。您可以创建一个类来跟踪并在数据仓库中记录这些错误,以后可以做作参考。

  在充当订购者角色时, WSManager 捕捉到由服务供应者所抛出的所有 SOAP 异常并且将它们更改为 WSManager 所要求的格式。您可以记录下所抛出的错误作为以后参考之用。如果需要,那么在需要时候也能够校验出响应值并且作为异常抛出。您可以创建一个类来记录这些异常,作为以后参考之用。 WSManager 能够验证响应值而且可以作为一个异常将它抛出。

 审核

  在充当供应者角色时, WSManager 可以记录下详细信息,将来可以做为审核。使用这些信息有很多用途,像:

  在所接收到的大量采样点基础上登记客户端。
  收集数据用作市场目的
  决定应用程序是否需要更新
  鉴别并捕捉流氓用户。

  缓存

  Web 服务的客户往往要比一般的客户端-服务器体系结构中的客户要多些;因此在 Web 服务体系结构中,客户端就要做更多的工作,比如缓存。Web 服务正确使用数据缓存就可以实现其最大的性能。当服务的请求信息主要是只读的时候或者当那些信息按照比所要求的速率变化得还要慢时,您就应该考虑要在 Web 服务中使用缓存了。

  身份验证与授权使用

  您可以在 WSManager 层中执行所有订购者的身份验证。所有想使用 Web 服务的客户都要经过这样的身份验证逻辑。您可以使用基本用户身份验证或者数字鉴定来实现此目的。

  Struts 视图

  您要通过使用 JSP 技术来构建基于 Structs 应用程序的视图部分。JSP 页包含有静态 HTML 加上 动态内容,这些内容是基于对特别行为标签说明(在页面要求时)的。JSP 环境包括一套标准的行为标签。另外,在自定义标签库中组织了一套标准的工具,开发者们可以使用这些工具来定义他们自己的标签。

  Structs 框架包含有扩展的自定义标签库,这个库能帮助用户界面国际化更为全面并能非常适度地与 ActionForm 组件相互作用。视图层比较单薄,它不提供业务逻辑。Structs 视图是通过 ActionForm 与 Structs 控制器相互作用的。

  Struts ActionForm

  ActionForms 只是一些 Java 类而已,它继承了 Structs 所提供的 ActionForm 类,这些类中包含有 accessor 和 mutator 方法。 JSP 页或者 Action 类都会调用这些方法来聚集或检索数据。

  模型服务

  模型服务是作为一套 Java 类来执行的。每个模型服务组件都会提供一套服务,而这些组件结合起来同样也提供一套普通服务。 ActionController 与 WSManager 类将数据当作预定义的数据访问对象来回传送。在处理过程中,ActionController 或者 WSManager 可以调用相关模型服务组件中所要求的方法。这些组件将所要求的数据以数据访问对象的形式传给模型服务,模型服务执行一切必须的商业逻辑处理然后从存储数据仓库中取出所需要的数据。模型服务组件聚集相关的预定义数据访问对象,然后将它传回给 ActionServlet 或者 WSManager 类。所有的错误或者确认信息都会通知给 ActionServlet 或 WSManager 层。

  对于您的应用程序,您应该遵守以下的设计规则:

  模型服务不能含有任何与视图相关的代码(例如,会话处理)。
  所有的事务仅仅只能在 Action 或 WSManager 层中来处理。
  模型服务只能被同一模型服务组件中其他的模型服务或者高层 Action 类所调用。

  数据存储层

  数据存储层由所有的存储数据仓库组成。例如,它可能包含有关系数据库、平面文件或者甚至有 XML 文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值