LiteORM学习七:远程对象访问Socket篇

一、摘要

       在上篇我们已经讲了远程访问对象,现在我们来看看他的内部是怎么实现的,本次远程对象访问用Socket实现。

二、本文大纲

       a、摘要。

       b、本文大纲。

       c、回顾。

       d、Socket设计。

       e、其他。

三、回顾

1:在上篇LiteORM学习六:远程对象中我们说到在实体类上加入DataEntity就可以在网络中访问了,那具体是有什么技术呢,有那几种实现方式.WebSerivce,wcf,socket,Remoting

2:在上篇LiteORM学习六:远程对象中我们只说到了如何使用远程对象。

四、Socket设计

   在OHA中使用了SOCKET技术进行远程访问业务对象的方法。

1:在上篇中我们说到在实体类上加入DataEntity就可以在网络中访问了,在客户端和服务器端都有一个SocketPortal 这里面包含了远程访问的方法和属性。

2:  在OHA中也和Csla一样使用固定方法和扩展方法,两种方式实现 如图

image

使用了固定的几个事件,他们分别是 DataPortal_Create DataPortal_Fetch DataPortal_Insert  DataPortal_Update DataPortal_Delete 我们还提供了

image 扩展接口,使用者可以实现这个接口就可以自定义事件。

3:Socket设计图

image

大家看到了在客户端和服务器端都有一个Socket数据门户,这个主要使用Socket来作为远程对象的访问。

在服务器端:直接启动Socket数据门户就是可以了,默认情况下使用本机做为服务器,目前还没有实现指定IP来作为服务器

image

Socket主要做两件事情,一个负责连接管理,一个是负责业务处理。

image

server_OnAcceptClient 事件负责连接管理

server_OnReceiveData 事件负责业务处理

五、其他

   在OHA中使用了SOCKET技术进行远程访问业务对象的方法。

  1:加入日志。

  2:分布式部署,多服务器部署方案。

  3:可以随意指定一台电脑作为服务器。

  4:使用者可以自己扩展。

  5:加强设计模式学习,这个是对我自己说的。需要深入系统的学习Socket以完善这个设计。

  6:希望高手们多提提意见哦。

原文地址:https://www.cnblogs.com/luomingui/p/2346345.html