博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sofire v1.0 开源——WinForm/SL/WebForm 的 Remoting(1)
阅读量:6335 次
发布时间:2019-06-22

本文共 2990 字,大约阅读时间需要 9 分钟。

Sofire Suite 是一套个人从 2009 年 08 月开始着手研发的套件。历经几年的不断优化改进,从最初的 V 套件到 Sofire2011 到目前的 Sofire.v1.0,Sofire 已经经历了许多项目的考验,并且出色的完成它的使命。现在,我将这套组件再次重构,
尝试让它成为任意平台、框架、套件的的底层首选。秉着开源精神,希望这套组件在博友的讨论中不断成长、成熟。

那么,Sofire.v1.0包含什么内容?

1、数据库访问(Sofire.Data)

2、快速动态反射(Sofire.Dynamic)

3、高效简短的二进制序列化(Sofire.Serialization.BinarySuite)

4、远程对象模式(Sofire.DataComm.Remote)

5、安全高效Socket(Sofire.DataComm.Net)

6、面向切面(Sofire.AOP)

7、等。由于Sofire v1.0 第一期移植,故而功能暂时尚未全部移植完成。

为了吸引博友的眼球,我特意做出一个十分简单基于 Silverlight 的 Remoting 示例。以这个例子,做首个开源组件的原因,其实主要是想感谢博友 的大力支持和关注,上一篇关于 VRemoting 的相关文章( )已经是 2011-10-25的事情了。但博友 一直关注此个示例品,不得不说,由于工作上的变动,导致这个东西整整大半年以后才再次发布上来,对此我表示非常的抱歉,也希望接下来所演示的示例和开源框架,能让各位博友满意。
先来看看结果吧:
服务端启动画面

服务端启动画面

客户端执行界面

客户端执行界面

服务端响应界面

服务端响应界面

示例解析

整个示例非常简单,但却包含了主要四大模块:SocketRemoting动态反射序列化

Remote契约(好吧,我偷懒了)
namespace RemotingInterfaces{    public interface ITest    {        double Add(double x, double y);    }}
契约实现(好吧,我真的偷懒了)
using RemotingInterfaces;namespace SofireDemo1.Test{    public class Tester : ITest    {        #region ITest 成员        public double Add(double x, double y)        {            return x + y;        }        #endregion    }}
配置文件(DefaultSetting.xml)
服务端源码
public static Result Start()        {            RemotingApplication.Initialization("DefaultSetting.xml");            RemotingApplication.ApplicationStateChanged += new CommunicationStateEventHandler(RemotingApplication_ApplicationStateChanged);            RemotingApplication.ServerStateChanged += new CommunicationStateEventHandler(RemotingApplication_ServerStateChanged);            RemotingApplication.ClientJoined += new EventHandler(RemotingApplication_ClientJoined);            RemotingApplication.ClientQuitted += new EventHandler(RemotingApplication_ClientQuitted);            RemotingApplication.ClientInvoking += new EventHandler(RemotingApplication_ClientInvoking);            RemotingApplication.ClientInvoked += new ClientInvokedEventHandler(RemotingApplication_ClientInvoked);            RemotingApplication.ClientFailed += new ClientFailedEventHandler(RemotingApplication_ClientFailed);            return RemotingApplication.Open();        }
客户端源码
public MainPage()        {            InitializeComponent();            ProxyFactory.Register("Test", "tcp://localhost:8081/One/HelloService.v", "testSL", "123456");        }        private void button1_Click(object sender, RoutedEventArgs e)        {            var i = ProxyFactory.Create();            MessageBox.Show(i.Add(double.Parse(textBox1.Text), double.Parse(textBox2.Text)).ToString());            ProxyFactory.Destroy(i);        }
结束语

可以看得出来,这个示例十分简单易用。它实用任何 .NET 的开发方式,无论是你 WinForm 还是 WebForm 开发,Sofire 将会最大程度的减少你的开发周期!

如果博友支持力度足够,考虑将其发布到开源网站进行分享(点击以下图片进行下载源码)。

为什么开源?

闭锁式开发是一种十分令人头痛的方式。从个人长远的利益来说,想要这一套组件更加优秀,就需要无数的朋友共同努力。任何一套开发套件,没有经历洗礼和应用,是无法体现其深在的价值,更无法令其更进一层。

开源,不是为了别人,是为了自己。如果您支持这套组件,请不要吝啬您的推荐。

关于序列化的效率

旧版的效率(参考)

这是新版的效率:

转载于:https://www.cnblogs.com/sofire/archive/2012/05/21/2498101.html

你可能感兴趣的文章
理解并取证:IPv6与IPv4在报文结构上的区别
查看>>
EOS主网上线只是开始,如何运营决定未来
查看>>
不用Visual Studio,5分钟轻松实现一张报表
查看>>
(译)如何使用cocos2d和box2d来制作一个Breakout游戏:第一部分
查看>>
计算机图形学(一) 图形系统综述
查看>>
持续集成(CI)- 几种测试的区别(摘录)
查看>>
多用户虚拟Web3D环境Deep MatrixIP9 1.04发布
查看>>
求高手,求解释
查看>>
[MSSQL]NTILE另类分页有么有?!
查看>>
winform datagridview 通过弹出小窗口来隐藏列 和冻结窗口
查看>>
Jquery闪烁提示特效
查看>>
最佳6款用于移动网站开发的 jQuery 图片滑块插件
查看>>
C++ String
查看>>
获取系统托盘图标的坐标及文本
查看>>
log4j Test
查看>>
HDU 1255 覆盖的面积(矩形面积交)
查看>>
SQL数据库无法附加,提示 MDF" 已压缩,但未驻留在只读数据库或文件组中。必须将此文件解压缩。...
查看>>
第二十一章流 3用cin输入
查看>>
在workflow中,无法为实例 ID“...”传递接口类型“...”上的事件“...” 问题的解决方法。...
查看>>
获取SQL数据库中的数据库名、所有表名、所有字段名、列描述
查看>>