Example #1
0
        /**
         * 解析数据
         * @param dis
         * @return
         * @throws Exception
         */
        public DataVO decoder(byte[] data)
        {
            Stream stream = new MemoryStream(data);
            BinaryReader reader = new BinaryReader(stream, Encoding.UTF8);

            DataVO dataVo = new DataVO();
            dataVo.ServiceName = readString(reader); // 读取服务名称
            dataVo.MethodName = readString(reader); // 读取函数名称

            // 读取参数
            Object[] param = null;
            int len = reader.ReadInt32();
            if (len == 0)
            {

            }
            else
            {
                param = new Object[len];
                for(int loop=0; loop<len; loop++)
                {
                    param[loop] = readAll(reader);
                }
            }
            dataVo.Param = param;

            return dataVo;
        }
Example #2
0
        /**
         * 解析数据
         * @param dis
         * @return
         * @throws Exception
         */
        public DataVO decoder(byte[] data)
        {
            Stream       stream = new MemoryStream(data);
            BinaryReader reader = new BinaryReader(stream, Encoding.UTF8);

            DataVO dataVo = new DataVO();

            dataVo.ServiceName = readString(reader); // 读取服务名称
            dataVo.MethodName  = readString(reader); // 读取函数名称

            // 读取参数
            Object[] param = null;
            int      len   = reader.ReadInt32();

            if (len == 0)
            {
            }
            else
            {
                param = new Object[len];
                for (int loop = 0; loop < len; loop++)
                {
                    param[loop] = readAll(reader);
                }
            }
            dataVo.Param = param;

            return(dataVo);
        }
Example #3
0
        /**
         * 序列化返回值
         * @param data
         * @param steam
         * @return
         * @throws Exception
         */
        public byte[] encode(DataVO data)
        {
            MemoryStream stream = new MemoryStream();
            BinaryWriter writer = new BinaryWriter(stream);

            writeUTF(writer, data.ResultStatus);
            if (data.ResultStatus == "error")
            {
                writeUTF(writer, data.ErrorMessage);
            }
            else
            {
                writeUTF(writer, data.ServiceName);
                writeUTF(writer, data.MethodName);
                writeAll(writer, data.Result);
            }

            return stream.GetBuffer();
        }
Example #4
0
        /**
         * 序列化返回值
         * @param data
         * @param steam
         * @return
         * @throws Exception
         */
        public byte[] encode(DataVO data)
        {
            MemoryStream stream = new MemoryStream();
            BinaryWriter writer = new BinaryWriter(stream);

            writeUTF(writer, data.ResultStatus);
            if (data.ResultStatus == "error")
            {
                writeUTF(writer, data.ErrorMessage);
            }
            else
            {
                writeUTF(writer, data.ServiceName);
                writeUTF(writer, data.MethodName);
                writeAll(writer, data.Result);
            }

            return(stream.GetBuffer());
        }
Example #5
0
    protected void Page_Load(object sender, EventArgs e)
    {
        byte[] byteData = null;
        try
        {
            if (context == null)
            {
                context = ContextUtil.getInstance(Server.MapPath("."));
                encrypt = context.getOuterEncrypt();
            }

            if (encoder == null)
                encoder = ParamEncoder.getInstance();
            if (decoder == null)
                decoder = ParamDecoder.getInstance();

            encoder.outEncoder = context.getOuterResolve();
            decoder.outDecoder = context.getOuterResolve();

            Stream input = Request.InputStream;

            if (input.CanRead)
            {
                byteData = new byte[input.Length];
                input.Read(byteData, 0, (int)input.Length);
                input.Close();
                input.Dispose();

                // 解密
                if (encrypt != null)
                    byteData = encrypt.decrypt(byteData);

                dataVo = decoder.decoder(byteData);
                Type serviceCls = context.getService(context.getServiceNameSpace() + "." + dataVo.ServiceName);

                MethodInfo method = serviceCls.GetMethod(dataVo.MethodName);

                object result = method.Invoke(System.Activator.CreateInstance(serviceCls), dataVo.Param);

                dataVo.Result = result;
                dataVo.ResultStatus = "success";
                byte[] resultData = encoder.encode(dataVo);

                if (encrypt != null)
                    resultData = encrypt.encrypt(resultData);

                output = Response.OutputStream;
                output.Write(resultData, 0, resultData.Length);
                output.Flush();
                output.Close();
                output.Dispose();
            }
            else
            {

            }
        }
        catch(Exception exc)
        {
            if (dataVo == null && byteData != null)
               dataVo = decoder.decoder(byteData);
            if (dataVo == null)
               dataVo = new DataVO();
            dataVo.ResultStatus = "error";
            dataVo.ErrorMessage = exc.ToString();
            byte[] resultData = encoder.encode(dataVo);

            if (encrypt != null)
                resultData = encrypt.encrypt(resultData);
            output = Response.OutputStream;
            output.Write(resultData, 0, resultData.Length);
            output.Flush();
            output.Close();
            output.Dispose();
        }
    }