2009-03-03 2 views
4

내부 네트워크 환경에서 AS400과 통신 할 business2business 네트워크 내에 상주하는 애플리케이션이 있습니다. 방화벽은 AS400을 통해 데이터 요청을 허용하도록 구성되었지만 연결 속도와 응답 시간이 크게 지연되었습니다. 예를 들어 로컬 개발 환경에서 0.5 초 미만의 시간은 B2B 환경에서 120 초 이상 소요됩니다.ASP.NET의 AS400 데이터 연결

이것은 우리가 데이터를 얻기 위해 사용하는 기능입니다. ASI가 개체가 데이터베이스 그래서 내가 왜이 발생을 할 때 고려해야 할 몇 가지 아이디어를 브레인 스토밍하는 것을 시도하고있다

/// <summary> 
/// Generic function to retrieve data table from AS400 
/// </summary> 
/// <param name="sql">SQL String</param> 
/// <returns></returns> 
private DataTable GetASIDataTable(string sql) 
{ 
    DataTable tbl = null; 

    HttpContext.Current.Trace.Warn("GetASIDataTable(" + sql + ") BEGIN"); 
    using (var cmd = ASI.GetSqlStringCommand(sql)) 
    { 
     using (var ds = ASI.ExecuteDataSet(cmd)) 
     { 
      if (ds.Tables.Count > 0) tbl = ds.Tables[0]; 
     } 
    } 
    HttpContext.Current.Trace.Warn("GetASIDataTable() END"); 
    return tbl; 
} 

우리는 ..., 엔터프라이즈 라이브러리 응용 프로그램 블록을 사용하고 있습니다.

+0

+1 분명히 무슨 일이 일어나고 있는지 알고 싶습니다. –

답변

2

분노에서 ASP.NET 또는 AS400을 사용한 적이 행운을 빕니다 나는 경우에 그것을 언급 것이라고 생각하지만 난 전에 행동의이 종류를 보았다 그것은 일반적으로 어떤 종류의 표시 일반적으로 역방향 DNS 조회가 시간 초과되었습니다.

방화벽을 통해 핑 (ping)이 활성화되었다고 가정하면 양방향으로 핑할 수 있는지 확인하십시오.

각 시스템에서 traceroute를 실행하여 지연이 발생할 수있는 위치를 진단하고 시도하십시오.

희망이 있습니다.

+0

@ 브린디 - 고마워! 나는 내일이 일에 착수 할 것이다. – RSolberg

1

미안하지만 무슨 일이 일어 났는지 말할 수는 없지만 몇 가지 의견이 있습니다 ... 먼저 SQL을 출력하고 조인이 많이 들어 있는지 확인합니다. 파일)에 많은 양의 레코드가 있습니다. 프로파일 러를 선택하여 (예 : Ants Profiler를 사용하여) 프로파일 링을 시도하고 400에 대한 프로파일 러를 찾으려고 할 때 - ODBC 드라이버를 통과 한 후 서버 자원과 실제 쿼리를 확인하십시오.

asp.net과 as400을 몇 번 사용해 보았습니다. 제가 가장 성공적으로 수행 한 방법은 실제로 AS400에 연결된 서버가있는 SQL Server를 사용하는 것입니다. 나는 as400 명명의 기이함을 숨기고 작업을 더 간단하게하기 위해보기를 만들었습니다. 어쨌든 응용 프로그램이 SQL Server에서 정보를 가져와야하기 때문에 제 시나리오에서는 제대로 작동했습니다.

는 나는 그것이 도움이 ...

+0

선택 항목은 다음과 같습니다. select a, b, c 여기서 x = y ... 특별한 것은 없습니다. 그래도 많이 감사합니다. – RSolberg

0

iSeries 시스템의 크기도 점검하십시오. 쿼리의 크기에 따라 시스템에서 실행중인 응용 프로그램의 크기가 너무 작은 경우 시간이 오래 걸릴 수 있습니다. 그것이 posibility로 밖으로 던져서는 안되지만, 나는 과거에도 비슷한 행동을 보았습니다. 물론 네트워크 문제 일 가능성이 큽니다.

속도 문제를 해결할 수 있거나 크기 조정 문제가있는 다른 아이디어는 MS SQL Server에 저장 한 다음 SQL Server의 레코드를 여기에서 작성하는 것입니다.