实例开发

  一个家用电器连锁店设有一个总部和许多分店,总部和分店以及各分店之间经常需要进行各种信息的查询(如:商品当日价目表、各店销售状况和库存信息等),对此组织机构建立分布式数据库查询系统,可实现总部和各店信息的共享,便于统一管理。

  3.1 系统设计

  3.1.1系统结构图

  系统结构如图2所示:

图2 系统结构图

  总部和各分店都配置了一台具有固定IP的服务器,其它电脑通过集线器与服务器相连,总部和各分店的服务器通过通信网络联接起来。 网管联盟www.bitsCN.com

  3.1.2 系统实现步骤

网管网bitsCN_com

  系统实现分为三个主要步骤。首先,为总部和各分店设计数据库。由于数据量较大,故采用SQL Server为每个分店创建销售和库存数据库,同时为总部创建员工数据库、整个连锁店的存货数据库、信用卡客户数据库以及供应商信息数据库等。其次,需要建立一个提供数据库服务(DbServer)的动态链接库(dll),将查询时所要用到的一些服务(如:远程对象的发布和获取等)和函数(如:本地异地数据表的查询、数据表的远程创建和删除、表间的连接和合并等)置入该dll中,各分店都需要使用这个dll,以便查询时对一些服务和函数进行调用。最后,根据实际需要开发客户端查询界面。 网管联盟www.bitsCN.com

  3.2系统实现的关键技术

  3.2.1 远程对象的发布与获取

  系统运行后所要做的第一个工作是发布本地的远程对象并获取其它各店所发布的远程对象。发布远程对象时,首先要设置一个网络端口号,然后创建并注册一个通道,最后发布该服务器端的激活对象。其它场地的服务器根据IP地址和网络端口号即可方便地获取所发布的远程对象。实现远程对象发布和获取的关键代码如下:

  远程对象的发布:

54com.cn

//创建一个通道实例,port为指定的网络端口号 TcpChannel MyChannel= new TcpChannel (Int32.Parse(port)); //注册通道 ChannelServices.RegisterChannel(MyChannel); //发布该服务器端激活对象 RemotingConfiguration.RegisterWellKnownServiceType( typeof ( DbServer ), "STORE", WellKnownObjectMode.Singleton); 远程对象的获取: //根据IP地址和端口号获取相应的远程对象 try {myDbServer=(DbServer)Activator.GetObject(typeof(DbServer),"tcp://"+ip+":"+p+"/STORE"); } //捕捉异常 catch( NullReferenceException nullExp ) {MessageBox.Show( "指定的url地址不可到达 " + nullExp.Message );} catch( RemotingException remExp ) {MessageBox.Show( "指定获得的对象定义不对" + remExp.Message );} 网管网bitsCN_com

  3.2.2数据库的访问

  通过ADO.Net访问数据库,可以方便地连接数据库,将数据源中的数据导入DataSet对象中,在DataSet对象中可对数据表进行各种操作,而且DataSet对象本身也可远程传递。这为开发分布式数据库系统带来极大方便。实现数据库访问的关键代码如下所示:

//建立数据库的连接 string SqlConn = "Initial Catalog=Store;Data Source=Localhost;Userid=sa;Password=;"; SqlConnection Conn= new SqlConnection (SqlConn); Conn.Open();//打开数据库 //将数据源中的数据导入到数据集对象 try{ DataSet ds = new DataSet(); DataTable dt=new DataTable("Result"); SqlDataAdapter adapter=new SqlDataAdapter(); SqlCommand mySqlDataSetCmd =new SqlCommand (CmdString,Conn);//CmdString为要执行的命令 adapter.SelectCommand= mySqlDataSetCmd; adapter.Fill(dt); ds.Tables.Add(dt); } finally { Conn.Close();//关闭数据库的连接}

  3.2.3 查询 com

  分布式数据库系统中的查询一般分为三类:本地查询、远程查询和联合查询。本地查询和集中式数据库的查询没什么区别;对于远程查询,只要获取远程对象后,调用查询函数,即可方便地实现;最复杂的是联合查询,涉及到多场地之间数据的查询、表的远程创建、传递、连接、合并等技术。下面以实例介绍联合查询的实现。

  第二连锁店要查询离其较近的第三、第四连锁店中所有北京的供应商所供应的空调的库存信息以便调货,可通过以下步骤实现。首先,获取总部以及第三、第四连锁店所发布的远程对象。接着,通过远程对象在总部创建一临时数据表t1,将查询到的所有北京的供应商信息存放在t1表中(各分店只有供应商名,并不知其所在地,只有总部才有供应商的详细信息),再将t1表保存到第三和第四连锁店。然后让t1表分别与两店的库存表作连接,找出所有北京供应商所供应的空调库存信息(如空调名称、型号、个数、价格等信息),并将连接结果t2和t3数据表返回到第二连锁店。最后对t2和t3两表进行合并,并使用DataGrid控件显示出来。上述实现中,包含了不同场地之间数据表的复制、传递、连接等,所用到的一些函数(如:远程创建数据表、表与表间的远程连接、合并等)都放在dll中,可以方便地调用。

