明志致远

定而后能静 静而后能思 思而后能得 Reporting Services asp.net 代码生成

  博客园 :: 首页 ::  :: 联系 :: 订阅 订阅 :: 管理 ::
  19 随笔 :: 4 文章 :: 38 评论 :: 0 Trackbacks

2007年9月16日 #

好久没写东西了,刚看到自己的排名又找回来了,就随便写点东西。
    程序在部署完成到系统稳定的运行之间都有一段试用性阶段,在这段时间中,实施人员可能已经撤离用户现场,或者有间断的时间不在用户现场。在实施人员不在用户现场的情况下,如果要对系统进行升级,可以使用远程部署来实现远程更新。

我们用远程控制软件pcanywhere描述远程更新。要让pcanywhere能通过广域网进行远程控制,需要在用户网络系统的路由器上开放相应的端口。我们可以为路由器建立一个关于端口的策略。这个策略用于开放和关闭路由器上的pcanywhere要使用的端口,在用户的局域网上远程登录到路由器上执行建好的策略可以开放和关闭pcanywhere要使用的端口。

下边我们描述两种场景。

1、实施人员在用户现场,但不在服务器所在的地点,实施人员可登陆用户局域网。    这种情况下,开发人员可以通知实施人员在用户的局域网上远程登录到路由器上执行建好的策略来开放pcanywhere要使用的端口。端口开放后,开发人员就可以使用pcanywhere的主控端程序登陆用户的服务器来更新发布程序。当开发人员发布完成后,通知实施人员关闭相应的端口。

2、实施人员要离开用户现场回公司一段时间。

在这种情况下,实施人员在离开用户现场的时候开放相应的端口,在回到现场后,再关闭相应的端口。

远程控制部署要注意的问题。

1、  由于要开放相应的端口,用户的服务器要有更好的防护措施,例如给系统打补丁、

开启防火墙、为用户设置复杂的密码等。

    2、这种方式是为了方便开发人员远程来更新发布来使用的,一般使用于系统的试运行阶段,正式上线后不应再使用。

以上是为了更方便的工作的一种建议,因涉及系统安全,需要公司网络工程师验证可行性。

posted @ 2007-09-16 12:52 gjung 阅读(49) | 评论 (0)编辑

2007年4月2日 #

       web开发下的ajax的调试,在vs2005中不知怎么实现,在脚本中添加 debbuger 后,提示“没有可用于当前的源代码”,分析原因,可能是,ajax框架下的js是异步调用web服务的,所以vs2005没有为采用ajax技术的页面包含的js提供单步调试。
       进而又发现了一个可调试ajax的工具FireBug,它是Firefox的一个插件,非常好用,但只能用在Firefox浏览器中,我把我们的项目在装了FireBug的Firefox中打开,就已经能方便的调试js了,可是由于IE和Firefox的标准不一样,我们的项目报出许多语法错误,都是js的语法兼容问题。看来只能看看,不怎么能用的上了。郁闷。。。
posted @ 2007-04-02 17:05 gjung 阅读(188) | 评论 (3)编辑

