有点想法之一

1.制作目的

11 思路是因为自己的偷懒

公司要改变技术路线,向Java发展。没办法,身为普通职员的我,也只有硬着头皮学习Java 。在看EJB的时候,我就在想,如果在其他的开发环境下,也有一个类似于WebLogic的业务组件容器那多好。最好就是能将以前写的或者已经发布的exe,dll等程序都能组合起来,同时又具有分布式功能,那么不是就可以减少好多开发时间。为了自己的偷懒,于是自己动手编写一个这样的程序。

12 目的

1让开发人员写更少的代码,不用关心如何管理服务器状态,这样能够更快地完成程序开发。

2让开发人员不用对数据访问逻辑进行编码就能编写应用程序,能生成更轻巧,与数据库无关的应用程序,这种应用程序更易于开发与维护。

3在开发和实施中无需考虑系统安全,系统配置,数据库配置等于业务逻辑无关的信息。更多的时间专注于业务逻辑的完善等;

 

2ECC适用范围及功能介绍

21 适用范围

DoNet开发环境;

22 功能介绍

提供分布式开发,开发者不必考虑系统级的设置;

提高程序可复用性,可扩展性。对开发者以前拥有的exe.dll             文件可以不需要编译,直接运用于新的开发项目中;

 

2.3 部署图

        Server ------Component

      

 

Client-----Server

 

3ECC开发步凑

31 业务组件

311 业务组件加载到容器

                 选择菜单 -> 加载容器弹出 如图 3.1

       

              然后选择加载组件的存放路径,就可以将已有的exe.dll等格式的程序作为业务组件供客户端调用了;注意 exe.dll等格式文件是必须是基于DoNet环境编制的;

              基础配置

              容器在对客户端开放的通信信道,容器的存在方式和响应模式都在这里设置。容器通道默认使用70017002,存在模式为无状态,响应模式为服务器响应;

             

              配置数据源

              点击鼠标右键,填写数据库配置名,数据库的信息,组件就可以通过数据库配置名访问数据库了;

            

             

312 业务组件的开发

                例程1 (C# 代码)

                新建立项目Component1,一个WinForm的程序;

                窗体名:Form1

                Form1中定义一个方法:

                public void TestMethod()

                {

                     MessageBox.Show("这是第一步!");

                 }

               注意:供客户端使用的方法或函数都要使用public 定义的;

               这样就完成了一个简单的业务组件,加载进容器中,简单的配置客户端就可以使用了;

               客户端开发

               在客户端项目中引用ClientCase这个dll文件(ClientCase随着ECC容器一起发布)

               加入命名空间:

                        using RemotingClientServices; (C#)

                        import RemotingClientServices ( Vb.Net)

                    定义变量:定义类型为RemotingClient的变量

                        private RemotingClient ClientServices; C#

                        ClientServices=new RemotingClient();

                    定义服务器开设的端口

                     ClientServices.TcpPort=7001;

                     ClientServices.HttpPort=7002;

                    定义服务器地址

                          ClientServices.ServerUrl="127.0.0.1";

                    客户端使用调用容器中组件的函数

                    public object   TransferServices(函数在组件中类的名字,调用函数名,参数列表)

                      object[] ParamList=null;

                      ClientServices.TransferServices("Form1"," TestMethod ",ParamList);

                     这样客户端就完成了对业务组件的调用;

        313 容器内业务组件之间的调用

                        可能开发者希望在组件中同样能进行“通话”,完成复杂的业务逻辑。很高兴,容器支持组件间相互访问功能;

                     新建工程,类型为类,生成 dll类型文件;

工程名:Component2

                     类名:MyClassComponent

                     引用ClientCase这个dll文件(ClientCase随着ECC容器一起发布)

                     加入命名空间:

                        using RemotingClientServices; (C#)

                        import RemotingClientServices ( Vb.Net)

                     定义变量:定义类型为ComponentVisit的变量

                        private ComponentVisit VisitClass; C#

                        VisitClass=new ComponentVisit ();

                     组件间访问的函数

                       public object ComponetByColloquy(string 函数在组件中类的名字, string 调用函数名, object[]参数列表);

                              object[] ParamList=null;

                      ClientServices.TransferServices("Form1"," TestMethod ",ParamList);

                      这样组件Component2就可以使用Component1中的方法了;

                      注意:要完成组件访问,在组件加入容器中,选择将组件拷贝到容器目录下选项;

       314 组件使用系统数据连接

                         定义变量:定义类型为ComponentVisit的变量

                        private ComponentVisit VisitClass; C#

                        VisitClass=new ComponentVisit ();

                              获得数据连接

                              public bool VisitClass.GetConnection(string 数据连接名)

                              VisitClass.GetConnection(“MyDataSource”);

                      根据传递的SQL语句,填充DataSet数据集

public DataSet GetData(string SQLs)

VisitClass.GetData("Select * from Part");

提交修改数据

public bool ApplyUpdateData(System.Data.DataSet ApplyDataSet)

public bool ApplyUpdateData(System.Data.DataTable ApplyDataTable)

在使用提交数据函数时,必须设置对应操作的带参数的SQL语句,使用  initialAdapter多态函数;

bool initialAdapter(string PoolName,string InsertSQL,System.Data.DbType[] InsertParamType,string UpdateSQL,System.Data.DbType[] UpdateParamType,string DeleteSQL,System.Data.DbType[] DeleteParamType ): 设置除Access,SQLServer以外的数据库;

 

bool initialAdapter(string PoolName,string InsertSQL,System.Data.SqlDbType[] InsertParamType,string UpdateSQL,System.Data.SqlDbType[] UpdateParamType,string DeleteSQL,System.Data.SqlDbType[] DeleteParamType ):只适用于SQLServer数据库

 

bool initialAdapter(string PoolName,string InsertSQL,System.Data.OleDb.OleDbType[] InsertParamType,string UpdateSQL,System.Data.OleDb.OleDbType[] UpdateParamType,string DeleteSQL,System.Data.OleDb.OleDbType[] DeleteParamType ):只适用于Access数据库

 

执行SQL语句,不返回数据,只返回影响记录数

public int ExecSQL(string Sql)

这一组函数供组件使用,提供组件对数据库的使用;只要在容器中配置完数据连接,开发者可以根据在容器中定义的数据连接配置名,就可以得到对数据库的操作权;

 

4.容器中正在处理部分

41 事务处理

42 安全管理

   421 证书验证

   422 Windows安全

43 融合Win32程序

该容器为最早开发版本,我会在以后的时间逐步完善容器欠缺的功能,提供给大家一个快速,高效,稳定的分布式开发环境。现有版本中存在很多不足,希望大家能提出宝贵的意见和建议,同时也希望有兴趣的高手们投入开发当中。

5.开发说明

组件不能经过混淆,不然容器无法识别调用组件中提供的方法;

使用组件通信,数据库操作时,请求调用组件应加载入容器的目录下; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值