热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SOA的困惑

最近项目里需要兼写一些Asp.NET的管理后台,才发现自己有一段时间没有碰过Asp.NET的开发了。前一段时间一直在做BizTalk的项目和开发,做起来

     最近项目里需要兼写一些Asp.NET的管理后台,才发现自己有一段时间没有碰过Asp.NET的开发了。前一段时间一直在做BizTalk的项目和开发,做起来有些手生。不过今天要谈的不是Asp.NET Coding的问题。而讨论一下在Asp.NET开发过程中的一些应用“SOA”思想的困惑。

     开发BizTalk的时候一般的场景是各个应用系统已经将服务定义和发布好了。不管是以什么形式提供的,也不管是什么接口类型的。由于BizTalk支持多种协议和以XML Schema为基础的消息架构。因此可以轻而易举的将消息在不同的系统之间做路由和映射。带着这种思想我也在管理后台里应用了"SOA"起来。其实这个管理后台是很典型的几个表的数据库操作。例如我们有A,B,C三个表,其中C表与B表外键关联,B表与A表外键关联。对A表的操作是直接添加记录即可。对表B的操作是要将表A的主键ID与B的数据一起写到表B中。对表C的操作主要是将表B中的主键ID与C的数据一起写入表C中。

      好的我们大概知道了对数据库表的操作。由于项目需求不明确,还不知道用户是希望使用C/S还是B/S来访问管理后台。所以我的想法是应用“SOA”的思想将数据库的操作通过Web Service的方式暴露出来。供前端的Winform或者Web Application来访问。由于后台比较简单我就使用代码生成器生成了对这些表的操作代码。并且通过Web Service将这些接口(比如每个表的查询、添加、删除、修改操作)暴露出来。这样一来我们就可以看到这个管理后台的一些功能了。由于第一阶段需要给客户演示,时间比较紧,我就使用soapUI来调用Web Service。主要的目的是让客户看到管理后台的功能和操作。通过在soapUI中来回拷贝和粘贴ID与其他数值,成功实现了对表的操作。由于使用这种方法在开发上节省了一些时间使我当时感觉到了应用“SOA”思想的甜头。同时也觉得我直接在这个基础上再加一层Web 控制页面就可以了。

      客户在看了演示之后对管理后台的功能比较认可,但由于soapUI毕竟不适合于用户的使用,所以客户希望能够开发一个Asp.NET的Web Application来提供给用户操作。有了前面的基础我觉得开发应该快就可以完成了。但是实际做的过程中我才发现"SOA"把我整得很恼火。由于前期开放的Web Service只有查询,添加,删除,修改四个单表的操作。但在做Web 开发的时候需要考虑到用户的体验,比如在显示C表数据的时候为了给客户直观的效果我们要显示表B与表A的相应记录的名称而不是ID,还有我们在往C表里插入数据的时候我们还要提供可以供用户选择的A表与B表的数据。那这样一来我还得花时间去完善之前发布出来的Web Service方法以及操作数据库的SQL语句等。由于在开发过程中是采用前端往后端推的过程所以造成了代码没有进行很好的规划经常会出现“补了西墙,拆了东墙”的情况。还有由于Web Service与Web Application不在一个项目,不在一台机器上所以Web Service的调试也给开发带来了一定的麻烦。

     最后,通过整理了一下思路。决定不采用Web Service层了。直接Web层就连接数据库操作层。而且把原来的项目合并在一个解决方案里。很快就把这个管理后台给开发出来了。

     虽然程序已经开发完成了,但我还是有一些困惑没有明白。本来在程序中应用Web Service层是为了可以支持多种的前端技术。并且在前期使用soapUI来POST数据的时候确实节省了一部分的开发时间。但是在后期当客户需求有变动的时候Web Service却给开发带来了麻烦。个人感觉问题应该是出自于对接口的设计方面,前期的时候由于soapUI直接调用接口和专业人员的操作,基本的数据库的操作方法就可以满足需求了,因此开发很快。但是接口没有考虑到用户的体验所以没有暴露出相应的接口或者暴露的方法提供的数据不能满足需求。因此靠在实际的开发过程中使用反向的往上面一层去构造方法。给开发带来了很大的麻烦。

    可见不同的需求对于希望暴露的接口和得到的数据是不同的。由于在这个开发过程中我可以通过创建或修改方法来满足我的需求。但是复杂系统的SOA又应该如何设计各系统接口和提供的信息以满足不同的业务需求呢?我们知道在SOA思想里服务是一种高级别的封装,我们该如何在整合开始前就把接口设计好,并且如果遇到新的需求的时候我们怎么提供更好的方式可以添加或修改接口?

    当然SOA还有很多不明白有地方,而且也不知道在项目中这样使用是否叫作应用"SOA"。虚心听大家的教诲。

转:https://www.cnblogs.com/cbcye/archive/2009/02/25/1398349.html



推荐阅读
  • UMPlatForm.NET 5.1 版本数据字典管理功能解析
    本文介绍了 UMPlatForm.NET 5.1 版本中的数据字典管理模块,探讨了该模块如何支持平台的数据共享与管理,以及如何通过用户和角色权限来增强系统的安全性。 ... [详细]
  • 本文探讨了如何利用 Application 对象在 PHP 应用程序中共享数据,特别是在多用户环境中保持数据的一致性和安全性。文章还介绍了 Application 对象的基本结构、方法和事件,并提供了实际应用示例。 ... [详细]
  • 本文旨在为初学者提供一个详细的指南,从零开始学习如何使用 ASP.NET MVC5 和 Entity Framework 6 (EF6) 搭建项目。通过逐步指导,帮助读者理解 MVC 架构的核心概念,并掌握基本的操作方法。 ... [详细]
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
  • Hibernate入门指南:单表数据库操作详解
    本文介绍了Hibernate作为全面的ORM框架的基础知识,并详细讲解了在MyEclipse环境中配置Hibernate以及进行基本的数据库单表操作的方法,包括增删改查等常见操作。 ... [详细]
  • 本文探讨了在JavaScript中如何有效地从服务器控件DropDownList中获取绑定的ID值,而非仅仅是显示的文本值。这对于需要根据用户选择动态处理数据的应用场景非常有用。 ... [详细]
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
  • 这个报错出现在userDao里面,sessionfactory没有注入。解决办法:spring整合Hibernate使用test测试时要把spring.xml和spring-hib ... [详细]
  • 端到端自动化测试框架设计 - 以京东商品搜索为例的Web应用测试
    本文将对前文介绍的京东商品搜索功能的端到端自动化测试进行总结,涵盖使用WebStorm、Node.js、Mocha、WebDriverIO及Selenium构建的测试环境,并特别讨论了如何通过会话保持用户登录状态。 ... [详细]
  • 深入解析ASP.NET中的HttpHandler、HttpModule与IHttpHandlerFactory
    本文探讨了ASP.NET页面生命周期中的关键组件——HttpHandler、HttpModule和IHttpHandlerFactory的工作原理及其应用场景。通过实例分析,帮助读者更好地理解和利用这些组件来优化Web应用程序。 ... [详细]
  • 远程访问用户 Kindle通过电子书实现控制
    介绍自2007年以来,亚马逊已售出数千万台Kindle,令人印象深刻。但这也意味着数以千万计的人可能会因为这些Kindle中的软件漏洞而被黑客入侵。他 ... [详细]
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • 本文探讨了在使用Apache Flink向Kafka发送数据过程中遇到的事务频繁失败问题,并提供了详细的解决方案,包括必要的配置调整和最佳实践。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
author-avatar
危亚丽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有