设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

系统从Windows迁移至Linux下的点点滴滴

2014-1-2 14:31| 发布者: 红黑魂| 查看: 7305| 评论: 1|原作者: supperwu|来自: 博客园

摘要: 一、写在最前   由于本人的技术水平有限,难免会出现错误。本文对任何一个人有帮助都是我莫大的荣幸,任何一个大神对我的点拨,我都会感激不尽。 二、技术选型   在2013年8月低的时候,公司中了XXX市场监督局肉 ...

  问题找到了,又开始新的一轮折腾。首先,减少客户端对Service.svc文件的post请求,其次将WCF回传 的数据进行压缩处理。一番修改后,IE11下,故障依旧。于是想到了用WebService尝试下,就把某个服务修改成WebService的方式后,貌 似httpd worker不会重启了,处理不过来请求的时候,只会中断请求。既然这样,我就狠心把WCF的绑定方式由CustomBinding的方式改成了 BasicHttpBinding,然而故障还是那么的顽固存在。


  经过一番测试,感觉可能是Jexus的问题,测试代码:



class Program
    {
        private static ServiceClient client;
        private static int count = 0;
        static void Main(string[] args)
        {
            client = new ServiceClient();
            client.GetCustomersCompleted += client_GetCustomersCompleted;
            int callCount = Convert.ToInt32(ConfigurationManager.AppSettings["CallCount"]);
            Console.WriteLine("Press begin to Call WCF Service:");
            while (Console.ReadLine().ToLower() == "begin")
            {
                DoWork(callCount);
            }
            Console.Read();
        }
        private static void DoWork(int callCount)
        {
            for (int i = 1; i <= callCount; i++)
            {
                ThreadPool.QueueUserWorkItem(CallService, i);
            }
        }
        private static void CallService(object state)
        {
            client.GetCustomersAsync(state);
        }
        static void client_GetCustomersCompleted(object sender, GetCustomersCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                Interlocked.Add(ref count, 1);
                Console.WriteLine("成功调用:{0}", count);
            }
            else
            {
                Console.WriteLine(e.Error);
            }
        }
    }
}

  如果是对WebService模拟并发发起请求的时候,httpd worker不会重启,如果是WCF,httpd worker会不断的重启。没有办法只有咨询Jexus的作者宇内了。跟他描述了问题,按照他说的更新了Jexus版本,优化了Linux。最后发了个测试工具给宇内,宇内发现Jexus在处理WCF请求的时候是有点问题。在这里还是要感谢宇内那么热心的帮助我解决问题。


五、数据库迁移


     数据库的迁移遇到的问题不是很多,借助navicat将数据从SqlServer导入到PostgreSQL。由于系统的业务不是很复杂,之前就采用了Nhibernate,需要修改配置文件中主键字段的映射,因为PostgreSQL中采用的是序列。之前SqlServer中一些稍微复杂点的查询是采用存储过程写的,存储过程的移植性不好,在PostgresSQL下这部分只能重新写了。


<id name="TypeID" type="Int32" unsaved-value="0">
           <column name="TypeID" length="4" sql-type="int" not-null="true" unique="true" index="PK_SysAllType"/>
      <generator class="sequence">
        <param name="sequence">sysalltype_typeid_seqparam>
      generator>
id>

六、地图迁移


  由于地图服务器是单独一台,最终是用Perl + Apache来实现的,实现也挺简单的,几十行代码,就是地图引擎请求一个图片路径,将图片输出就可以了。最开始的时候,用的是Asp.net,部署在 Jexus上,但是不知道为什么某些图片始终输出不出来,最终还是放弃了。


最后附上一张系统迁移后成功后的图片:



本文地址:http://www.cnblogs.com/supperwu/p/3500024.html#!comments


酷毙

雷人
2

鲜花

鸡蛋

漂亮

刚表态过的朋友 (2 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部