언제부터 창업이 아주 저렴해졌는지 모르겠어요. 우리가 얘기하는 모든 것이 인터넷이고 수천만 달러를 모으는 것도 쉽습니다. 이런 돌풍은 프로그래머들에게도 타격을 준 것 같습니다. 데이터 구조를 잘 연구하지 않고, 데이터베이스 원리를 제대로 이해하지 못한 개발자도 많습니다. 그들은 github에 여러 프로젝트를 게시하고, nodejs를 사용하여 일부 서비스를 만들고, 그런 다음 H5를 사용하여 APP를 작성하면 인터넷 프로젝트에 전략을 세울 수 있다고 생각합니다. 새로운 기술과 새로운 개념을 배우는 것이 급속한 성장을 의미합니까? 인터넷 웹사이트 및 앱 겉으로 보기에 아름다워 보이는 많은 앱은 간단한 http 인터페이스 보안조차 처리할 방법이 없습니다. 많은 아름다운 반응형 웹사이트에는 디렉토리 구조가 무작위로 쌓여 있습니다. 이것은 프로그래머가 여전히 주의를 기울여야 한다고 생각합니다. 실용적이려면 더 많은 이론을 배우고, 더 많은 코드를 작성하고, 반복적으로 연습하세요.
그렇다면 또 다른 의문이 생깁니다. 새로운 기술과 새로운 아이디어는 수많은 기술 전문가들의 장기적인 실천에 의해 계속해서 반복되는 것입니다. 저는 .NET 베테랑으로서 Microsoft가 오픈 소스를 수용하고 수년에 걸쳐 커뮤니티가 가져온 변화와 발전을 수용하는 것을 보고 매우 기뻤습니다. 그래서 오늘은 저와 저의 경험에 대해 여러분과 공유하고 싶습니다. 이 회사는 웹 개발은 물론 인터넷 응용 프로그램 개발에도 .NET을 사용한 몇 가지 경험과 기술을 요약합니다.
HTML5, Bootstrap, EF6 For MySql, Alibaba 등을 사용하는 최신의 대표적인 사례인 http://www.php.cn/을 살펴보겠습니다. 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. 더 이상 WebService를 사용하지 않지만 데이터 통신 방법으로 HTTP를 많이 사용합니다 2. 데이터 매체는 더 이상 XML을 사용하지 않고 대신 JSON을 사용합니다
3. 웹 프론트 -end Bootstrap, JQueryUI, EasyUI 등과 같은 타사 HTML5 프레임워크를 사용합니다.
4. 앱 요구 사항이 있거나 심지어 APP 우선 요구 사항이 있는 경우 앱은 다양한 타사에 연결해야 합니다. 플러그인
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 배포를 다시 고려해서는 안됩니다.
버려진 것도 있지만 결국 마이크로소프트는 마이크로소프트다:
3. 일부 .NET 기능은 강화해야 한다
1. 인- Visual Studio 2015 개발 도구인 VS2015는 말할 필요도 없이 프런트 엔드 코딩(CSS, JS, HTML)에 적합한 사용자 정의 설정과 타사 플러그인을 갖추고 있습니다. 엔지니어들에게는 더욱 강력해질 것입니다
2. TFS Express 버전을 내부적으로 설치하든, tfs.visualstudio.com에서 여유 공간을 신청하든 TFS 소스 코드 관리를 사용하면 팀 협업이 용이해질 수 있습니다. 실제로는 Git 모드가 머리 속으로 들어가지 않습니다. 사실 TFS 관리 모드는 .NET 개발에 가장 적합합니다.
3. .NET 고급 언어 기능을 더욱 집중적으로 사용해야 합니다. Linq와 Lamda를 능숙하게 사용할 수 있다면 이해의 기초가 됩니다. 표현식, 리플렉션, 작업 병렬 프로그래밍 등 .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. 성숙한 프레임워크를 최대한 활용하는 프론트엔드
새로운 개발 모델을 사용한 후 분명한 변화는 회사의 아티스트가 더 이상 또는 거의 공연을 하지 않는다는 것입니다. 프론트엔드 컷팅 작업이 늘어나고 있으며, 테크니컬 아티스트(CSS, JS를 개발할 수 있고 디자인을 이해할 수 있는)에 대한 수요가 날로 증가하고 있습니다. 이러한 변화의 근본 원인은 고급스럽고 뛰어난 프론트엔드 프레임워크의 등장입니다. 현재 JQuery, Zepto, JQueryUI, JQueryMobile, Bootstrap, Amaze UI, inoic, Framework7, SUI, MUI 등은 물론 이러한 우수한 프레임워크와 함께 제공되는 타사 플러그인을 사용하고 있습니다. 객관적으로 말하면 우수한 프레임워크의 사용을 통해 프런트엔드의 시스템 위험이 증가하지 않을 뿐만 아니라, 오픈소스, 명확한 아키텍처, 안정성 및 기타 프레임워크의 특성으로 인해 더욱 안정적이고 확장 가능한 프런트엔드가 됩니다. 달성됩니다. 간단한 예를 들자면, Bootstrap은 많은 웹 엔지니어를 괴롭히는 완벽하게 호환되는 레이아웃과 반응형 레이아웃 문제를 해결하는 데 중요한 역할을 했습니다.
4. 객체지향 프론트엔드 개발
프론트엔드 개발은 JS 객체지향 기능을 통해 간단히 캡슐화됩니다. Dom 요소의 작동과 비즈니스 로직 데이터 요청 처리는 백엔드 데이터 유형, 엔터티 구조 및 처리 로직과 일치합니다. 프런트엔드와 백엔드가 더 가까워집니다. 개발자 간의 비즈니스 요구 사항에 대한 이해는 기술 교육의 문턱을 크게 낮추고 팀워크의 효율성을 향상시킵니다.
5. CDN 서비스 이용하기
몇 년 전만 해도 CDN 서비스는 대기업이나 기업에만 국한됐지만 이제는 완전히 대중화되고, 민간화되었으며, 웹이 되었습니다. 데이터가 점점 더 많아지고 있다는 것은 부인할 수 없는 사실이지만, 실제 비즈니스 로직은 수십 K, 심지어는 몇 K에 불과한 경우가 많습니다. 수백 K의 페이지가 90%를 차지합니다. JQuery와 같은 타사 프레임워크인 CDN 가속을 합리적으로 사용하면 사용자 성능이 향상될 뿐만 아니라 HTTP 아키텍처 기반 웹 서비스의 로드 용량이 5~10배 이상 직접적으로 향상됩니다.
6. HTTP 서비스 기반 비즈니스 로직
이 문장은 그다지 적절한 설명은 아니지만, 새로운 .NET 개발에 있어 가장 중요한 링크이기도 합니다. 모델, Alibaba Open Platform과 같은 고급 인터넷 아키텍처를 연구한 후 마침내 구조화되었지만 느슨한 비즈니스 로직 처리 모델을 형성했습니다. 즉, 각 비즈니스 로직 동작에는 고유한 라우팅 이름이 있고 비즈니스 로직은 라우팅 이름만 담당합니다. 라우팅 이름은 흐름 방향, 성능, 권한 및 보안과 같은 상위 계층 요구 사항을 담당합니다. 이것의 장점은 3~5년 정도의 경험을 가진 개발자(대부분의 회사의 주요 개발 인력이기도 함)를 최대한 활용할 수 있어 비즈니스 로직 작성에만 집중할 수 있고, 비즈니스 로직 이외의 일은 필요하지 않다는 것입니다. 아키텍처에서 고려해야 할 레벨은 다른 컨트롤러에 의해 해결되며 대규모 .NET 프로젝트는 다양한 방식으로 하위 모듈로 유연하게 분할될 수도 있습니다. HTTP 서비스 구현을 위해 ASP.NET ASHX 프로세서, Windows Service HOST WCF 서비스 및 ASP.NET Web API를 시도했습니다. 현재 더 안정적인 버전은 Web API입니다. Wen API도 분명합니다. 앞으로도 계속 개선해 나갈 것입니다. 간단히 말해서, 이러한 변경 프로세스를 통해 개발 효율성과 테스트 효율성이 실제로 최소 3배 이상 향상되었습니다. 이에 대해서는 이후 장에서 자세히 설명하겠습니다.
7. 분산 및 핫 로딩 HTTP 서비스 구축
인터넷 애플리케이션은 민첩한 개발과 반복적인 반복이 필요하므로 동일한 논리적 아키텍처에서 서로 다른 서버와 데이터베이스를 사용합니다. 따라서 프로젝트 설계 초기 단계에서는 분산형 HTTP 서비스 구축이 중요하며, 비즈니스 업데이트에는 핫 로딩이 필요합니다. 불행히도 회사에서는 DLL 관리 코드를 동적 로딩합니다. 기존 프로젝트에는 대규모 분산 시나리오가 없으므로 보다 안정적인 DLL 동적 로딩 아키텍처가 아직 개발되지 않았습니다. 이에 대해서는 다음 장에서 자세히 설명합니다.
8. Alibaba Cloud를 사용하여 빅데이터 문제 해결
Alibaba Cloud 및 기타 클라우드 서비스를 사용해 본 IT 설계자라면 누구나 이를 깊이 느낄 수 있을 것이라고 생각합니다. Alibaba Cloud는 이미 다른 클라우드보다 한 단계 이상 앞서 있습니다. 실제로 RDS, DRDS, KVStore 등과 같은 Alibaba Cloud의 데이터베이스 관련 기능은 실제로 기존 요구 사항의 복잡하고 어려운 많은 문제를 실제로 해결했습니다. 구체적인 세부 사항은 나중에 자세히 설명하겠지만 진심으로 말씀드립니다. 한마디, 서둘러 Alibaba Cloud를 사용해 보세요. 적어도 이 단계에서는 Alibaba Cloud가 당신을 납치하는 것이 아니라 도와주고 있습니다.
오늘은 글을 많이 썼습니다. .NET의 봄이 왔다는 점을 말씀드리고 싶습니다. .NET은 인터넷 기반의 애자일 개발뿐만 아니라 대규모 프로젝트, 대용량 데이터도 처리할 수 있습니다. 나는 이미 15년 넘게 파스칼 데이터 구조를 작성해 온 프로그래머로서 다양한 신기술에 관심을 갖고 직접 사용해 보기도 했습니다. 다른 사람들이 혼동할까봐 두려워하지 않습니다. 포괄적인 관점(언어, 개발 환경, 개발 효율성, 기술 커뮤니티, 팀 협업, 응용 프로그램 기능)에서 다른 언어는 .NET에 훨씬 뒤처져 있다고 감히 말할 수 있습니다. 응용 프로그램 수준 개발 분야는 많지만 .NET 프로그래머 자신은 아직 이를 인식하지 못했기 때문에 이러한 관점에서는 모두가 함께 일하고 계속해서 연구하고 탐색해야 합니다.
위 내용은 효율적인 인터넷 애자일 개발을 위해 .NET을 활용하려는 생각과 탐색입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!