.NET开发WinForm(C/S)项目整合三种SOA服务访问(直连、WCF、WebAPI)模式

news/2024/12/2 14:09:29/文章来源:https://www.cnblogs.com/huyong/p/18581302

1、介绍

在软件开发领域,尤其是企业级应用开发中,灵活性、开放性、可扩展性往往是项目成功的关键因素。对于C/S项目,如何高效地与后端数据库进行交互,以及如何提供多样化的服务访问方式,是开发者需要深入考虑的问题。目前主流的方式就三种:数据库直连、WCF模式、WebAPI模式,三这种方式都有其各自的特点,可根据实际项目需求选择其中一种或多种。

RDIFramwork.NET C/S敏捷开发框架全新版本不仅保留了一直以来的直连与WCF模式式(WCF又可以三种方式寄存:Windows服务方式寄存,WinForm形式寄存、IIS形式寄存),还提供了一种全新的WebAPI访问的方式。三种方式不仅可以一键切换,还可以混合使用,同时支持.NET Framework与.NET 6+,为构建高效又灵活的软件提供了强有力的支撑。

要更详细的了解直连与WCF方式可以参考这篇文章:RDIFramework.NET框架SOA解决方案(集Windows服务、WinForm形式与IIS形式发布)-分布式应用,本文主要针对全新的WebAPI方式做介绍。更多详情等你解锁!

.NET敏捷开发框架-RDIFramework.NET V6.1发布

全新RDIFramework.NET C/S敏捷开发框架发布,支持.NET6+Framework双引擎,降低开发成本,提高产品质量,提升用户体验与开发团队稳定性,做软件就选RDIFramework.NET敏捷开发框架。

2、使用方法

使用方式非常简单,只需在配置文件中改变ServiceAccessMode的值,同时根据设置的服务访问方式配置好服务对应的地址(WebHostUrl)。

<!-- 服务访问方式,取值:RDIFramework.ServiceDirect、RDIFramework.ServiceWCF、RDIFramework.ServiceAPI -->
<add key="ServiceAccessMode" value="RDIFramework.ServiceAPI"/>
<!--WebHostUrl取值依赖说Service,Service取值为:RDIFramework.ServiceWCF时对应的是WCF的地址;Service取值为:RDIFramework.ServiceAPI时对应的是WebAPI的地址-->
<!--本地测试:WCF地址默认:http://localhost:8091/;WebAPI的地址默认:http://localhost:58688/-->
<add key="WebHostUrl" value="http://localhost:58688/" />

配置项ServiceAccessMode支持三种访问模式,分别是:

  • RDIFramework.ServiceDirect:直连模式
  • RDIFramework.ServiceWCF:WCF访问模式(又可以三种方式寄存:Windows服务方式寄存,WinForm形式寄存、IIS形式寄存)
  • RDIFramework.ServiceAPI:WebAPI访问模式

当ServiceAccessMode取值为:RDIFramework.ServiceWCF或RDIFramework.ServiceAPI时,需要配置WebHostUrl,以指定WCF或WebAPI的地址。

2.1、WebAPI模式访问

要以WebAPI模式来做服务访问,配置项ServiceAccessMode取值为:RDIFramework.ServiceAPI,同时启动我们的WebAPI服务端。

WebAPI服务端

通过WebAPI方式最大的好处就是:支持多平台访问‌,Web API基于HTTP协议,可以在不同操作系统和设备上进行通信,因此可以实现跨平台的应用程序开发。客户端可以是Web应用、移动应用或桌面应用,极大地方便了多平台的开发和维护‌。同时数据以JSON方式提供,方便各异构系统间数据的交互。

WebAPI方式访问,当Token过期,框架会自动续期。启动好服务端后,启动客户端,就会自动以WebAPI的方式来运行,如下图所示。

框架以WebAPI方式运行

2.2、WCF模式访问

WCF是.NET最早构建高安全可靠性服务的技术,并且实现跨平台继承和平滑地交互。在.NET的WinForm领域应用广泛,咱们的框架同样支持WCF的方式来进行服务访问,让用户多一种选择。

要以WCF模式来做服务访问,配置项ServiceAccessMode取值为:RDIFramework.ServiceWCF,同时启动我们的WCF服务端。

WCF服务端

产品管理svc服务

以WCF服务模式访问运行效果。

WCF服务模式访问运行效果

2.3、直连模式访问

直连就是直接连接数据库进行访问,配置项ServiceAccessMode取值为:RDIFramework.ServiceDirect,访问效果与前两种方式一直。作为标准三层架构的连接方式,适用中小企业内部数据管理应用系统开发的开发。最主要的优势就是高效开发,架构简单,易上手开发、维护和部署。

3、技术要点

调用自动适配

不管是用直连、WCF、还是WebAPI模式,在服务的调用上保持一致,做到了开发的最简化处理。三种方式全使用CallService进行调用,如下是调用我们案例模块的订单管理服务。

var output = CallService.GetExampleModuleService<ICaseOrderService>().GetOrderListByPage(this.UserInfo, ucPagerOrder.ToPageInput(keyword));

如下是调用我们框架模块的服务。

