Chinaunix首页 | 论坛 | 博客
  • 博客访问: 842974
  • 博文数量: 190
  • 博客积分: 2991
  • 博客等级: 少校
  • 技术积分: 2400
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-24 18:11
文章分类

全部博文(190)

文章存档

2015年(3)

2014年(1)

2013年(65)

2012年(121)

我的朋友

分类: C/C++

2012-10-30 11:46:21

实习时间:2012-08-27 到2012-10-24 将近两个月的实习时间。
工作背景介绍:
   首先看一下项目的整体架构。通过图来介绍一下项目负责的部分:
   
      项目的需求任务是工作流引擎,因为使用Java工作流比较方便,因此,公司选择使用普元平台做了基于普元平台的工作流引擎。通过图,可以观察到客户乃是C++系统,我们做的工作流引擎是相当于客户C++系统的一个插件而已。并且客户的C++系统已经投入使用中了。
       为了使公司中的Java引擎能够兼容嵌入到客户的C++系统中,基于这个需求下,我的工作任务诞生了——中间部分的C++通信客户端。

项目技术分析
      整体的架构有了,通过图,大概能够知道我负责的C++通信客户端这块的大概技术要求了。中间部分就相当于协调者,协调的主要任务就是通信。
      通过这个小内容技术分析,目的不是吹嘘技术,更不是炫耀自己的技术或公司或客户。而是真实的表达出目前市场技术形势以及技术需求,需求有了,才会有明确的学习目标。

首先:C++通信客户端<——>Java工作流引擎
      通信方式共有三种:
  1. webserivce,与语言无关的接口。并且是个基于w3c标准。其中,在项目中,我就是通过webserivce来实现C++与Java通信的。其中,C++客户端使用的soap或gsoap。
  2. JNI方式统称为Java Native Interface,Java本地调用方式。JNI标准已经是Java平台的一部分,允许Java与其他的语言进行通信,一般情况下,主要是为了C或C++设计的。只要他们约定好接口就行。  在JNI方式中,因为本地调用,所以在Java声明方法时,是使用native关键字,说明是非Java语言实现。具体的方法实现则是在C++或C中。
  3. socket通信socket通信,这部分内容,确实很重要,做过Java客户端的,基本都接触过这socket部分,而我从未接触过java客户端,而是直接上手的java web,所以当时对socket通信,确实有点点难理解。所以没有选择socket通信方式。但是socket通信,在项目中也是重大的部分。
其次:B/S工作流——>C/S客户端
      基于普元的Java工作流是B/S网页形式,而客户C++系统,则是纯纯的C/S模式,如何把后台的B/S工作流转化成C/S客户端哩?
      因为是初次接触MFC,对于陌生的东东,是需要时间来熟悉的。由于初次接触,所以组长好心提示,做成类似网银加载提示的Active控件。自己手动开发Active控件,对于C++开发者,也许还有难度,更何况对于我呢?呼呼,经过自己上网查资料,嘻嘻,发现B/S转C/S很简单,一个自带的IE控件即可。OK,加载IE控件,URL地址设置成后台引擎的首页,一切搞定。YES,一个IE控件,搞定B/S转C/S。
      哈哈,有网的地方,就会有天使。

然后:JSP<——>C++
        根据业务的需求,通过后台Java返回的结果,调用本地的业务窗口。通过webserivce,每次都是在服务器端弹出,而不是客户端,所以webserivce这种方式失败。为了实现这个业务功能,所以直接让C++客户端调用,就可以实现客户端弹出相应的业务窗口。因此,JSP需要与C++打交道。所以,通过写js事件,调用C++方法,即可实现。
这部分通信,需要JS与C++通信。主要实现的是Iimdispatch接口。主要是根据名称,循环查找相应的id,然后通过id,查找相应的方法。

还有,C++通信客户端<——>客户C++系统
      C++之间的通信,主要是通过函数依赖完成。函数依赖,也就是通过静态链接库或动态链接库方式加载。只要从事C++的,这部分也算是常识了。
     这部分重点不是函数依赖,而是socket通信。
     因此socket通信,这部分内容,也是我们需要掌握的。
     无论是windows底层的socket32 api,还是mfc封装的Csocket,原理都是一样的,只不过,mfc封装的Csocket或java封装的socket,相对于socket32简单些。
     在通信的过程中,使用udp方式,因为udp相对于tcp简单,不需连接,不许监听,但是有优点,就会有缺点。udp不如tcp安全。
     但是,udp依然可以做到tcp的三次握手。由于业务的需要,在udp之上,又添加了tcp连接。只要udp用的合适,用的好,与tcp无差别。
     其中,内部还涉及到了解析xml,创建xml,这部分的内容也是为通信做准备。

     在技术分析这块,只要总体介绍了工作项目中应用到的技术,而没有具体介绍,在后期博客中会有相应的详细介绍,目的:记录工作经验,同样方便别人。

生活篇
        虽然在公司天天加班,但是公司的氛围还是挺好的,嘻嘻,都是一帮刚毕业的”北京青年“。餐桌上有说有笑,有抢有夺,饭后有打有闹。呵呵,所以心情还是挺愉悦滴。
        自我感觉,自己还是挺重感情的,喜欢结交朋友,喜欢水浒中的英雄好汉,喜欢桃园三结义,喜欢古惑仔情义。感觉自己就像个男孩子,但是喜欢情义的我,其实,内心也并不宽广。但是吧,生气一会,就没事了。
        这次实习的公司,认识了新的朋友,无论是搞安卓的小李子(李冲),还是搞java web的小楚子(楚福伟),还是实习生喜洋洋(陈阳羊),还有最后实习走转行的郝峰o(︶︿︶)o ,还有搞怪的,经常送我小耳钉的人事部的雪娜,还有跟他们合伙对抗“敌人”—王国涛。还有就是不爱说话的技术蛮深的小吴(组长),还有……
突然实习结束,有种舍不得的感觉。喜欢跟他们一块吃饭,喜欢在餐桌上一起打闹,喜欢饭后聊天……
      在客户那边,接触最多的也就是小曹了,感觉技术很高,尤其是思维敏捷。在C++上,同样帮助我很多。
      可回来的匆忙,无论是公司还是客户,一些可爱的朋友,都没有见面道别……

      北京之旅,收获很多。知识,信心,朋友人气……
      其实,我对知识并不是太看重,知识,技术,是永远学不完的,只要会学习,想学习,没有学不会的。
阅读(1106) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

jialisoft2012-10-31 10:45:50

只能说谢谢了

eaglelbz2012-10-30 15:41:58

挺真切的,继续努力