Pixysoft.Framework.Remoting 开发实录


分布式的操作,之前的努力包括:

 

1. 基于ws的neobe,实现远程访问数据库,从而实现了数据库的分布式操作。

问题:权限问题,由于数据库操作几乎全部都包括,如果帐号泄露,会导致其他数据被修改。

 

2. 重写handler,通过codelive制作了很多的handler

问题:非常不通用。每一个模块一个handler。乱七八糟。而且都使用了connecton去操作,性能一般般。

 

现在要解决的是,通过一定的标签暴露出来调用方法,直接调用。

 

思路:

和web service类似,

 

[Remote]  
public interface IRemotingFactory
{
[RemoteCall] 
 IMessage CreateMessage(
string name, byte[] img);

 

 

这样就暴露出来了方法。

框架使用httpHandler.当查询制定模块的接口,例如

http://www.pixysoft.net/remoting.asmx?module=Pixysoft

 

这样,就反射Pixysoft对应代表的模块,获取里面标注了Remote的类接口,然后返回参数列表。 例如:

就是把接口描述一次。

 

如果请求带有了参数,则处理实际的调用。

 

一个请求包括了:

1. 调用对象的描述。

Assembly=xxx, ClassName = xxx, Method=xxx,Parameter =xxx,Return = xxx 

2. 传入参数。 

Parameter.Value = xxxx

 

请求返回,包括了类型描述,返回值,例如:

Assembly=xxx Type=xxx

Value=xxxxx

 

交互中,使用了代理技术,让本地的操作转变为远程调用。一个类似的操作:

 

IRemoteFactory factory = RemoteManager.Create<IRemoteFactory>();

factory.CreateMessage(xxx,xxx); 

 

 

框架意义:

1. 实现本地调用服务器操作,例如考勤系统。我只要实现一个上传考勤信息,

Attend(string cardno, byte[] photo);

这样,服务器数据库就获取了对应的信息。网站可以直接查询。 

 

2. 网站之间互联

对现有的框架可以再次简化。例如sso操作中的服务器登录验证,直接使用remoting即可。不需要再写handler等。

 

3. 分布式的应用。

例如一个互联框架,可以简化相互数据调用传递过程。 

 

开始时间 2010-04-11,结束时间2010-04-12 

posted @ 2010-04-11 22:47    阅读(424)  评论(3编辑  收藏  举报
IT民工