var itemList = CallService.GetFrameworkService<IItemsService>().GetList(UserInfo);

无论是直连、WCF还是WebAPI模式,CallService中都自动做了适配,让调用更加的简单,且三种方式还可以组合使用,强大、灵活、自由。同时整个平台全源码提供,让你无后顾之忧!

4、参考文章

RDIFramework.NET框架SOA解决方案(集Windows服务、WinForm形式与IIS形式发布)-分布式应用

RDIFramework.NET CS敏捷开发框架 V6.1发布(.NET6+、Framework双引擎、全网唯一)

可前往下面的地址了解详情。

http://www.guosisoft.com/product/winform

http://www.rdiframework.net/product/winform

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/845417.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 之查询条件!=或者存在问题,会被轻易忽略而且影响查询结果

mysql数据库查询,我们再使用sql条件时会经常使用!=(<>),但使用!=之后,这个字段对应的为空的值不会查出来。所以建议!=长春与is null同时用 查询结果测试如下: 我们先查询满足条件的数据;id上下相同,同时此id的对应的paln_status查询如图是空的: 咱们再来查询总…

Postman 安装与汉化超详细步骤全解析教程

下载安装包 首先,我们需要获取 Postman 的安装包。为了方便,链接提供了安装包跟汉化包 点击获取postman安装及汉化包 为什么要提供安装包跟汉化包? 汉化包和postman的版本必须是一致的,如果不一致就会出现汉化后无法打开postman的问题; 注意:如果想要汉化的就不能使用最新…

文档比对新玩法:从文本细节到逻辑洞察

在学术研究和项目管理中,文档的版本对比和差异检查往往是个被低估却至关重要的环节。尤其是在跨学科合作或大型团队中,不同版本的文档往往在细节上存在微妙变化,而这些变化可能直接影响研究结论、策略决策甚至是整个项目的方向。 传统的文档对比工具往往局限于纯文本比对,这…

有效管理win11系统开机启动项

平时如果有你不想随着系统开机就启动的软件,可以通过下面的方式进行设置。个人推荐使用这个办法 1.首先点击开始菜单2.点击“设置”3.再点击左边栏“应用”选项4.然后点击其中的“启动”设置5.选择开关按钮,即可设置启动或禁用

ai大模型流式输出------基于SSE协议的长连接实现ax

传统的http1.0请求开发,已经满足了我们日常的web开发。一般请求就像下图这样子,客服端发起一个请求(触发),服务端做出一个响应(动作): 有时会有诸如实时刷新,实时显示的场景,我们往往是客户端定时发起请求,不断的尝试获取最新的数据。但是每次请求都会创建并释放一个…

高级语言程序设计课程第十次个人作业

2024高级语言程序设计:https://edu.cnblogs.com/campus/fzu/2024C 高级语言程序设计课程第十次个人作业:https://edu.cnblogs.com/campus/fzu/2024C/homework/13314 学号:102400226 姓名:石华波 本次作业所用到的"Source.txt"文本文件均为下图文件://1202.1 #include…

也许,这就是一个新的开始吧……

准备参加招警考试了,虽然我预测当前自己的各项指标什么的基本不合格,但是我愿意尝试一把,愿上岸成功。加油吧,青中骚年。 【敬畏能量 敬畏自然】

开源工具能让项目管理更高效?2024年开源管理软件大揭秘!

一、开源项目管理的重要性在当今的项目管理领域,开源项目管理具有至关重要的意义。它鼓励创新,为开发者提供了一个开放的平台,让不同背景的人能够共同参与,分享各自的想法和经验,从而推动项目不断创新发展。 开源项目管理保证透明,项目的代码和流程对所有人可见,这使得项…

Vaccine

Vaccine 1. 扫描 上来直接扫到ftp有一个backup.zip以及ssh和80端口将backup.zip下载下来然后发现压缩包有密码2. 访问 访问80端口看看还有一些信息,apache+PHP,Linux系统首先,对于登录界面,先排除弱口令和SQL注入,然后看目录扫描结果没什么内容,那只能回头看backup.zip,…

十、Spring Boot集成Spring Security之HTTP请求授权

Spring Security最新基于HTTP请求授权配置详解:工作原理,授权配置,异常处理,测试接口,案例源码目录前言一、HTTP请求授权工作原理二、HTTP请求授权配置1、添加用户权限2、配置ExceptionTranslationFilter自定义异常处理器3、HTTP请求授权配置三、测试接口1、测试类2、测试…

博客园主页皮肤设置 - 第三版

基本设置侧边栏 <script type="text/javascript">window.cnblogsConfig = {info: {name: A-刘晨阳, // 用户名startDate: 2021-10-14, // 入园时间,年-月-日。入园时间查看方法:鼠标停留园龄时间上,会显示入园时间avatar: https://img2024.cnblogs.com/blog…

11.27实验 25:访问者模式

[实验任务一]:打包员 在我们课堂上的“购物车”的例子中,增加一个新的访问者:打包员,负责对购物车中货物装包。 实验要求: 1. 画出对应的类图;2. 提交源代码; #include <iostream> #include <string> #include <list> using namespace std;class Prod…