집 >백엔드 개발 >C#.Net 튜토리얼 >.net을 활용한 고효율 인터넷 애자일 개발에 대한 생각
언제부터 창업이 아주 저렴해졌는지 모르겠어요. 우리가 얘기하는 모든 것이 인터넷이고, 수천만 달러를 모으는 것도 쉽습니다. 이런 돌풍은 프로그래머들에게도 타격을 준 것 같습니다. 데이터 구조를 잘 연구하지 않고, 데이터베이스 원리를 제대로 이해하지 못한 개발자들도 많습니다. 그들은 github에 여러 프로젝트를 게시하고, nodejs를 사용하여 일부 서비스를 만들고, 그런 다음 H5를 사용하여 APP를 작성하면 인터넷 프로젝트에 전략을 세울 수 있다고 생각합니다. 새로운 기술과 새로운 개념을 배우는 것이 급속한 성장을 의미합니까? 인터넷 웹사이트 및 앱 겉으로 보기에 아름다워 보이는 많은 앱은 간단한 http 인터페이스 보안조차 처리할 방법이 없습니다. 많은 아름다운 반응형 웹사이트에는 디렉토리 구조가 무작위로 쌓여 있습니다. 이것은 프로그래머가 여전히 주의를 기울여야 한다고 생각합니다. 실용적이려면 더 많은 이론을 배우고, 더 많은 코드를 작성하고, 반복적으로 연습하세요.
그러면 또 다른 질문이 생깁니다. 새로운 기술과 새로운 아이디어는 베테랑 .NET을 통해 반복적으로 재구성한 수많은 기술 전문가의 승리입니다. 드라이버님, 저는 Microsoft가 오픈 소스를 수용하고 수년에 걸쳐 커뮤니티가 가져온 변화와 발전을 수용하는 것을 보고 매우 기뻤습니다. 그래서 오늘은 저와 제 회사가 수년 동안 이를 어떻게 사용해왔는지 여러분과 공유하고 싶습니다. .NET 웹 개발 및 인터넷 애플리케이션 개발에 대한 기술 요약을 제공합니다.
HTML5, Bootstrap, EF6 For MySql, Alibaba Cloud RDS, Alibaba Cloud CDN 등 새로운 기술과 개념을 사용하는 최신의 대표적인 사례입니다. 우리는 개발을 위해 .NET을 사용하고 배포를 위해 .NET 생태 환경(IIS, Windows Server)을 사용하는 기본을 벗어나지 않았습니다. 그러나 전체 개발 프로세스에서 WebForm은 물론 MVC까지 완전히 제거했습니다. 새로운 .NET 개발 모델 세트. 개발 효율성과 팀 협업이 크게 향상되고 개발 시간도 크게 단축됩니다. 이 경우 개념부터 디자인까지 전체 웹사이트의 프런트엔드 및 백엔드 관리가 이루어집니다. , 개발, 디버깅, 배포까지 한 사람이 3일 만에 완료했습니다. 다음은 개발 모델에 대한 자세한 설명입니다. 또한 여러분의 의견을 듣고 지속적으로 개선해 나가겠습니다.
ASP.NET WebForm 평가와 관련하여 다음과 같은 말이 객관적이라고 생각합니다. ASP.NET WebForm 드래그 및 이벤트 중심 웹 개발 모델의 혁신은 많은 .NET 초보자의 학습을 촉진했습니다. . 비즈니스 개발 모자로서 ASP.NET WebForm은 이에 대한 책임을 회피할 수 없습니다.
개발 모델에 대해 이야기하기 전에 다음 사항에 대해 이야기하고 싶습니다.
1. 현재 인터넷 프로젝트 또는 기존 웹 프로젝트의 몇 가지 새로운 추세 및 특성
1. 웹 서비스 더 이상 사용되지 않지만 HTTP는 데이터 통신 방법으로 광범위하게 사용됩니다
2. 데이터 매체는 더 이상 XML을 사용하지 않고 대신 JSON을 사용합니다
3. 웹 프런트 엔드는 Bootstrap, JQueryUI, EasyUI와 같은 타사 HTML5 프레임워크 사용
4. 앱 요구 사항이 있거나 앱 우선 요구 사항이 있는 경우에도 앱은 다양한 타사 플러그인에 연결해야 합니다.
5. APP의 빠른 출시를 추구하기 위해 때때로 PhoneGap, AppCan, HBuilder 등과 같은 HTML5 APP 개발 모델을 채택합니다.
6. WeChat이 필요한 경우, WeChat 공용 계정을 연결하고 WeChat 브라우저에서 모바일 웹 개발을 수행하려면
7. 짧은 개발 주기와 잦은 반복
8. 데이터 양이 빠르게 증가하고 있으며, 보고서 표시 및 데이터 분석에 대한 수요 증가
9. 프로젝트 팀 인력 요구 사항은 웹 개발 엔지니어와 HTML5 프런트 엔드 엔지니어, JAVA (.NET) 엔지니어, 데이터베이스 엔지니어 등으로 나뉩니다.
10. 단위 테스트는 줄이고, 기능 테스트는 늘리고, 전문 테스트 도구를 대체하기 위해 인터넷 도구(작업타일 등)까지 사용
위의 상황을 바탕으로 시스템 개발에 여전히 .NET을 사용한다면 사용자 수가
2. 일부 기존 .NET 웹 개발을 고려합니다. 모델 및 방법을 폐기해야 합니다
1. ASP.NET WebForm과 MVC 모델은 모두 심각한 프런트엔드와 백엔드 결합, 복잡하고 단순한 프로세스를 가지며 프런트엔드가 더 이상 적합하지 않습니다. .NET 아키텍처와 분리될 수 없습니다.
2. SQL Server 데이터베이스는 더 이상 적합하지 않습니다. SQL Server 2014의 기능은 흥미롭지만, 동시에 다른 데이터베이스에 비해 퍼블릭 클라우드의 사용이 점점 더 일반화됨에 따라 크기, 가격, 가용성 확장성 및 심지어 성능 측면에서도 SQL Server는 불리한 위치에 있습니다.
3. 기존의 3계층 아키텍처는 더 이상 적합하지 않습니다. 많은 인터넷 프로젝트에서는 설계 초기부터 여러 서비스 노드를 지원해야 하며 다양한 애플리케이션 시나리오에 대해 서로 다른 데이터베이스를 사용해야 합니다. 또한 3계층 아키텍처는 성능을 희생하면서 코드를 늘리기 위해 리플렉션을 광범위하게 사용하므로 더 이상 민첩한 개발에 적합하지 않습니다.
4. Server 2003의 IT 아키텍처는 IIS7에 비해 뒤처지는 IIS6.0의 HTTP 요청 처리 모델이든, Server 2008 및 2012에 뒤처지는 Server 2003의 안정성과 확장성이든 버려야 합니다. , Server 2003 및 IIS6 기반의 .NET 배포를 다시 고려해서는 안됩니다.
버려진 것도 있지만 결국 Microsoft는 Microsoft입니다.
3. 일부 .NET 기능을 강화해야 합니다
1. Visual Studio를 심층적으로 활용합니다. 2015 개발 도구 말할 필요도 없이 VS2015는 프론트 엔드 코딩(CSS, JS, HTML)에 더욱 능숙하며 엔지니어에게 적합한 타사 플러그인입니다. 더욱 강력해질 것입니다
2. TFS Express 버전을 내부적으로 설치하든, tfs.visualstudio.com에서 여유 공간을 신청하든, TFS 소스 코드 관리를 사용하면 실무에서 팀 협업을 촉진할 수 있습니다. Git 모드에 현혹되지 마세요. 사실 TFS 관리 모델은 .NET 개발에 가장 적합합니다.
3. .NET 고급 언어 기능을 더욱 집중적으로 사용해야 합니다. Linq, Lamda 표현식, Reflection, Task 등을 능숙하게 사용할 수 있다면 병렬 프로그래밍 등 .NET 특유의 고품질 언어 기능과 방법을 활용하면 개발 효율이 크게 향상되고 개발 시간이 단축됩니다.
4. IIS의 고급 기능과 동적 관리가 강화되어야 합니다. IIS7 이후 IIS 서버는 Server 2008 및 2012의 Core 모드가 추가되어 동적 관리가 가능한 고성능 웹 미들웨어의 대명사입니다. 그리고 IIS의 동적 관리가 강화되어야 웹 처리 효율성이 크게 향상될 수 있습니다.
5. Server 2012 R2 운영 체제의 활용을 강화해야 합니다. 크로스 플랫폼이 .NET의 방향이고 모노에서도 잘 실행되고 있지만 PC 서버와 클라우드 서버가 점점 저렴해지는 요즘입니다. 저렴하고 여전히 최신 서버 운영 체제인 Windows를 사용합니다.
위의 이해를 바탕으로 요약하면 현재 .NET 개발 모델은 다음과 같이 간단히 요약할 수 있습니다.
1. 고도로 분리된 프런트엔드와 백엔드
우선 ASP.NET WebForm 및 MVC 모델을 완전히 버리고 프런트 엔드와 백 엔드가 고도로 분리되어 있습니다. 프런트 엔드의 모든 논리 처리는 Dom 요소 레이아웃과 그리기 및 데이터 요청을 포함하여 JS를 사용하여 처리됩니다. , 백엔드는 논리 처리 및 데이터 처리를 포함한 순수 비즈니스 논리 처리입니다. 현재 우리 프로젝트는 ASP.NET의 라우팅 기능을 사용하고 있으며 여전히 ASP.NET 모델과 IIS를 호스팅하고 있습니다. 이론적으로는 가까운 미래에 순수 HTML5 및 HTML5 캐시를 호스팅하기 위해 Linux에서 Core IIS 또는 Nginx로 대체될 예정입니다. .그것도 매우 쉬울 것입니다.
2. 프런트엔드는 순수 HTML5를 사용합니다.
프런트엔드는 전통적인 HTML을 버리고 HTML5 기술을 최대한 사용합니다. 그 희생 중에는 IE11 이하의 브라우저를 버리는 것도 있지만 오늘날에는 인터넷 사고, 이 아이디어는 나쁜 생각이 아닙니다 HTML5 기술이 프런트 엔드에 완전히 사용되면 파일, 그래픽, 이미지, 오디오 및 비디오, 지리적 위치 등의 다양한 처리가 매우 단순하고 평면화되며 데이터- 기반을 둔.
3. 성숙한 프레임워크를 최대한 활용하는 프런트 엔드
새로운 개발 모델을 사용한 후 분명한 변화는 회사의 아티스트가 프런트 엔드 커팅을 더 이상 또는 거의 수행하지 않는다는 것입니다. for Technical Artists (CSS 개발, JS 개발, 디자인을 아는) 사람들에 대한 수요가 날로 증가하고 있습니다. 이러한 변화의 근본 원인은 현재 JQuery를 사용하고 있는 고급스럽고 우수한 프런트 엔드 프레임워크의 출현입니다. Zepto, JQueryUI 및 JQueryMobile, Bootstrap, Amaze UI, inoic, Framework7, SUI, MUI 등 및 이러한 우수한 프레임워크와 함께 제공되는 타사 플러그인. 객관적으로 말하면 우수한 프레임워크의 사용을 통해 프런트엔드의 시스템 위험이 증가하지 않을 뿐만 아니라, 오픈소스, 명확한 아키텍처, 안정성 및 기타 프레임워크의 특성으로 인해 더욱 안정적이고 확장 가능한 프런트엔드가 됩니다. 달성됩니다. 간단한 예를 들자면, Bootstrap은 많은 웹 엔지니어를 괴롭히는 완벽하게 호환되는 레이아웃과 반응형 레이아웃 문제를 해결하는 데 중요한 역할을 했습니다.
4. 객체지향 프론트엔드 개발
프론트엔드 개발은 JS의 객체지향 기능과 Dom 요소의 연산, 비즈니스 로직 처리를 통해 간단히 캡슐화 데이터 요청은 백엔드 데이터 유형과 밀접하게 관련되어 있으며, 엔터티 구조 및 처리 논리가 일관되어 프런트엔드와 백엔드 개발자 간의 비즈니스 요구 사항에 대한 이해가 단축될 뿐만 아니라 기술 교육의 한계도 크게 낮아집니다. 팀워크의 효율성을 향상시킵니다.
5. CDN 서비스 이용하기
몇 년 전만 해도 CDN 서비스는 대기업과 기업의 전유물이었습니다. 이제는 완전히 대중화되고 민간화되었습니다. 웹 프런트 엔드가 점점 더 중요해지고 있다는 것은 부인할 수 없는 사실이지만 실제 비즈니스 논리는 그렇습니다. 종종 수십 K 또는 심지어 몇 KB에 불과하며 페이지는 수백 K이며, 90%는 JQuery와 같은 타사 프레임워크입니다. 따라서 CDN 가속을 합리적으로 사용하면 사용자 경험이 향상될 뿐만 아니라 직접적으로 증가합니다. HTTP 아키텍처 기반 웹 서비스의 로드 용량이 5~10배 이상 증가합니다.
6. HTTP 서비스 기반 비즈니스 로직
이 설명은 그다지 적절하지 않을 수도 있지만 Alibaba 플랫폼을 오픈한 후의 새로운 .NET 개발 모델에서 가장 중요한 링크이기도 합니다. 고급 인터넷 아키텍처를 연구하여 마침내 구조화되었지만 느슨한 비즈니스 논리 처리 모델을 형성했습니다. 즉, 각 비즈니스 논리 동작에는 고유한 라우팅 이름이 있으며, 비즈니스 논리는 라우팅 이름만 담당하고 라우팅 이름은 흐름을 담당합니다. 방향, 성능, 권한, 보안 등 상위 수준 요구 사항을 담당합니다. 이것의 장점은 3~5년 정도의 경험을 가진 개발자(대부분의 회사의 주요 개발 인력이기도 함)를 최대한 활용할 수 있어 비즈니스 로직 작성에만 집중할 수 있고, 비즈니스 로직 이외의 일은 필요하지 않다는 것입니다. 아키텍처에서 고려해야 할 레벨은 다른 컨트롤러에 의해 해결되며 대규모 .NET 프로젝트는 다양한 방식으로 하위 모듈로 유연하게 분할될 수도 있습니다. HTTP 서비스 구현을 위해 ASP.NET ASHX 프로세서, Windows Service HOST WCF 서비스 및 ASP.NET Web API를 시도했습니다. 현재 더 안정적인 버전은 Web API입니다. Wen API도 분명합니다. 앞으로도 계속 개선해 나갈 것입니다. 간단히 말해서, 이러한 변경 프로세스를 통해 개발 효율성과 테스트 효율성이 실제로 최소 3배 이상 향상되었습니다. 이에 대해서는 이후 장에서 자세히 설명하겠습니다.
7. 분산 및 핫 로딩 HTTP 서비스 구축
인터넷 애플리케이션에는 민첩한 개발과 반복적인 반복이 필요합니다. 동일한 논리적 아키텍처에서 서로 다른 요청은 서로 다른 서버와 데이터베이스를 사용하는 것이 일반적입니다. 따라서 프로젝트 설계 초기 단계에서는 분산형 HTTP 서비스 구축이 중요하며, 비즈니스 업데이트를 핫 로드할 수 있어야 합니다. 불행하게도 .NET 시스템에서는 DLL 관리 코드를 동적 로딩하고 사용합니다. , 회사의 기존 프로젝트에는 대규모 분산 시나리오가 없기 때문에 상대적으로 안정적인 DLL 동적 로딩 아키텍처가 아직 개발되지 않았습니다. 이에 대해서는 다음 장에서 자세히 설명합니다.
8. Alibaba Cloud를 사용하여 빅 데이터 문제 해결
Alibaba Cloud 및 기타 클라우드 서비스를 사용해 본 IT 설계자라면 Alibaba Cloud가 이미 다른 클라우드를 선도하고 있다는 것을 깊이 느낄 수 있을 것입니다. 하나 이상의 신체를 가지고 있습니다. 실제로 RDS, DRDS, KVStore 등과 같은 Alibaba Cloud의 데이터베이스 관련 기능은 실제로 기존 요구 사항의 복잡하고 어려운 많은 문제를 실제로 해결했습니다. 구체적인 세부 사항은 나중에 자세히 설명하겠지만 진심으로 말씀드립니다. 한마디, 서둘러 Alibaba Cloud를 사용해 보세요. 적어도 이 단계에서는 Alibaba Cloud가 당신을 납치하는 것이 아니라 도와주고 있습니다.
오늘은 글을 많이 썼습니다. .NET의 봄이 왔다는 점을 말씀드리고 싶습니다. .NET은 인터넷 기반의 애자일 개발뿐만 아니라 대규모 프로젝트, 대용량 데이터도 처리할 수 있습니다. 나는 이미 15년 넘게 파스칼 데이터 구조를 작성해 온 프로그래머로서 다양한 신기술에 관심을 갖고 직접 사용해 보기도 했습니다. 다른 사람들이 혼동할까봐 두려워하지 않습니다. 포괄적인 관점(언어, 개발 환경, 개발 효율성, 기술 커뮤니티, 팀 협업, 응용 프로그램 기능)에서 다른 언어는 .NET에 훨씬 뒤처져 있다고 감히 말할 수 있습니다. 응용 프로그램 수준 개발 분야는 많지만 .NET 프로그래머 자신은 아직 이를 인식하지 못했기 때문에 이러한 관점에서는 모두가 함께 일하고 계속해서 연구하고 탐색해야 합니다.