2017-01-03 2 views
1

У меня есть долгосрочный веб-проект (3-4 года), основанный на ASP.NET MVC 5. У меня также есть большая клиентская кодовая база, написанная на языке TypeScript. Из-за более ранних соглашений источники TypeScript являются частью проекта MVC 5 csproj, поэтому он компилируется вместе с фоновым контентом.Как поместить источники TypeScript в отдельный проект VS?

Эта структура очень неудачна из-за многих причин. Несколько основных из них: нарушение SRP, сильно связанное с бэкэнд, без возможности отдельно поддерживать и строить бэкэнд, без возможности отдельно поддерживать и строить интерфейс и т. Д.

Я хотел бы разделить клиент- однако, я понятия не имею, каким будет лучший способ, поскольку Visual Studio не предоставляет способ иметь чистые проекты типа TypeScript (по крайней мере, насколько я знаю).

Я использую Visual Studio 2015 с TypeScript 2.0. Какие у меня варианты?

ответ

1

Во-первых, если ваш клиентский код (приложение машинопись) не нуждается в своей собственной Web.config файл — то есть, вам не нужно настроить авторизацию IIS, перенаправляет и т.д. — вы можете просто использовать «Приложение HTML с типом» тип проекта в Visual Studio.

Однако, если ваш код клиента и сервера нуждается в их собственных Web.config, и они будут развернуты на одном и том же веб-сайте IIS, с двумя сложными проектами ASP.NET, поскольку необходимо объединить два файла Web.config & hellip; что невозможно, AFAIK.

У меня была аналогичная проблема, но в моем случае у меня было приложение на основе AngularJS, запрограммированное в TypeScript, и бэкэнд ASP.NET Web API.

Лучшее, что я мог додумать до сих пор, что не требует каких-либо дополнительных шагов сборки, заключалось в том, чтобы не переместить код TypeScript в отдельный проект, а в вместо этого введите код API Web/MVC. Клиентский тип TypeScript попадает в веб-проект ASP.NET, веб-API входит в библиотеку классов.

Две оставшиеся точки боли - это общий Web.config и загрузочный веб-API через Global.asax, который попадает в «неправильный» проект. Что касается Web.config, может быть возможно дополнительно извлечь конфигурацию веб-API в отдельный файл .config с помощью механизма configSource. Я не вижу способа загрузить загрузку Web API в Global.asax из проекта ASP.NET (иначе клиентского).

+1

Спасибо, что поделились своими мыслями. Я думал об этом, но это звучит немного грязно для меня. Я только что нашел проект типа «приложение HTML с TypeScript», сейчас я экспериментирую с ним. –

+0

Звучит неплохо. Если вы найдете способ слияния «Web.config» с проектом типа «скрипт» с вашим ASP.NET MVC 5 'Web.config', я был бы признателен, если вы разместили свое решение в качестве ответа здесь! – stakx

+0

Кажется, что работает проект типа «Приложение HTML с типом». На первый взгляд это кажется небольшим пустым веб-проектом с предварительно сконфигурированной поддержкой TypeScript. Я только что скопировал все источники и типизацию и, похоже, работает нормально. Наверное, этого не было, когда приходилось принимать решение. –

0

IMO, код на стороне клиента, такой как ваш javascript или css, должен быть вместе с вашим «backend» кодом, код бэкэнд не означает быть вашим полным кодом на бэкэнд, это должно быть тонкое приложение уровня контроллера, которое обрабатывает только http запрос и на стороне сервера визуализации

можно отделить монолитное приложение на несколько service layer и один frontend layer, которые только обрабатывать HttpRequest и рендеринга

Проблема отделить только яваскрипт и CSS в одном проекте

  1. это делает комплекс развертывания, когда у вас есть несовместимость между вашим кодом клиента и кодом сервера, вы не знаете, что должно быть развертывания первой

  2. вы не можете сделать Js хэша (вам не нужно иметь дело с кешем клиента), когда вы отделяете свой код клиента от бэкенда

+0

Благодарим вас за ответ. У меня уже есть тонкий слой контроллера с базовыми уровнями бизнес-сервисов, но все же мне нужно это разделение по другим причинам. –

Смежные вопросы