一、摘要
在上篇我们已经讲了远程访问对象,现在我们来看看他的内部是怎么实现的,本次远程对象访问用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一样使用固定方法和扩展方法,两种方式实现 如图
使用了固定的几个事件,他们分别是 DataPortal_Create DataPortal_Fetch DataPortal_Insert DataPortal_Update DataPortal_Delete 我们还提供了
3:Socket设计图
大家看到了在客户端和服务器端都有一个Socket数据门户,这个主要使用Socket来作为远程对象的访问。
在服务器端:直接启动Socket数据门户就是可以了,默认情况下使用本机做为服务器,目前还没有实现指定IP来作为服务器。
Socket主要做两件事情,一个负责连接管理,一个是负责业务处理。
server_OnAcceptClient 事件负责连接管理
server_OnReceiveData 事件负责业务处理
五、其他
在OHA中使用了SOCKET技术进行远程访问业务对象的方法。
1:加入日志。
2:分布式部署,多服务器部署方案。
3:可以随意指定一台电脑作为服务器。
4:使用者可以自己扩展。
5:加强设计模式学习,这个是对我自己说的。需要深入系统的学习Socket以完善这个设计。
6:希望高手们多提提意见哦。
作者:罗敏贵
邮箱:minguiluo@gmail.com
QQ群:34178394 建群 主要是寻找志同道合的人士一起学习和讨论自己的所学所思
出处:http://luomingui.cnblogs.com/
说明:专注于微软平台项目架构、熟悉设计模式、架构设计、敏捷个人和项目管理。现主要从事WinForm、ASP.NET、等方面的项目开发、架构、管理工作。文章为作者平时里的思考和练习,可能有不当之处,请博客园的园友们多提宝贵意见。
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
C#基础系列
摘要: 1.绑定数据this.lngCatalogID.DataSource=dt;//\绑到DataTable上this.lngCatalogID.DataTextField="strCatalogName";//前台看到的值,也就是CheckBoxList中显示出来的值this.lngCatalogID.DataValueField="lngCatalogID";//这个值直接在页面上是看不到的,但在源代码中可以看到this.lngCatalogID.DataBind();2.获取钩选的项foreach(ListItemliinlngCatalogID.It阅读全文
自从Vs2005起,Vs开发环境便自带了WebDev.WebServer,就是这个图标,它实际上是一个小型的Web服务器,专用于.net平台。大家经常调试程序它还是相当的方便,经过小小的配置就可以指向某个文件夹,使该文件夹成为网站目录已供访问。 WebDev.WebServer确实很轻便,同时它本身是.net程序,才2个文件,作为测试和演示环境是非常的好用,在xp也能很好的运行,Xp的IIS5实在是不方便用。 但是自带的WebDev.WebServer只能用于本机,那是因为MS对其进行了限制,因为作出它的目的,本身是为了Vs的开发更方便而已,但是很多测试也是基于网络的,至少你不希望别人测试一些网站,总得来用你的电脑吧。 WebDev.WebServer一共是两个文件,一个是WebDev.WebServer.exe,另一个是WebDev.WebHost.dl阅读全文
Remoting服务发布方式? 通过配置文件实现用应用程序发布 这个在第一篇就已经讲了。通过Windows服务发布。 通过IIS发布阅读全文
对于服务器对象不保留任何状态的SingleCall对象是不需要有对象租用的。只有需要保留状态的对象,无论是服务器激活的Singleton 还是客户端激活的对象才需要对象租用。 租约 生命周期 发起人(Sponsor) 下面是NET Remoting 为管理远程对象的生存期管理的架构: ILease 接口定义了很多用于管理对象生存期的属性: InitialLeaseTime。确定租用最初的有效期。 RenewOnCallTime。在每个方法调用后,更新此时间单元的租用。 SponsorshipTimeout。负责人通知租用过期后,Remoting 要等待的时间。 CurrentLeaseTime。距租用到期的时间(只读)。 续约的方法有3种: 1)隐式续约:当客户调用远程对象上的方法时,租约的隐式续借会自动进行。 2)显示续约:通过ILease接口的Renew()方法完阅读全文
什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式 。从微软的产品角度来看,可以说Remoting就是DCOM的一种升级,它改善了很多功能,并极好的融合到.Net平台下。Microsoft .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这也正是我们使用Remoting的原因。为什么呢?在Windows操作系统中,是将应用程序分离为单独的进程。这个进程形成了应用程序代码和数据周围的一道边界。如果不采用进程间通信(RPC)机制,则在一个进程中执行的代码就不能访问另一进程。这是一种操作系统对应用程序的保护机制。然而在某些情况下,我们需要跨过应用程序域,与另外的应用程序域进行通信,即穿越边界。阅读全文
什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式 。从微软的产品角度来看,可以说Remoting就是DCOM的一种升级,它改善了很多功能,并极好的融合到.Net平台下。Microsoft .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这也正是我们使用Remoting的原因。为什么呢?在Windows操作系统中,是将应用程序分离为单独的进程。这个进程形成了应用程序代码和数据周围的一道边界。如果不采用进程间通信(RPC)机制,则在一个进程中执行的代码就不能访问另一进程。这是一种操作系统对应用程序的保护机制。然而在某些情况下,我们需要跨过应用程序域,与另外的应用程序域进行通信,即穿越边界。阅读全文
摘要: 网上有不少用其他语言实现虚拟桌面的例子,但是用C#实现的倒是比较少,所以就封装了一个VirtualDesktop类,可以很方便的实现虚拟桌面。 实现虚拟桌面,主要是利用CreateDesktop、OpenDesktop和 SwitchDesktop这几个API函数,如果想在打开的桌面上运行程序的话还需要的就是CreateProcess函数,这些API函数的具体介绍可以到MSDN上查看,在程序中,这些API的封装都放在NativeMethods类中。 VirtualDesktop类都已经把重要的方法实现了,包括创建新和打开新桌面、切换到新桌面、关闭新桌面和在新桌面中运行程序,而且还提供了几个常用阅读全文
引用KProtectProcess.dll然后NKCore.dll 是c++的类库放在同级目录就可以了。开始调用KProtectProcess.KProcess.SelfProtection();结束调用KProtectProcess.KProcess.UnLoadProtection();这样用户就无法在任务管理器的 进程 中杀掉你的程序了。/Files/luomingui/进程防杀.rar阅读全文
using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace AppUtility{ ////// 获得汉字的拼音 ///static public class PinyinHelper { static private Hashtable _pinyinHash; #region static stor. static PinyinHelper() { _pinyinHash = new阅读全文
转载笔记:DropDownList无限级分类(灵活控制显示形式) 调用方式:AddTree("0", this.RadTreeView2.Nodes);二次改造做成一个通用的类 调用 如: new DrpGradingList("select * from dbo.NT_Clcs_ClientType ", "Cc_Name", "Cc_ID", defValue).BindDrpClass(ddl); 改造过的函数 BindDrpClass(editparentid);}阅读全文
Silverlight入门 那么,你如何开始使用Silverlight?第一,花一些时间去找一些讲解 Silverlight 的网站。这些网站包含很多 Silverlight 教程和SDK(包含帮助文档和例子),以及丰富的 Silverlight 视频教程。你应该下载Silverlight SDK,因为它含有大量的帮助文档和快速入门实例,这有利于降低学习难度,并让你迅速了解对XAML和Silverlight概念。阅读全文





浙公网安备 33010602011771号