转载于:https://www.cnblogs.com/shanfeng/p/3965198.html

.NET Remoting 分布式开发实例思想(转)相关推荐

  1. WCF分布式开发步步为赢(1):WCF分布式框架基础概念

     众所周知,系统间的低耦合一直是大型企业应用系统集成追寻的目标,SOA面向服务架构的出现为我们的如何利用现有企业系统资源进行企业ERP系统设计和实现提供了重要的参考原则.SOA如此炙手可热,各大厂商都 ...

  2. 跟我一起学WCF(2)——利用.NET Remoting技术开发分布式应用

    一.引言 上一篇博文分享了消息队列(MSMQ)技术来实现分布式应用,在这篇博文继续分享下.NET平台下另一种分布式技术--.NET Remoting. 二..NET Remoting 介绍 2.1 . ...

  3. 分布式开发必须了解的Zookeeper的Leader选举机制(源码解析)

    分布式开发必须知道的Zookeeper知识及其的Leader选举机制(ZAB原子广播协议)   ZooKeeper是Hadoop下的一个子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括 ...

  4. JAVA :RESTLET开发实例(一)基于JAX-RS的REST服务

    本文转自http://www.cnblogs.com/redmondfan/p/3209290.html,所有权力归原作者所有. RESTLET介绍 Restlet项目为"建立REST概念与 ...

  5. WCF分布式开发必备知识(4):Web Service(转)

    今天继续我们的WCF分布式开发必备知识系列文章的第4节:Web Service.前3节我们分别介绍了MSMQ消息队列/.Net Remoting/Enterprise Services三个相关的技术. ...

  6. python全栈工程师 pdf_python全栈工程师项目开发实例实战入门教程百度云

    python全栈工程师项目开发实例实战入门教程百度云 课程目录: 开学典礼 pycharm的基本使用 Python基本语法 数值类型数据及运算 字符串的基本操作 字符串的常用方法 列表的基本使用 列表 ...

  7. 想做分布式开发,需要懂哪些技术?

    [阅读建议]文章多处链接别处详细文章,客观莫急建议先把文章总体阅读完毕后,再点进去慢慢品味具体细节点,阅读本文大概需要10分2秒. 目录 一.前言 二.分布式篇 1 这个技术框架,它是什么东西? 2 ...

  8. 一文理解分布式开发中的服务治理

    我们在分布式开发中经常听到的一个词就是 "服务治理". 在理解"服务治理"的概念之前让我们先理解什么是分布式系统,分布式系统之间如何通过RPC(Remote P ...

  9. WCF分布式开发步步为赢(15):错误契约(FaultContract)与异常处理(ExceptionHandle)

    今天学习WCF分布式开发步步为赢系列的15节:错误契约(FaultContract)与异常处理(ExceptionHandle).本节内容作为WCF分布式开发的一个重要知识点,无论在学习还是项目中都应 ...

  10. WCF分布式开发步步为赢(0):WCF学习经验分享,如何更好地学习WCF?

    WCF分布式开发学习,应该从哪里开始? 微软WCF Web服务 Web API学习群 339444457 微软ASP.NET MVC 4 Web编程群     44206115 学习WCF是不是就不需 ...

最新文章

  1. 公有变量java_Java反射机制(只可以访问公有的方法或者变量)
  2. ios 如何对UITableView中的内容进行排序
  3. python—unittest—数据驱动详细讲解(ddt)
  4. 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系
  5. JUC学习笔记及拓展
  6. 分别用matlab和python计算物品相似度矩阵(Jaccard系数
  7. python线程问题_Python线程问题
  8. 给自己的Blog 上添加定制的搜索引擎
  9. 5.[BX]和Loop指令
  10. IoU,ROI 和 ROC,AUC区分
  11. Python:OpenCV的默认优化
  12. cesium获取点击内容信息_Cesium获取鼠标点击位置(PickPosition)
  13. c++11 多线程编程(一)------初始
  14. javascript || 简写 if
  15. 全网首发:JDK绘制文字:一、绘制流程
  16. 初中计算机课件flash,初中信息技术FLASH基础知识-PPT课件
  17. 软件工程:数据流图和结构图怎么画?
  18. 【图像压缩】多层超先验模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》
  19. 华为天才少年稚晖君做了一把模块化机械键盘,引起极客圈地震,网友:这才是真正的客制化...
  20. 情缘难舍 愿为一叶扁舟

热门文章

  1. SourceTree 密码填写正确但是拉取显示密码错误解决
  2. 第490篇--Accessing the Domain info is denied in IIS.
  3. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第5节 线程池_2_线程池的代码实现...
  4. 简单的树遍历枚举器v0.2-挑战一个程序员到底能多懒- 添加广度优先遍历
  5. Centos7忘记mysql的root用户密码
  6. HTTP和HTTPS笔记
  7. Hadoop1重新格式化HDFS
  8. nginx root alias 文件路径配置
  9. ViewModel中C# Property自动添加OnPropertyChanged处理的小工具, 以及相应Python知识点...
  10. Office编程-RPC服务器不可用