웹 응용 프로그램에는 이와 같은 URL 매개 변수를 구문 분석하는 메서드가 있습니다. 우리 회사 부서의응용 프로그램 매개 변수의 긴밀한 결합을 피하려고 시도합니다.
...
layerName = HtmlPage.Document.QueryString["Layer"] . . . ;
...
하나는 나에게 알 수없는 원인으로 변경하기 어려운이 응용 프로그램에 대한 매개 변수가있는 URL 목록이 있습니다. URL을 다음과 같이 사용할 수 있습니다. .../default.aspx에? 서비스 = 웰스 & 층 = ActiveWells & 쿼리 = XYZ IN를 ('1234567890 ...')
최근 대는 다음과 유사한 변경되었습니다. "ActiveWells"레이어 이름이 "Surface Participation Wells"로 변경되었습니다. "BoreStick"레이어 이름이 "WellBores"로 변경되었습니다. 따라서 해당 부서의 사전 설정된 URL 매개 변수가 더 이상 작동하지 않습니다.관리자가 "ActiveWells"의 인스턴스를 "Surface Participation Wells"와 같은 것으로 변경하는 코드를 추가하라고했습니다. 그런 다음 관리자는 URL 매개 변수가있는 부서가 모두 새로운 이름으로 변경했을 때 해당 코드를 제거 할 수 있다고 말했습니다.
정확히 "꽉 조이는 커플"이 무엇인지 모릅니다. 그러나 나는 그것이 나쁘다는 것을 안다. 그리고 이것은 그것의 예와 같게 들린다. 일시적으로 유지하고 나중에 코드를 제거하고 화석화하지 않을 수도 있기 때문에 코드를 추가하는 것은 좋지 않습니다.
는하지만 내 명령을 따라이 같은 코드를 추가 :layerName = NameConverter.LayerNameChange(layerName);
정적 LayerNameChange 방법에 switch 문이입니다.
이 앱을 담당하는 개발자는 다른 부서에서 사전 설정된 URL 매개 변수를 모두 변경하면 들어오고 제거해야합니다.
나는 콘솔 또는 Windows 기반 응용 프로그램이이 일을 할 수있는 더 좋은 방법이됩니다Main(string[] args){...}
에 대한 기대 된 매개 변수가 있다면 다음과 유사한 또 다른 시나리오에는이 것 생각?
편집 : 대신 내가 위에서 언급 한 어떤 경우에, 나는 다음이 의사 코드 같은 것을 무슨 짓을
. 호출 방법은 일종의 것
private void MethodToParseURL_Parameters(Func<string, string> nameReplace)
{
. . .
layerName = nameReplace(layerName);
. . .
}
,
MethodToParseURL_Parameters(new Func<string, string>(NameConverter.LayerNameChange));
왜 구문 분석 방법은 NameConverter 클래스의 존재에 대해 알아야 하는가?
그게 내가 스스로에게 물었던 것이다.
URL 매개 변수를 파싱하는 것은 그 책임이 아닙니다.
내가 이것을 과소 평가했는지 모르겠다. 나는이 수준의 개발에 대한 새로운 인식을 가지고 있습니다. 이 질문에 대한 답변은 이미 알고 있지만이 새로운 아이디어에 대한 추가 의견은 높이 평가할 수 있습니다.
이 솔루션에 대한 과도한 엔지니어링 작업을 시작하고 있습니다. 지금까지 잘 해왔습니다. SQL 인젝션에 대해 더 염려 할 것입니다. SQL 인젝션은 URL 파싱 이상의 기능을 필요로하기 때문입니다. –