Почему является ASP.NET MVC, ограниченный ASP?

Я нашел решение, может быть, оно будет полезно для других.

from mpl_toolkits.mplot3d import Axes3D

from matplotlib import cm

import matplotlib.pyplot as plt

import numpy as np
import colorsys


from matplotlib.tri import Triangulation

from mpl_toolkits.mplot3d.art3d import Poly3DCollection


n_angles = 80

n_radii = 20


# An array of radii

# Does not include radius r=0, this is to eliminate duplicate points

radii = np.linspace(0.0, 0.5, n_radii)


# An array of angles

angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)


# Repeat all angles for each radius

angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)


# Convert polar (radii, angles) coords to cartesian (x, y) coords

# (0, 0) is added here. There are no duplicate points in the (x, y) plane


x = np.append(0, (radii*np.cos(angles)).flatten())

y = np.append(0, (radii*np.sin(angles)).flatten())


# Pringle surface

z = 1+-np.sqrt(x**2+y**2)*2


print(x.shape, y.shape, angles.shape, radii.shape, z.shape)

# NOTE: This assumes that there is a nice projection of the surface into the x/y-plane!
tri = Triangulation(x, y)

triangle_vertices = np.array([np.array([[x[T[0]], y[T[0]], z[T[0]]],

                                        [x[T[1]], y[T[1]], z[T[1]]],

                                        [x[T[2]], y[T[2]], z[T[2]]]]) for T in tri.triangles])


x2 = np.append(0, (radii*np.cos(angles)).flatten())

y2 = np.append(0, (radii*np.sin(angles)).flatten())


# Pringle surface
z2 = -1+np.sqrt(x**2+y**2)*2


# NOTE: This assumes that there is a nice projection of the surface into the x/y-plane!
tri2 = Triangulation(x2, y2)

triangle_vertices2 = np.array([np.array([[x2[T[0]], y2[T[0]], z2[T[0]]],

                                        [x2[T[1]], y2[T[1]], z2[T[1]]],

                                        [x2[T[2]], y2[T[2]], z2[T[2]]]]) for T in tri2.triangles])

triangle_vertices = np.concatenate([triangle_vertices, triangle_vertices2])

midpoints = np.average(triangle_vertices, axis=1)


def find_color_for_point(pt):

    c_x, c_y, c_z = pt

    angle = np.arctan2(c_x, c_y)*180/np.pi

    if (angle < 0):
        angle = angle + 360

    if c_z < 0:

        l = 0.5 - abs(c_z)/2
        #l=0
    if c_z == 0:
        l = 0.5
    if c_z > 0:
        l = (1 - (1-c_z)/2)

    if c_z > 0.97:

        l = (1 - (1-c_z)/2)

    col = colorsys.hls_to_rgb(angle/360, l, 1)

    return col


facecolors = [find_color_for_point(pt) for pt in midpoints]  # smooth gradient
# facecolors = [np.random.random(3) for pt in midpoints]  # random colors


coll = Poly3DCollection(
    triangle_vertices, facecolors=facecolors, edgecolors=None)


fig = plt.figure()

ax = fig.gca(projection='3d')

ax.add_collection(coll)

ax.set_xlim(-1, 1)

ax.set_ylim(-1, 1)

ax.set_zlim(-1, 1)

ax.elev = 50


plt.show()
7
задан Community 23 May 2017 в 12:04
поделиться

6 ответов

Я должен сказать, модель MVC специально практична в веб-приложениях, и поэтому представление (страница HTML) действительно разъединяется и далеко от контроллера и модели.

В настольных приложениях, дело не в этом, и Вы будете скоро упускать некоторые возможности повреждение шаблон для создания приложения более полезным.
Например, Вы не можете сделать привязки данных мощного и средства экономии времени в WPF, потому что это повреждает шаблон MVC.

Хороший шаблон, используемый в WPF, является M-V-VM

6
ответ дан 6 December 2019 в 12:55
поделиться

Образцовый Контроллер Представления является шаблоном, ASP.NET, который MVC - то, что шаблон относился к веб-платформе ASP.NET. Как его упомянутый, это связывает маршрутизацию URL в вещи сделать навигацию более простой и больше интеграла к тому, как действия называют.

Тем не менее ничто технически не препятствует тому, чтобы Вы использовали компоненты в библиотеках ASP.NET MVC. Уровни доступа к данным через LINQ или Объекты доступны вне ASP.NET MVC. Аналогично, сам шаблон имеет бесчисленные примеры своей реализации для приложений Winforms. К тем же методам можно было относиться WPF.

3
ответ дан 6 December 2019 в 12:55
поделиться

Я не сказал бы, что Вы неправильно понимаете разделение проблем вообще, на самом деле Ваш вопрос указывает на понимание этого хорошо.

Имя "ASP.NET, MVC" показывает, что Microsoft приняла сознательное решение создать более специализированную реализацию MVC для w3eb, основывало приложения. Это позволяет им оптимизировать дизайн для создания этого более продуктивным для разработчиков, создающих веб-приложения и сервисы.

Если бы они создали более общую ".NET MVC", платформа я ожидал бы, что это потребовало бы намного более трудного компромисса между потребностями веб-приложений по сравнению с настольными приложениями.

Лично, я думаю, что подход Microsoft может сделать это более сбивающим с толку менее опытных разработчиков, которые часто предполагают, что реализация шаблона, шаблон.

2
ответ дан 6 December 2019 в 12:55
поделиться

ASP.NET MVC является платформой для того, чтобы сделать MVC с ASP.NET; это включает вещи как URL, направляющий и т.д. Можно очень хорошо сделать MVC (Образцовый Контроллер Представления) программирование стиля с WPF и WinForms.

1
ответ дан 6 December 2019 в 12:55
поделиться

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

Другой аспект этого вопроса - то, почему VS имеет так мало в способе абстрактных средств проектирования, которые могут использоваться и для рабочего стола.NET и для разработки asp.NET?

1
ответ дан 6 December 2019 в 12:55
поделиться

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

Мы используем ASP.NET MVC. У нас есть отдельный проект, в котором находятся бизнес-объекты и уровень доступа к данным. Наши "модели" в веб-проекте - это, как правило, легкие обертки для наших бизнес-объектов.

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

После создания нашего MVC-приложения мы захотели использовать некоторые из наших данных в WPF-приложении (для экрана отображения состояния). Мы просто создали новый проект, сослались на наш уровень доступа к данным и модель данных и ушли. Очень просто, и много повторного использования кода.

3
ответ дан 6 December 2019 в 12:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: