판매할 웹 기반 애플리케이션을 개발할 때 고려해야 할 일반적인 사항은 무엇입니까? [닫기]

StackOverflow https://stackoverflow.com/questions/189644

문제

내부 고객을 위한 애플리케이션을 개발 중입니다.요구 사항 중 하나는 잠재적으로 다른 조직에 판매될 수 있는 방식으로 개발되어야 한다는 것입니다.이 애플리케이션은 기부금, 기부자, 참가자 및 이벤트를 관리하는 모금 조직을 위한 추적 애플리케이션입니다.인증(권한 부여는 내부적으로 처리됨)을 위한 플러그인 아키텍처를 개발하고 외부 디렉터리에서 인구통계 데이터를 파생해야 한다는 것을 이미 알고 있습니다.

응용 프로그램은 ASP.NET/C#/Linq/SQL Server를 기반으로 구축됩니다.현 시점에서는 대체 데이터베이스 지원에 대해 마음이 열려 있지 않지만, 필요할 경우 앞으로 다른 Linq 드라이버를 통해 이 작업을 수행할 수 있을 것이라고 생각합니다.

지금까지 제가 구축한 모든 웹 애플리케이션은 사용자 정의 구현이므로 플러그인 및/또는 구성 항목을 통해 해결해야 할 다른 사항이 있는지 알고 싶습니다.어떤 의견이라도 도움이 될 것입니다.

감사해요.

도움이 되었습니까?

해결책

나는 "모든 것을 다 하는" 프레임워크를 만들려는 시도에 대해 주의를 주고 싶습니다.이는 많은 개발자가 처음 몇 가지 대중 시장 소프트웨어 앱을 구축하려고 할 때 저지르는 일반적인 실수입니다.

이미 고객이 있고 해당 고객이 애플리케이션의 초기 버전에 자금을 조달하고 있을 가능성이 높습니다.이 고객이 필요로 하는 것을 가능한 한 빨리 제공해야 합니다. 그렇지 않으면 대중 시장에 대해 생각하기도 전에 실패합니다.

자신에게 부탁하고 이 고객이 애플리케이션을 사용하거나 구매할 유일한 고객이라고 기대하십시오.과거에 다른 맞춤형 앱을 디자인했던 것과 거의 동일하게 애플리케이션을 디자인하세요.

나중에 다른 고객에게 확장하기 위해 해야 할 일은 기본 asp.net 기능을 최대한 유지하고 최대한 단순하고 간결하게 유지하며 "고급" 기능을 최대한 많이 잘라내는 것입니다. 버전 1.x를 사용하면 됩니다.

1.x는 여러분의 시험장이 될 것입니다.초기 고객이 필요로 하는 작업을 수행하고 이를 매우 효과적으로 수행하는 애플리케이션을 제공해야 합니다.

성공하고 1.x가 실제로 초기 고객의 요구 사항 대부분을 충족한다면 고객의 요구 사항 대부분을 충족하는 응용 프로그램도 있다는 것을 알게 될 것입니다.축하합니다. 이미 실행 가능한 상용 시장 애플리케이션을 개발하는 데 거의 대부분 도달했습니다!

