一:缓存服务类型与方法
客户端请求的时候
为了方便的知道请求的类型与类型所包含的方法
我们把服务类型和方法缓存到静态字典中了
代码如下
二:托管HTTP请求
在webconfig中增加module以托管请求
托管请求对应的类的代码如下
通过这行代码
Type serviceType = WCFRouteTable.GetWCFType(relativeAddress);
用户只要请求如下路径
http://localhost/RTMDemo.Host/RTMDemo.Host.WCF.MenuService
就会得到MenuService的类型
然后把服务类型传给指定的处理程序
三:处理请求
在WCFHandler类中最重要的莫过于
处理请求的方法
代码如下
注意:首先说这段代码还有很大的优化空间;也未经过严格的测试;但思路基本就是这样的
处理请求主要做了如下几步工作:
1.
先根据请求POST上来的信息得到准备执行的方法
var MethodKey = context.Request["MethodKey"];
var minfo = WCFRouteTable.GetMethodInfo(MethodKey);
MethodInvoker稍后再讲
2.
按顺序取出了方法的参数,并用DataContractJsonSerializer反序列化成对象
方法参数都是用JSON字符串传递的
3.
通过反射创建了服务的实例
然后调用该实例的方法
得到方法的返回值,并序列化成JSON字符串
4.
把返回值以JSON的形式输出给客户端
四:其他
1.
MethodInvoker是用的老赵的类;具体是哪篇文章,我已经找不到了。
2.
服务类和数据访问的类没有什么特殊的
我这里只公布一个服务的类
MenuDa就是数据访问类了
很普通,就不在公布代码了
3.
完成这些工作之后
我们只要在客户端构造好表单
然后把表单POST到指定的路径
就能完成服务的访问了!
---------------------------------------------------------------
喜欢的话~请大家推荐我的文章
谢谢~
我真的很需要你们的支持
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2010-01-05 汇编语言学习笔记-创建最基本的windows窗体
2009-01-05 全文索引