2007年4月1日 #

         今天同事讲起.net2005里分布式开发及负载平衡想起的
         使用delphi做三层结构,大概是2001年的事了,当时做的项目基本都采用了三层结构,现在想来还是有些好处的,几十个客户端通过应用服务器访问数据库,业务逻辑放到了应用服务器层,客户端、应用服务器、数据库服务器可以分别部署在不同的机器上。
        我们知道,每个exe执行起来后都运行在自己的进程空间中,是独立的,在同一台机器上,怎样让一个exe调用另外一个exe的方法呢?这就是我常提到的com技术,被调用的exe不再是一个简单的exe了,它不能只顾自己了,还要为别的调用提供服务,别的exe怎么知道系统里有哪些可用的对象呢?提供服务的exe必须向系统注册,我们在注册表中看到的许多天书般的长串键值就是这些对象的唯一标识。向execl、word这些软件都早不是简单的应用程序,他们都向系统注册了服务对象,你写的vb、delphi、vc等程序能简单的嵌入excel、word,其实就是在调用这些服务对象的方法。
         如上所述,com 让同台机器上的exe之间可以访问,dcom让不同机器上的exe之间可以访问。dcom是针对Windows 工作组开发的小型连接方式,并不支持tcp/ip 网络, 不支持网关。

         delphi做三层结构可以采用的连接方式有:   
         DCOM Connection
         Socket Connection
         Web Connection    
         SOAP Connection
         CORBA Connection

         我们主要看下Socket Connection和Web Connection    
        
         1、Socket Connection 通过tcp/ip传输,可任意分配多口
         delphi提供scktsrvr.exe来接收客户端的请求,为每一个客户机连接都要建立一个线程,来服务客户端
         过程如下:  
         客户端要求服务器执行一个方法,查询一个数据 -> 服务器socket -> 发送windows消息到 socketserver主线程->服务器上客户连接线程分拣消息 - > 分析数据包,找出客户要求执行的接口方法 -> com服务器,执行方法->传回第一个数据包到客户端-> 客户端发送响应给服务器 ->  服务器socket -> 发送 windows 消息到 socketserver主线程
          2、Web Connection 通过80端口的http传输躲过了网关,但速度慢,因为在WebConnection中需要对COM请求的数据进行Marshall并编码为HTTP协议所需要的文本格式,到了httpsrvr中又要把HTTP的文本转成本地COM调用。
         WebConnection调用应用服务器,如果提示"访问拒绝",请运行DComcnfg配置DCOM对象的安全启动和激活权限,为Internet来宾用户添加权限即可。同时确保httpsrvr.dll所在的文件夹的执行权限为"脚本和可执行文件"。

         两篇文章:
        1、http://borland.mblogger.cn/catchbug/posts/2927.aspx
        2、http://blog.csdn.net/cheng_ds/archive/2007/02/04/1502196.aspx

        示例代码下载
        1、TWebConnection
        2、TSockeConnection

posted @ 2007-04-01 16:53 gjung 阅读(574) | 评论 (0)编辑

2007年3月29日 #

@RecordsInPerPage --每页的记录数
@PageNo           --当前页号

如下示例,正确替换@RecordsInPerPage和@PageNo就可方便的取得对应页的记录,效率很好

select  TOP @RecordsInPerPage from Employee
and EmpID not in
   (select TOP @RecordsInPerPage*(@PageNo-1)  EmpID
      where
         DepId='45'
      order by EmpID
    )
order by EmpID

posted @ 2007-03-29 19:14 gjung 阅读(106) | 评论 (0)编辑

标识关系,实线表示
非标识关系,虚线表示
实心圆端所在的那端为一对多关系中的多的那端

erwin.jpg
        PASSENGER:                    乘客表
        FLIGHT:                             航班
        SEAT-RESERVATION:    座位预定
        
    标识关系贡献父实体的键给子实体,所有
键变成子实体的键,成为了子实体的键的一部分,意思是子标识依赖于父,也就是子实体的存在依赖于父,在SEAT-RESERVATION中,flight-number变成SEAT-RESERVATION座位的外键属性,它和seat-number一起标识座位,是不能为空的,如果不指定flight-number,seat-number和passenger-name都是无意义的。
    非标识关系贡献父实体的键给子实体,但是,由定义知,一些 (或所有)键不变成子实体的键,意思是子不标识依赖于父,允许这样的情形,关系中多”端的实体没有父”而可能存在,即它不是存在依赖。

从子实体看,如果关系是强制mandatory的,那么子存在依赖于父。如果可选,那么子既不存在也不标识依赖于关系 (虽然它也许依赖于其他关系)ERwin菱形为表示可选的情况,菱形只存在于非标识关系中(因为标识关系贡献主关键字,而主关键字部分不能为NULL)。带菱形的非标识关系是零或一对多”的关系。这儿有个简单例子。

5.13,属性 “passenger-name”变成SEAT-RESERVATION座位的外键属性,它不标识座位,它标识占用座位的乘客,因为没有乘客座位仍然存在,关系是可选的,应使用菱形符号。

我们已经定义,在一次飞行中乘客可占零或一个座位。

座位可以空 (不被任何乘客占有),当座位空时,”passenger-name”属性将是空 (NULL)

由业务政策知道,这是允许发生的 (因为航空公司不能迫使乘客填满每次飞行的每个座位),从子实体看,关系是可选的,关系父端的菱形就意味着这个。

posted @ 2007-03-29 16:06 gjung 阅读(437) | 评论 (0)编辑