주의해야 할 사항:

  1. 정말로 여러 데이터베이스 플랫폼을 지원해야 합니까?물론, SQL Server보다 MySql을 "선호"하는 "일부" 고객이 있을 수도 있습니다.Oracle, MySQL, VistaDB, SQL Server 등을 지원할 수 있는 마법의 DAL을 작성해보고 싶은 유혹을 느낄 것입니다.일부 구성 옵션을 변경하거나 설치 프로그램에서 올바른 선택을 하면 됩니다.그러나 사실 이러한 종류의 "플랫폼" 중립성은 디자인에 엄청난 복잡성을 추가하고 활용하는 기능에 심각한 제한을 가합니다.공급자 디자인 패턴과 같은 것들은 이러한 종류의 디자인이 그렇게 어렵지 않다고 생각하도록 속일 수 있습니다.하지만 당신은 틀렸을 것입니다.잠재 시장의 90%가 수용할 수 있도록 실용적으로 애플리케이션을 설계하십시오.특히 데이터 액세스의 경우 일반적으로 ASP.NET 응용 프로그램을 설치하고 실행할 의향이 있는 시장의 90% 이상이 SQLExpress 또는 SQL Server를 사용할 능력이 있고 사용할 의향이 있다고 해도 과언이 아닙니다.대부분의 경우 여러 데이터베이스를 지원하여 추가 판매를 하는 것보다 SQL 서버용으로만 설계하면 훨씬 더 많은 비용과 시간을 절약할 수 있습니다.

  2. 온라인 관리 도구를 통해 "모든 것"을 구성할 수 없도록 하십시오.예를 들어, 관리 도구로 구성할 수 있는 애플리케이션의 모든 텍스트를 갖고 싶은 유혹을 받게 될 것입니다.훌륭하지만 비싸기도 합니다.개발하는 데 시간이 더 오래 걸리고, 그렇지 않으면 필요하지 않았을 관리 도구의 전체 혼란을 포함하도록 애플리케이션의 범위를 늘려야 하며, 이로 인해 애플리케이션이 더 복잡해지고 90%의 고객이 사용하기 어려워집니다. 기본 텍스트는 신경 쓰지 마세요.

  3. 현지화를 신중하게 고려하세요.당신이 큰 국제 시장을 가질 것이라고 생각하지 않는다면, 하나의 언어를 고수하십시오.현지화는 그다지 어렵지 않지만 코드의 모든 측면을 약간 복잡하게 만듭니다.이는 규모에 관계없이 모든 애플리케이션에서 많은 것을 추가합니다.나의 경험 법칙은 초기 시장의 언어만을 목표로 삼는 것입니다.앱이 다른 시장에 관심을 갖고 있다면 버전 1.0에서 약간의 현금을 회수하고 우선 애플리케이션이 실행 가능한 시장이 있음을 증명한 후 버전 2.x로 돌아가서 현지화를 수행합니다.하지만 둘 이상의 언어나 문화권을 사용하게 될 경우 처음부터 현지화를 지원하세요.

  4. 버전 1.0의 경우 드롭인 모듈이나 고급 서비스 API에 대해 너무 걱정하지 마세요.재사용 가능한 프레임워크에 대해 이미 많은 경험이 있다면 버전 1.0에서 이 기능을 사용할 수 있지만 이러한 종류의 아키텍처에 대한 경험이 부족하면 버전 1.x의 이러한 기능에 너무 많은 시간을 낭비하게 될 것입니다. 여전히 잘못될 가능성이 높으며 어쨌든 버전 2.x에서 다시 설계해야 합니다.

  5. 애플리케이션의 보고 기능이 정말 좋은지 확인하세요.당신이 말하는 종류의 애플리케이션에 대해 이것이 애플리케이션에 시장이 있는지 여부를 결정하는 것입니다.화면에서 정렬/필터링이 가능할 뿐만 아니라 인쇄도 가능한 예쁜 보고서가 필요합니다.당신의 돈과 시간을 이 일에 투자하세요.

다른 팁

가장 중요한 것은 완전히 일반적인 방식으로 디자인하는 것입니다.

메타 데이터를 통해 클라이언트에 특정한 모든 것이 구성 가능해야합니다. 이 작업을 수행하는 방법은 전적으로 귀하에게 달려 있지만 주요 방법은 XML, 데이터베이스 또는 속성 파일입니다.

이 방법으로 디자인하면 각각 고유 한 구성 파일 또는 데이터를 보유 할 수있는 여러 고객에게 판매 될 수 있습니다.

Abarax는 큰 대답을했는데, 나는 당신이 현지화를 고려해야한다는 것을 강조합니다. 모든 것이 항상 무언가라고 불렀던 것과 일치하지 않으면 울고 울고 울부 짖을 것입니다.

오픈 소스 기술을 사용하는 경우 모든 라이센스 정보를 한 곳에 유지하는 데 약간의 시간을 소비하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top