三层结构:
  1)数据层:MSSQL2005;
  2)业务层:程序服务器,根据SQL语句命令从数据库中提取数据;
  3)用户层:客户端与应用程序业务层关联,通过用户界面表示出来
网上登录:
  1、IP地址 连接服务器。
  2、MSSQL的用户名及密码(与MSSQL建立联系)
  3、软件设置的登录授权,用户及密码,进入数据库。我想学习一下使用DELPHI自带的控件组

解决方案 »

  1.   

    我原程序模式:    数据库+客户端程序
      通过IP+端口设置在局域网网上测试是没有问题的我现在想将程序再次修改成三层方式
      数据库+应用程序服务器+客户端程序
      想将程序在“英特网”也能正常运行,也就是只要是
    有我的客户端程序,并设定“域名”或者“IP”+“端口号”
      

  2.   

    局域网都已经实现了,那表示你已经掌握了,連接外网已经不是程序员该做的事了数据库+应用程序服务器都是在内网,只要在防火墙上做端口映射到內网的IP
    外网客户端的IP改成公网的IP(也可以用域名),就可以连接了防火墙设置是网管该做的事了,如果没有固定的IP,可以申请一个域名,然后作动态解析,有收费的解析
    也有免费的
      

  3.   

    Delphi中MIDAS到底是什么呢?和他相关组件是什么呢? MIDAS(Multitiered Distributed Application Services)多层分布式应用服务
    Delphi所提出的Multi-Tier结构是把原来的Two-Tier前台应用程序内的dbExpress,ADO,BDE,SQL Link,DataMoule,拿到另外一台NT服务器(就是所谓的应用程序服务器),而前台程序只剩下一 。 个可执行文件及MIDAS.DLL,而移到NT服务器上的DataMoule则变成一个COM程序(Remote DataModule).
    注:前台一定要把MIDAS.DLL发布到系统目录下.
    (1)前台程序会通过调用应用程序服务器提供的方法(接口)提出一个请求
    应用程序服务器会响应这个请求,传送一个相应的SQL命令到后台数据库,而后台数据库会把执行SQL命令产生的DataSet返回给应用程序服务器.
    注:Delphi提供了Type Library来帮助应用程序服务器定义COM方法(接口)
    (2)NT服务器上的COM程序是通过中间软件(dbExpress,ADO,BDE,SQL Link)传送SQL到后台数据库.
    当应用程序服务器要把读取到的DataSet传送给前台时,就必须利用DCOM的机制来进行.Delphi提供的TDataSetProvider组件就会把读取到的DataSet压缩并且分割成一段一段的数据包,通 .. 过DCOM或TCP/IP传给前台.
    注:Delphi提供了RemoteDataModule向导来帮你产生COM程序的结构.
    由于Delphi的程序具有传送DataSet的特殊机制,所以Delphi也实现了一个接口叫做IProvider(即TDataSetProvider),来帮助应用程序服务器上的COM程序发送DataSet数据.
    (3)前台程序与NT服务器上的COM程序是通过DCOM的机制互相沟通
    前台的应用程序是通过MIDAS.DLL和应用程序服务器相互沟通,前台的MIDAS.DLL会把接收到的应用程序服务器发过来的数据包再还原成DataSet,丢给前台程序中的TClientDataSet组件.
    注:前台程序必须提供相应的TClientData组件来和应用程序服务器上的每个IProvider(即TDataSetProvider)对应.用户修改前台数据时,修改的只是Cache(缓存)在前台的Dataset,最后 . 要通过TClientData.ApplyUpdate方法来把前台变动的数据写回到后台数据库中. . 
      

  4.   

    (二)创建并注册MIDAS应用程序服务
        Delphi中如何创建并注册MIDAS应用程序服务器COM程序?  
        Delphi提供一些向导(如:RemoteDataModule,Automation Object,TypeLibrary)来自动产生COM程序的结构.
        (法1)创建一个普通应用程序服务器
             新建一个普通工程,然后通过New->Other->Multitier->Remote DataModule,来自动新建一个COM服务器结构.
             注: 要注册创建的MIDAS应用服务器,可以运行应用程序或者使用/REGSERVER开关运行程序.
        (法2)创建一个NTService类型的应用程序服务器,这样就无需登陆系统也能启动应用程序服务器,避免断电重启带来的无法访问应用程序服务器的问题.
             新建一个NTService工程,然后通过New->Other->Multitier->Remote Data Module,来自动新建一个COM服务器结构.
             注: 要注册创建的NTService服务器,通过/install开关来运行程序.
         注: MIDAS程序需要客户端注册MIDAS.DLL和STDVCL40.DLL动态库.      
       
    (三)MIDAS应用程序COM服务器实例化模型种类
    (1)Internal Instance
          创建一个In-Process的COM程序,即DLL服务器.
       (2)Single Instance
          如果每个客户程序都运行服务器程序的一个实例,则使用该模型.就是每个连上线的前台程序,在服务器上都会有一个对应的应用程序服务器被运行.因此每个前台发出来的查询都会有各自独立Process的应用程序来处理,根本无所谓排队的问题.但是它会比较占用系统资源,影响服务器整体的运行效率.
       (3)Multiple Instance
          如果客户程序共享服务器程序,则使用该模型.就是一个应用程序服务器可以同时处理好几个前台程序的链接,以技术的层面来解释就是所有前台程序可以共享单一Process的应用程序服务器.该模式的最大好处是,激活及运行的效率较快,比较不会耗用服务器太多系统资源,而且管理上比较方便.但是它隐藏着一个不具备多任务处理的问题,如果一个前台用户发出了一个查询请求,而且这个查询要求产生的结果可能多大数MB,这时候,其他在线前台用户发出的查询要求都必须等待之前的查询要求运行完并得到相应之后,才得以继续运行.这可能会耗用许多时间,而且,如果一旦某个前台程序的查询发生错误,那么其他在后面排队的查询请求将会跟着死掉.
        注:那么到底采用哪种模式来创建应用程序服务器?答案是:按系统需求而定.简单的说就是,你可以创建两组应用程序服务器,一组是采用Multiple Instance模式,另一组采用Single Instance模式,而你必须把程序的类型分为两种,一种是查询数据量较小或是比较不重要的写入操作,另一种查询数据量较大或是重要数据的写入操作.如此一来,你的前台程序就可以放置两个TDCOMConection来各自连上两个不同模式的应用程序服务器,进行不同性质的工作. 
    (四)MIDAS线程模型
       (1)Single
          代表所产生的In-Process COM程序是一个单一线程的程序,一次只能接收一个client发出来的request,由于是循环的操作,所以不会有多任务同时进行的问题,你的COM程序不需要编写多任务处理的部分.
       (2)Apartment
          代表每一个Remote Data Module所产生的instance一次只能处理一个前台发出的request,可是如果同时创建多个In-Process COM程序,那么每个COM程序都会有一个线程来处理,每个instance所处理的数据是安全的,可是你必须防止一些共享变量的冲突.
       (3)Free
          该线程模式可以让Remote Data Module产生的每个instance通过各自的线程处理每个前台发出的request,所以Remote Data Moudle本身必须采用多线程的程序写法,你必须保护每个instance所处理的数据区域不会互相冲突..当使用ADO数据集时,推荐使用Free模型.
       (4)Both
          与Free相同,除了所有对应前台界面的callback是连续的以外.
       (5)Neutral
          此种模式允许多个前台程序在同一个时间以不同的线程来调用Remote Data Module,不过COM对象必须确保不会有前台程序调用的冲突,你要确定每个线程在访问全局变量及实例数据时,不会发生任何冲突.这个模式只适用在COM+.
      

  5.   

    (五)MIDAS前台程序连接到后台应用程序服务器
       (1)SocketConnection:
          只要前台计算机安装有TCP/IP的通信协议即可,但是Application Server上必须要有对应的SocketServer程序scktsrvr.exe
       (2)DCOMConnection:
          如果前台计算机系统是Win95,则必须安装DCOM form Win95(去Microsoft网站下载),如果系统是Win98,Me,NT等,则已经包含DCOM Library
       (3)Corbaconnection:
          必须安装Visic Broker即Delphi专用的Corba ORB文件,这些文件名称分别是:Orbpas.dll,cw3240mt.dllorb_r.dll,请把这些文件复制到前台计算机的的系统目录下.同样的Application Server上也不需安装.
       (4)WebConnection:
          只要前台计算机安装有TCP/IP协议即可,但是Application Server上必须安装一套Web Server,并且必须把httpsrvr.dll文件安装到Web Server虚拟目录下,再把WebConnection的属性URL指向此虚拟路径即可.
        注:不论采取何种Connection组件,都会用到Midas.dll文件,所以打包时一定要把它分发到前台计算机的系统目录下去.
      
    (六)MIDAS如何控制前台权限
    (1)原理:
          前台程序与应用程序服务器之间是通过DCOM机制的运行来传送数据,DCOM对象的安全机制是以Windows NT的安全模块为构建基础,换句话说,要设置某个用户是否有远程运行DCOM对象的能力,最基本的条件是这个用户一定要被加入Windows NT的用户组内,如此才有资格连上Windows NT Server,并进而依据DCOM的权限来决定是否能够运行指定的应用程序服务器.
       (2)工具:
          在系统目录下有一个DCOMCNFG.EXE工具,可以用来设置应用程序服务器的运行权限.
       (3)自己通过程序控制(也许更可取,避免了配置人员的配置复杂性)
      

  6.   

    呵呵   互联网直连SQL  你很强壮  你很伟大  你很V5
      

  7.   

    我只会RO,也只感觉RO开发一般的三层确实简单,灵活其它的都不会
      

  8.   

    我只会RO,也只感觉RO开发一般的三层确实简单,灵活其它的都不会
      

  9.   

    菜鸟表示看了很深的知识完全没有办法消化但是看完之后,突然对于自己系统的可行性表示了换衣,想向您请教一下,我的系统希望实现的是能够通过互联网访问服务器的相关数据,并进行一些操作,我使用的是IntreWeb,能实现吗?
      

  10.   

    特别简单的三层制作如下:
    建立应用服务嚣:
    1.File->New->Application建立一个Project1;然后File->New->Multilier->Remote Data Module输入一个名称如MyApp,建立远程连接的数据模块
    2.ADOConnection1+ADOTable1+DataSetProvider1各1个
    3.连接好ADOConnection1的Connectionstring,ADOTable1的Connection选择ADOConnection1;ADOTable1的TableName任选择一個表,DataSetProvider1的Dataset选择ADOTable1
    5.运行D7和Bin目录下面的scktsrvr.exe,要开启防火墙允许通信,端口默认是211
    6.运行Project1建立客户端:
    1.File->New->Application建立一个Project2;
    2.SocketConnection1+ClientDataSet1+DataSource1+DBGrid1各1个
    3.SocketConnection1的Host填入服务嚣IP,如:192.168.0.100;此时ServerName应该可以选择Project1.MyApp了
    4.ClientDataSet1的RemoteServer选SocketConnection1,此时ProviderName可以看到Project1中的DataSetProvider1
    5.DataSource1的DataSet选择ClientDataSet1,DBGrid1的DateSource选择DataSource1
    6.设置ClientDataSet1的Active为True;DBGrid1成功看到数据,scktsrvr.exe里面也相应的看到了连接1个简单的3层连接就么诞生了!!!
    ==============================================
    怎么样看懂了吧,这个只能是显示指定表内的所有记录,
    想不想实现,根据用户的基本操作
    添加记录,删除记录,更新记录,查询记录
    缕缕整理中......................
      

  11.   

    kaikai_kk
    (KAIKAI(开开一心)) 不好意思,我在整理这方面“知识点”
    这个也是别人刚传给我的......首先向高手们表示致谢,也同样向你致谢
      

  12.   

    KK 老大。。帮我看看我这个问题吧。
    http://topic.csdn.net/u/20111230/14/7bb0e79f-041e-4c4a-a71f-c32eb3d09328.html?seed=1394678741&r=77135875  麻烦了俄。
      

  13.   

    DELPHI+MSSQL“源汁源味”的三层模式,我终于搞定了ServerName: TestServers.MyApp_Servers
    ServerGUID: {D6C725C7-46BE-43FA-A812-84A0340F5D53}具体“细节”正在进一步“整理探索中......”
      

  14.   

    其实DELPHI自带的这一套用的好也是不错的。
      

  15.   

    我现在和你一样,也在把两层改三层。遇到的问题是存储过程怎么处理,正在处理中。
    Ado的基本可以,但我用Ora系统控件却出问题了。正在处理中。关注。
      

  16.   

    用Delphi XE2的Datasnap技术,还可以把客户端扩展到移动设备