一个基于Winform+Java WebService的实现
假如有这样一种需求:面向固定客户的网上购物系统,你会怎样设计这样的系统呢?
很显然,B/S结构已经不适用了。只要是通过浏览器访问的网页,只要知道URL,任何人都可以访问,就没有固定客户的限制了。
那么,C/S结构呢?C/S结构确实很适合局域网,但是,不要忘了,我们的客户可能会走遍地球的各个角落。(当然,不能连接Internet的地方我们不予考虑)
那我们考虑这样的结构:Winform(.Net)+WebService(Java)。
WebService的协议.Net和Java都是支持的,但是有一个问题:这两者之间可以传递基本类型,但是不能传递引用类型。
没有关系,只要可以传递字符串,那就代表一切都可以传递,最终的解决方案如下:
客户端发送请求的时候,先把对象序列化为XML文件,将内容发送到服务器端,然后服务器端将XML文件反序列化为一个对象。服务器端返回相应的过程也是如此。
到了这里,最大障碍都已经解决了,先画出大概的流程图:
1)可以看出来,客户端和服务器交互利用的是XML,对象和XML相互转换利用的是一个开源的组件,可以参考http://java-cs-bridge.sourceforge.net/。
2)服务器端发布WebService利用的是Axis,但是我们对其进行了封装,所有的客户端请求都只会调用一个Service,传递到这个Service的数据包括它的对象以及具体需要执行的Service。
3)服务器端的设计模仿了Struts,每个Service Action都只调用Logic,由Logic执行业务逻辑。
4)数据库访问我们封装了dbutils,虽然不是ORM,但是却可以有很灵活的SQL语句。
5)还有,整个系统运行过程中只有查询,只是在用户最后进行完成或者提交操作的时候,统一对数据库进行更新操作,这样做保持了数据的统一性,但同时也带来了一些隐患:如果运行到最后,网络断了的话,之前的操作都会没有被保存到数据库中。
这个设计无论是服务器,还是数据库,都是分布式、可插拔的,非常灵活。
我所能想到的也就这样子了,各位有什么建议,或者还有什么可以改进的,也希望不吝赐教。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构