2011-09-07 6 views
2

다른 채널의 다양한 메시지 (예 : 특정 제품/회사 이름이 표시되는 트위터 메시지, Facebook 페이지의 메시지 등)를 사용자가 모니터링 할 수있게 해주는 ASP.NET 응용 프로그램을 만들고 싶습니다.). 이러한 메시지는 서비스에 의해 수확되고 처리됩니다.ASP.NET 응용 프로그램 아키텍처

권장되는 방법은 무엇입니까? 내 생각은 필요한 정보를 수집하고 처리하는 서비스를 작성하여 데이터베이스에 저장하는 것입니다 (asp.net 애플리케이션이 사용하는 것과 동일). 사용자가 웹 애플리케이션을 검사 할 때이 방법을 사용하면 공유 데이터베이스에서 읽은 새 메시지를 볼 수 있습니다.

이것이 올바른 방법인지 확실하지 않습니다. 구성 요소가 동일한 데이터베이스에서 작동해야합니까? asp.net 응용 프로그램이 필요한 데이터를 어떻게 읽어야합니까?

+0

동일한 db를 사용하는 서비스 및 사이트에 아무 문제가 없습니다. 많은 응용 프로그램이 이런 식으로 작동합니다. – Erix

답변

2

왜 그들은 같은 데이터베이스를 사용하지 않아야합니까? 결국 이들은 동일한 데이터를 쓰고/읽으며 데이터베이스는 여러 응용 프로그램의 중앙 저장소로 설계되었습니다. 귀하는 귀하의 데이터에 대해 하나 이상의 기록 시스템을 보유하기를 원하지 않을 것입니다. 두 가지 기록 시스템은 근본적으로 기록 시스템을 의미하지 않습니다.

당신이 제안이 솔루션은 나에게 좋은 소리

는 :

서비스는 (Windows 서비스, 예약 된 콘솔 응용 프로그램 등) 외부 리소스에서 데이터를 긁어 정기적으로 실행
  1. 는 것을 변환 도메인 모델에 데이터 ,이를 로컬 데이터베이스에 보관합니다.
  2. 웹 사이트는 해당 데이터베이스에서 데이터를 읽고 사용자를 위해 보고서를 보냅니다.

Facebook 및 Twitter와 같은 서비스는 웹 페이지에 직접 포함되도록 디자인 된 API 및 다양한 '위젯'을 제공합니다. 아이디어는 웹 사이트의 사용자가 Twitter/Facebook/등의 데이터를 볼 수 있다는 것입니다. 서버 측 코드가 아무 것도하지 않거나 그것에 대해 아무것도 모르는 경우가 있습니다. 이것이 당신의 필요를 충족시키지 못합니까? 또는 데이터를 로컬에서 스크래핑/변환/저장해야합니까?

+0

저는 사용자가 트윗을 관리하고 전용 공간에서 무엇이든 의견을 말할 수있는 응용 프로그램을 만들고 싶습니다. 응용 프로그램에서 수집해야하는 트윗은 사전을 기반으로하며 (어떤 단어에 포함되어야하는지 등) API를 통해 보여주는 것만으로는 충분하지 않습니다. 처음 아이디어를 확인해 주셔서 감사합니다. ;) – norbip

+1

@eric : 괜찮습니다. PirateKitten의 답변에는 코드를 구조화하고 휠 재발 명을 최소화하는 방법에 대한 조언도 있습니다. 두 가지 응용 프로그램 (서비스 및 웹 응용 프로그램)을 모두 공유 도메인 논리 (자체 어셈블리) 위에 놓고 데이터 액세스를위한 인터페이스가있는 씬 인터페이스로 만드는 것이 좋습니다 (표준 저장소는 괜찮습니다). 그런 다음 다른 어셈블리가 이러한 인터페이스를 구현하므로 핵심 논리에 영향을주지 않고 구현을 스왑 아웃 할 수 있습니다. – David

1

동일한 대상 데이터베이스에 읽고 쓰는 별도의 응용 프로그램에 대해서는 절대 문제가 없습니다. 당신이 제안한 것은 완벽합니다.

코드를 복제하지 않으려면 DB에 대한 읽기/쓰기를위한 단일 데이터 액세스 라이브러리를 작성해야합니다. 두 앱 모두 사용하게됩니다. 데이터베이스 구현에 묶이지 않으려면 앱 전반의 코드가 데이터 액세스 인터페이스에 의존해야하므로 퍼시스턴스 방법에 대해 알지 못합니다.

0

이것은 내가 생각한 것과 내 아이디어와 많은 생각을 바탕으로 생각해 낸 것입니다. 다음은 이미지를 개요로 나타낸 것입니다. 그 아래에 설명이 시작됩니다.

arc

오렌지 백그라운드로 구성 요소는 서비스를 의미한다. ASP.NET MVC 앱은 웹 서비스 호출을 통해 스트리밍 서비스 (각 사용자 계정에 대한 스트림이 트위터로 열림)와 통신합니다. WCF 서비스는 이러한 스트림을 관리하는 단일 인스턴스 서비스입니다.

정기적으로 수신 전자 메일을 검사하거나 큐에서 전자 메일을 보내는 등의 작업을 예약하는 데 Quartz.NET을 사용합니다. Quartz.NET은 웹 응용 프로그램에서 .NET Remoting을 통해 액세스합니다.

새 트윗이나 이메일을 몇 가지 규칙에 따라 분류해야하기 때문에 BL 레이어의 하위 집합이 필요합니다.이 계층과 도메인 계층은 별도의 어셈블리에 있으며 서비스와 웹 응용 프로그램이 공유합니다.

관련 문제